在 中/etc/ssh/sshd_config
,有一个名为 的选项AcceptEnv
允许 ssh 客户端发送环境变量。我需要能够发送大量环境变量。这些变量在客户端的每次连接上都会发生变化,因此将它们放入服务器上的登录脚本中会更加困难。
我读过这"AcceptEnv *"
不安全。在尝试获取所有试图设置的环境变量列表之前,我想了解原因。
为什么它被认为是不安全的? 可以给我举个例子吗?
答案1
启用环境处理可以使用户使用诸如等机制来绕过某些配置中的访问限制
LD_PRELOAD
。
并非所有版本的手册页都sshd_config
提到了这一点。如果您的环境变量事先被更改,并且某些特权进程使用此指定的新库执行,则可能会出现问题。
看一眼http://www.dankalia.com/tutor/01005/0100501004.htm并搜索“ LD_PRELOAD
Exploit”。抱歉,该页面没有锚链接。
另请参阅 StackOverflow 问题:LD_PRELOAD 技巧是什么?
连接后设置环境变量是可以的,但是当这些变量被 ssh 守护进程按照 的设置进行解释时AcceptEnv
,可能会发生不好的事情。
答案2
不接受环境变量:
看Shellshock 漏洞这是最近才出现的...如果你接受环境变量那么你就会打开一个非常恶意的漏洞。