如何在 CentOS 上 chroot Apache?

如何在 CentOS 上 chroot Apache?

一位系统管理员建议我在 chroot jail 中运行 Apache,以防止攻击者控制服务器。

我的问题是:

  • 在 RHEL/CentOS 5 中 chroot Apache/2.2.3 的最佳方法是什么?我只使用 Apache 自带的默认模块,如 mod_php 和 mod_security。

我听说过 mod_security SecChrootDir,但我不知道它是否适合我的配置,文档中说它仅推荐用于静态文件服务。

谢谢你!

答案1

这时使用 SELinux 可能更简单。它甚至记录了它在 CentOS 和 Apache 下的工作原理:

http://wiki.centos.org/HowTos/SELinux

简而言之,如果您使用 SELinux 和 Apache,最糟糕的情况是入侵者只能访问和更改同一 httpd 域内的文件。入侵者无法启动 httpd 域外的进程或访问与 httpd 无关的文件。

编辑:需要注意的是,真正的问题是防止或减轻特权升级。Chroot 可以提供帮助,但它并不是万无一失的 - 在查找有关 chroot 安全性的信息时,我发现,这让我想到了这一点:

http://www.linuxsecurity.com/content/view/117632/49/

从该链接中要记住的重要一点是,在 chroot 中部署的软件越多,有人越狱的机会就越大。当您尝试让 Apache 及其支持库在 chroot jail 中工作时,请记住这一点。

答案2

看一眼mod_chroot

让动态网页在 chroot 下工作可能很麻烦,我们无法让 mod_chroot 与 Django 一起工作,所以我们采取了一种漫长而手动的方式:

mkdir /chroot
''populate /chroot with everything you need, this is a long process'''
chroot /chroot /usr/sbin/apache2 -k start

您在 /chroot/usr/sbin/ 中有一个 apache 二进制文件的副本。chroot 命令将生成在第一个参数中找到的 jail 中执行的命令。

填充是一个更大的过程,网上有很多关于 Apache 运行所需内容的文档,您需要查看一下。

答案3

有一个在 nixCraft 上进行此操作的出色教程请记住,如果您计划大规模部署,重现这种情况可能会很棘手。

相关内容