ssh中PermitUserEnvironment的安全风险

ssh中PermitUserEnvironment的安全风险

我读过不少关于使用PermitUserEnvironment和文件~/.ssh/environment将环境变量传递给 ssh shell 的帖子。官方sshd 文档和其他一些资源也暗示这样做存在一些安全风险。

启用环境处理可能会使用户能够使用 LD_PRELOAD 等机制绕过某些配置中的访问限制。

激活后可能存在哪些安全问题PermitUserEnvironment?我希望在这些环境变量中保存数据库连接详细信息,这样做可行吗?

答案1

首先,如果你不想对用户访问限制做任何花哨的事情——也就是说,如果你提供交互式 shell 访问——那么可能没有额外的允许使用该.ssh/environment文件存在安全风险,因为用户用该文件能完成的任何操作也可以在他们的 shell 中以交互方式执行。

启用环境处理可能会使用户能够使用 LD_PRELOAD 等机制绕过某些配置中的访问限制。

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

如果不了解您的具体用例,很难提供明确的答案。

相关内容