使用 ForceCommand 对 SSH PermitUserEnvironment 进行风险评估

使用 ForceCommand 对 SSH PermitUserEnvironment 进行风险评估

专用服务器设备ssh仅接受一个登录帐户的登录,该登录帐户

  • 仅使用公钥进行身份验证,
  • 并执行配置有 的命令ForceCommand

登录帐户可以由多个身份使用,每个身份都在 中注册了其公钥authorized_keys

我想将控制令牌传递到其中一些公钥的命令中。

我可以使用环境变量来实现此目的,并environment=authorized_keys.为此,我需要启用PermitUserEnvironment哪个全局选项in sshd_config(块中不支持Match)。

通过启用PermitUserEnvironment,客户端还可以传递环境变量。但是,我认为这是安全的,因为:

  • AcceptEnv客户端只能传递服务器上设置允许的变量。
  • 设置的变量authorized_keys优先于从客户端传递的变量。
  • 唯一有效的登录会启动强制命令,因此无法访问可以调整环境的交互式 shell。

因此我相信

  • 鉴于我不会使用AcceptEnv,客户端应该不可能传递环境变量。
  • 如果我为所有公钥上的变量设置一个值,那么客户端就不可能覆盖它,即使(错误地)允许AcceptEnv
  • 由于没有 shell 访问权限,因此没有其他方法可以修改环境。

这是 的安全使用吗PermitUserEnvironment,还是还有我上面没有考虑到的其他风险?

相关内容