我已经玩 CentOS 系统好几年了。所以我对终端很熟悉。但是,我读了很多博客文章,声称 chroot 不安全,这些帖子的数量令人恐惧。真的是这样吗?为什么?
我使用 chroot 将仅使用 SFTP 的用户锁定在特定上下文中,无需任何 shell 或命令。那么,这样做到底有什么安全问题呢?
问题被放逐堆栈溢出。
答案1
因为在大多数情况下,root 进程可以轻松退出 chroot。这是设计使然,因为 chroot 从未打算用作安全设备。
艾伦·考克斯曾严厉斥责一名开发商提交了一个内核补丁来“修复”此行为,声称 chroot 已被滥用为安全设备,但从来就不是这样的设备。
答案2
我知道至少有一个它被认为不安全的例子。chroot 环境/proc
不是隔离的,因此很容易访问 chroot 中启动的进程所不拥有的资源。
使用 chrooted 环境进行 SFTP 是可以的,并且可以显著提高安全级别。只是不要滥用它作为基于容器的虚拟化,它确实提供了更多级别的安全性。在此,我强调了 @MDMarra 的回答中的内容。
答案3
每当攻击者在 chroot 环境中获得超级用户访问权限时,都有不同的方法可以逃脱。一种方法是基于以下事实:并非所有文件描述符都已关闭调用 chroot() 时。可以编写一个简单的 C 程序来利用这一事实。存在比 chroot 更严格的解决方案,例如虚拟化。但是,chroot 提供了一种简单直接的方式来限制进程及其能力。