使用chroot进行公开的服务是否能提供真正的安全性?

我想要一个明确的答案,为什么这种做法应该与暴露于潜在的敌对networking(即互联网)的服务进行。 据我了解,有一种方法可以打开chroot监狱,所以如果这个安全措施没有真正的价值,那么为什么一些装置还在追求呢?

你不应该考虑一个完整的安全function的chroot。 虽然攻击难度加大,但如果你在chroot中设法控制的话,这很容易被攻破。 有一个涉及到父目录的chrooting的方法(..)更多信息在这里 。 chroot提供了一些安全性好处的原因是,黑客可能期望拥有的许多应用程序不会存在。 如果在chroot或chroot之间进行select,我会selectchroot选项。

更好的方法是像BSD的监狱,Solaris的区域或一些虚拟化技术,如KVM或Xen。 这些方法采用chroot所做的相同的划分思想,并使之更为强大。 你也可以看看像SELinux这样的东西,但是这稍微复杂些,所以容易出错。

据我了解,有一种方法可以打破chroot监狱(…),那么为什么有些装置仍然在追求它?

你可以说相同的密码。 关键是经常获得一些资源意味着在入侵者的方式上设置了如此多的障碍,迫使他放弃在达到目标之前。 你不能依靠单一的方法来保证给定的资源。 而且,chroot使您可以更好地控制正在运行的应用程序。 您可以限制此应用有权访问的文件系统资源。

是的,它确实。

  • 如果你的守护进程或其他提供服务的服务不能以root身份运行,那么守护进程中的一个漏洞就会与系统的其他部分隔离。
  • 如果您的操作系统可以限制在chroot()编辑时可以完成的操作,那更好。 grsec-patches到Linux例如可以删除chroot中root用户的能力,或者在chroot中创build/ dev-nodes

但是,如果你在chroot里面得到了一个可利用的内核bug(或者只是一个root洞,如果不是grsec或者BSD jail),那么整个系统都是拥有的。 如果你运行一个真正的虚拟器(比如VMWare,而不是BSD jails),那么不是这样,因为他们对所有“系统”使用相同的内核。

所以是的,如果使用正确,它会添加一个安全层。

所以如果这个安全措施没有真正的价值,那么为什么有些装置还在追求呢?

获得的安全性可能不会太高,但在某些情况下,您可以使系统更易于用户使用。 如果他们没有被其他所有不需要看的东西分心,他们可能会发现这个系统更容易使用。

我发现chroots是复杂的方式,从来没有能够安装一个。 有人可能会争辩说,如果我能够这样做的话,我会觉得很有兴趣,但是我还没有。

我认为,考虑到现在可用的计算能力,在虚拟机中隔离你的服务(当然,如果你坚持:-P,VMWare也能工作)。 虚拟机也有非常容易备份/迁移chroot没有的巨大优势。 您还拥有全面的pipe理虚拟机的界面,您可以定义自己没有的虚拟机。

当你可以运行jails / zones / openvz时,不要运行chroot,花费相当多的时间和精力,并且有一个更加标准的,更加孤立的环境。

如果没有更好的服务,Chroot曾经是非root用户服务的好主意,但现在已经过时了。

Chroot增加了很多安全性好处,如果你是根,你只能打破它。 所以你提高了攻击者需要做的事情。

此外,chroot提供应用程序隔离,而虚拟化提供操作系统隔离。 所以你可以在虚拟机上运行,​​例如,在chroot里面的apache。