ssh中PermitUserEnvironment的安全风险


11

为了将env变量传递给ssh shell,我已经阅读了许多有关PermitUserEnvironment和文件使用的文章~/.ssh/environmentsshd官方文档和其他一些资源都暗示这样做有一些安全隐患。

启用环境处理可以使用户使用诸​​如LD_PRELOAD之类的机制绕过某些配置中的访问限制。

激活可能会带来哪些安全问题PermitUserEnvironment?我希望在这些环境变量中保留数据库连接详细信息,这是否明智?


我向OpenSSH项目提交了错误报告,要求他们在sshd_config手册页中添加几句话,以澄清此问题:bugzilla.mindrot.org/show_bug.cgi?id=2317
Florin Andrei

Answers:


16

首先,如果您不打算对用户访问限制进行任何处理(也就是说,如果要提供交互式外壳程序访问),则允许使用该文件可能会带来零附加安全风险.ssh/environment,因为任何用户可以使用该文件完成操作,也可以在外壳中进行交互操作。

启用环境处理可以使用户使用诸​​如LD_PRELOAD之类的机制绕过某些配置中的访问限制。

如果您使用SSH强制命令来限制人们通过ssh可以执行的操作(例如,如果您限制人们只能使用sftpscp),则允许某人设置环境变量(例如,LD_PRELOAD甚至可能是PATH)将允许他们劫持您的通过将基本库调用替换为自己的代码来限制。另一方面,如果您是.ssh/environment代表用户创建的,而他们又无法管理它,那么您的风险就相对较小。

在不了解特定用例的情况下,很难提供确定的答案。


我只允许2个或3个受信方(我们自己组织内的开发人员)通过其rsa密钥访问服务器。因此,按您的说法,这听起来还不错
Rob Squires

从您的回答中,我认为,如果我所有的ssh帐户均提供完全的bash访问权限(无sudo),那么启用该选项的安全性不会给我带来任何麻烦。正确?
Florin Andrei 2014年

没错 如果您要提供完整的bash访问权限,人们已经可以设置所需的任何环境变量。
larsk 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.