將 LDAP 中的 SSH 使用者限制為 SSH 堡壘上只能執行一個指令

將 LDAP 中的 SSH 使用者限制為 SSH 堡壘上只能執行一個指令

我有一個 Centos 7 伺服器的專用網路。每台伺服器只能透過 SSH 堡壘存取。此外,所有這些伺服器都使用 SSSD 根據 LDAP 目錄對 SSH 使用者的金鑰進行驗證。

由於金鑰是根據 LDAP 目錄進行身份驗證的,因此不存在標準authorized_keys檔案。該二進位文件不是標準authorized_keys文件,而是/usr/bin/sss_ssh_authorizedkeys透過管道將針對 LDAP 的查詢sshd格式化為authorized_keys文件,但實際上並不是文件。因此,commands=" ... "據我所知,透過將 RSA 金鑰綁定到條目來限制使用者使用特定命令是不可能的。

SSH 使用者可以使用以下命令透過堡壘對其工作站進行身份驗證:

ssh -A -l [email protected] joes.workstation.ip -o ProxyCommand="ssh -l [email protected] -q bastion.ip nc joes.workstation.ip %p"

不幸的是,他們還能夠透過 SSH 連接到堡壘伺服器上的會話,這是我不希望他們能夠做到的。

無論如何,我可以使用我目前的工具(SSSD、SSHD、LDAP 目錄)來允許 SSH 使用者通過堡壘,但不能進入堡壘?

答案1

sssd當我遇到這個問題時,允許您按群組設定配置的版本仍在開發中。

我最終ForceCommand在指令和指令sshd_config下添加了一個條目:MatchAcceptEnv

Match Group [email protected]
  AcceptEnv SomeVariable
  AcceptEnv SomeOtherVariable
  ForceCommand /path/to/some/script/I/wrote

然後,在 shell 腳本中,我使用 ssh 用戶端傳遞的變數來執行某些操作。

例如,如果客戶端這樣呼叫:

$ SomeVariable=foo ssh -i path/to/key -l [email protected] -o SendEnv=SomeVariable bastion.server

該腳本將有權存取環境變數SomeVariable;使用您喜歡的任何語言存取它,並使用它來執行某些操作。

確保您的腳本不會退出到堡壘上的 shell 工作階段。

相關內容