我想验证 Linux 发行版(例如 Ubuntu)中 chroot 和默认程序的安全性。
示例:我设置了 jail 目录“A”。发行版中的每个 Linux 二进制文件都放置在“A”中,并且 ACL 相同。
例如,A/usr/bin 包含所有可执行文件 /usr/bin,A/bin 包含来自 /bin 的 exe 文件,等等。
假设没有写入其他文件。
然后将不受信任的用户放入 chroot 监狱“A”并以某个随机 uid 的身份进行操作。
问题是:这个环境和未监禁的环境一样安全吗?他不可能获得 root 访问权限或越狱吗?(除非利用 Linux root 漏洞)
例如,我最初担心现在用户可以编写自己的 sudoers 文件。但幸运的是,sudo 会验证 sudoers 是否由 root 拥有。每个标准的 setuid 程序都这么小心吗?
答案1
我无法具体回答你的问题,所以如果你愿意的话,可以把我的回答调低一些。然而,在我之前和之后的许多人都会向你证实一个显而易见的事实:chroot jail 不是一种安全机制(你谈到了 Linux;BSD jail 已经足够不同了,我不是在谈论它们)。引用一位非常著名的内核黑客,Alan Cox,它们不是一种安全机制。说实话,我只看到/听到/读到过关于成功使用 chroot 进行打包构建和测试环境的文章。这就是它的闪光点。它不是一个好的安全平台,尤其是如果只是孤立的话。
如今,人们谈论的是带有 cgroups 的 Linux 容器和其他更强大的虚拟化解决方案,例如开放VZ或者Linux虚拟服务器。我并不是说它们就是明确的答案,但性能下降的影响在于主机和客户虚拟机之间有良好的隔离。我希望这对您有用。