我听说总是需要 chroot BIND。这很合理。但是其他程序呢?决定哪些程序应该被监禁的“规则”(无论是个人的还是广泛接受/建立的)是什么?
-M
答案1
一般来说,您可能出于以下几个原因想要使用 chroot:
- 需要另一个发行版/架构/发行版本,但又不想使用 OpenVZ 或虚拟机。例如,我使用 chroot 在 amd64 机器上同时拥有 i386 和 amd64 编译环境。
- 限制用户对系统的访问。例如,您可以将 chroot 与 scponly 结合使用,以限制用户可以访问的命令。这是一个非常有限的监禁系统,因为他们仍然可以访问网络。
- 将系统的访问权限限制在程序内。一般来说,您可能希望主要针对守护进程(例如 bind 或 apache)执行此操作。这样,这些程序将无法直接访问系统,因此如果攻击者可以利用程序的安全漏洞,则不会直接访问系统,而是进入 chroot 内。这有助于增强安全性,但不能保证您的系统是安全的。
答案2
当答案不是“出于安全目的”时。请参阅滥用 chroot。
当有人提出 chroot 经常被用作安全工具时,Adrian Bunk 反驳道:“实施安全解决方案的无能人员才是真正的问题。”Alan 补充道:“chroot 不是,也从来不是一个安全工具。人们基于 chroot 的属性构建了一些东西,但进行了扩展(BSD jails、Linux vserver),但它们完全不同。”
答案3
如果您的某个程序需要一组/多个版本的库,而这些库与您系统上安装的库不同,那么“chrooted”安装就是一个很好的选择。
chroot 还可以方便地在自己的环境中安装不同版本的 Linux 发行版,而无需使用 VM 或模拟器(在 Red Hat 下设置 Debian chroot)。
答案4
这完全取决于你有多谨慎。出于安全原因,大多数情况下,每个服务都应该进行 chroot。但是,对所有服务都这样做可能并不可行,因为尝试复制所有内容可能会有点繁琐。出于隔离目的,另一种可以考虑的方法是使用轻量级虚拟机,例如 OpenVZ/VServer,它们本质上类似于 chroot,只是更甚。