我已经阅读了一些内容,表明如果没有正确实施(甚至是wikipedia,例如),受限的 shell 可以被打破。
我正在寻找一些有关导致受限外壳中的安全漏洞以及如何解决这些问题的指导。
我认为主要问题是您允许用户使用的二进制文件;如果这些程序中的任何一个有助于执行具有更高权限的其他程序/脚本。
这是否意味着默认的 rbash shell 相对安全?
是否有任何特定程序(或多或少)绝对安全/不安全(到目前为止,我已经看到 vim 和 scp 用于爆发的特定示例)?
还有其他需要考虑的事情吗?
此外,当您想限制用户可以运行的命令时,是否有更好的选择来使用受限 shell?
更新 1
继 bstpierre 提到使用 ssh command= 之后,有没有人尝试使用 command= 强制用户运行一个脚本,该脚本使用 SSH_ORIGINAL_COMMAND 从用户那里获取输入,然后根据该输入运行有限的附加命令/程序?我想这将有一个非常有限的用例,但对我来说似乎可行,只要脚本小心它接受的输入。
更新 2
我在更新 1 中提出的建议结果正是 gitolite 所做的;使用 command= 和 SSH_ORIGINAL_COMMAND,使用一些钩子魔术来区分分支。来自他们文档的信息。
所以我知道这种方法是一种可行的选择,但我仍然在回答关于受限外壳的原始查询。