什么时候使用chroot是合适/谨慎的?

我听说需要一直chroot BIND。 很公平。 但是其他的程序呢? 什么是“规则”(无论是个人还是被广泛接受/build立)来决定哪些节目应该入狱?

-M

一般来说,你可能想要使用chroot有几个原因:

  • 需要另一个分布/架构/分发版本,而不想使用OpenVZ或虚拟机。 例如,我使用chroot在amd64机器上同时具有i386和amd64编译环境。
  • 限制用户访问系统。 例如,您可以使用chroot和scponly一起来限制用户有权访问的命令。 这是一个非常有限的监狱系统,因为他们仍然可以访问networking。
  • 限制系统对程序的访问。 一般来说,你可能想要为守护进程做这些工作,比如bind或者apache。 这样,这些程序将不能直接访问系统,所以如果攻击者可以使用程序的安全漏洞,它不会直接访问系统,而是会发现自己在chroot中。 它有助于提高安全性,但不能保证系统安全。

答案不是“出于安全目的”。 请参阅滥用chroot 。

当build议chroot经常被用作安全工具时,Adrian Bunk反驳说:“执行安全解决scheme的无能的人员是一个真正的问题。 Alan补充说:“chroot并不是一种安全工具,人们已经根据chroot的属性构build了一些东西,但扩展了(BSD jail,Linux vserver),但是它们有很大不同。

如果你有一个程序需要一套/不同于你的系统上安装的库/版本,那么这将是一个很好的“chroot”安装的候选者。

在不使用虚拟机或模拟器( 在Red Hat下设置Debian chroot)的情况下 ,chroot也可以方便地在自己的环境中安装不同版本的Linux发行版。

这一切都取决于你是多么的偏执。 对于大多数意图和目的,出于安全原因,每个服务都应该进行chroot-ed。 然而,这样做对所有事情来说都是不可行的,因为试图复制所有的东西可能会有点繁琐。 另一种考虑隔离目的的可能性是使用像OpenVZ / VServer这样的轻量级虚拟机,它们基本上像chroot一样,只不过更多。