一位系统管理员建议我在 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 上进行此操作的出色教程请记住,如果您计划大规模部署,重现这种情况可能会很棘手。