对公开的服务使用 chroot 能带来真正的安全益处吗?

对公开的服务使用 chroot 能带来真正的安全益处吗?

我想要一个明确的答案,为什么这种做法应该用于暴露于潜在敌对网络(即互联网)的服务。据我所知,有一种方法可以突破 chroot jail,所以如果这种安全措施没有真正的价值,那么为什么有些安装仍在追求它?

答案1

您永远不应将 chroot 视为完整的安全功能。虽然这会使攻击变得更加困难,但如果您确实设法在 chroot 内部获得一些控制权,则很容易突破。有一种方法涉及 chroot 到父目录 (..) 更多信息这里。chroot 之所以能带来一些安全优势,是因为黑客可能期望拥有的许多应用程序将不复存在。如果要选择是否 chroot,我会选择 chroot。

更好的方法是使用 BSD 的 jail、Solaris 的区域或 KVM 或 Xen 等虚拟化技术。这些方法采用了与 chroot 相同的分区理念,并使其更强大。您也可以考虑使用 SELinux 之类的东西,但这稍微复杂一些,因此容易出错。

答案2

据我了解,有一种方法可以摆脱 chroot jail (...),那么为什么有些安装仍在追求它?

密码也是一样。关键在于,保护某些资源通常意味着在入侵者的路上设置许多障碍,迫使他们在到达目标之前放弃。您不能依赖单一方法来保护给定的资源。此外,chrooting 可以让您更好地控制正在运行的应用程序。您可以限制此应用程序可以访问的文件系统资源。

答案3

是的,它确实。

  • 如果您的守护进程或提供服务的任何程序不以 root 身份运行,那么该守护进程中的一个漏洞也会与系统的其余部分隔离。
  • 如果你的操作系统可以限制 chroot() 时可以执行的操作,那就更好了。例如,Linux 的 grsec-patches 可以消除 chroot 中的 root 用户逃脱的能力,或者在 chroot 中创建 /dev-nodes

但是,如果您在 chroot 中发现可利用的内核错误(或者如果不是 grsec 或 BSD jail,则只是一个根漏洞),那么整个系统就被控制了。如果您运行的是真正的虚拟化程序(例如 VMWare,但不是 BSD jail,则情况并非如此。它们没有帮助,因为它们对所有“系统”使用相同的内核)。

是的,如果使用得当,它确实增加了一个安全层。

答案4

我发现 chroot 太复杂了,我从来没有安装过。有人可能会说,如果我能安装,我会对它很感兴趣,但我仍然没有。

我认为,考虑到当今的计算能力,将服务隔离在虚拟机中(当然是在 Xen 上,但如果您坚持的话,VMWare 也可以 :-P )是一个更好的主意。虚拟机还具有非常容易备份/迁移的巨大优势,而 chroot 则没有。您还拥有用于管理虚拟机的综合界面,而 chroot 绝对没有。

相关内容