将 LDAP 中的 SSH 用户限制为只能在 SSH 堡垒机上执行一个命令

将 LDAP 中的 SSH 用户限制为只能在 SSH 堡垒机上执行一个命令

我有一个 Centos 7 服务器的私有网络。每台服务器只能通过 SSH 堡垒机访问。此外,所有这些服务器都使用 SSSD 根据 LDAP 目录验证 SSH 用户的密钥。

由于密钥是根据 LDAP 目录进行验证的,因此不存在标准文件。二进制文件authorized_keys不是通过标准文件,而是通过管道将针对 LDAP 的查询格式化为文件——但实际上不是文件。因此,据我所知,通过将 RSA 密钥绑定到条目来限制用户只能执行特定命令是不可能的。authorized_keys/usr/bin/sss_ssh_authorizedkeyssshdauthorized_keyscommands=" ... "

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_configMatchAcceptEnv

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 会话。

相关内容