![rbash:用户可以启动常规 bash 并绕过限制](https://linux22.com/image/538814/rbash%EF%BC%9A%E7%94%A8%E6%88%B7%E5%8F%AF%E4%BB%A5%E5%90%AF%E5%8A%A8%E5%B8%B8%E8%A7%84%20bash%20%E5%B9%B6%E7%BB%95%E8%BF%87%E9%99%90%E5%88%B6.png)
我在 Ubuntu 服务器上设置了一个用户帐户。用户的默认 shell 是 rbash。这很好用,直到他们输入bash
时他们不再局限于他们的主目录。我该如何补救?
答案1
您需要限制用户可用的二进制文件,rbash 只是第一步。
以下是包含更多详细信息的博客: http://blog.bodhizazen.net/linux/how-to-restrict-access-with-rbash/
例如,您需要更改用户的 PATH,以排除 /bin、/sbin、/usr/bin、/usr/sbin 等常规目录。将新的 bin 目录添加到其 PATH,并将 place safe 命令复制到其中。
您还需要限制用户的启动文件(如 .bashrc)以防止他们以这种方式更改其路径。
您还可以执行 chroot 以获得更高的安全性。
答案2
你可以:
- 专门为“可以运行不受限制的 shell”创建一个组
- 将 bash 可执行文件的所有权设置为该组
- 确保您希望能够无限制地运行脚本的所有用户(如用户
cron
和其他服务以...身份运行) - 将其执行权限位设置为用户=1、组=1、其他=0
- 对所有其他具有外壳逃生路线的外壳和工具重复此操作...
但这并不是好的安全性,因为您处于步骤 5 中的“列举坏处”的位置,这基本上是不可能的,因为用户可以通过许多其他方式突破 rbash 进入另一个 shell。
更好的选择是尝试为你的用户使用 chroot jails。网上有很多相关的教程,比如这和这作为两个例子(它们是“user chroot”的前两个搜索结果,您可能需要更深入地了解或者添加更多搜索词,看看是否可以找到更适合您的环境的信息)。维基百科有一个关于该主题的页面:限制部分可能会特别感兴趣,以确保该技术可以满足您的要求。