如何保护Apache共享主机环境? (chrooting,避免符号…)

我在处理Apacheconfiguration时遇到了问题:问题是我想将每个用户限制在他自己的文档根目录下(因此,我正在寻找一个chroot()),但是:

  • Mod_chroot只能在全局运行而不能运行在每个虚拟主机上:我的path中的用户像下面这样/home/vhosts/xxxxx/domains/domain.tld/public_html是用户),并且不能解决问题/home/vhosts ,因为用户仍然可以看到对方。
  • 使用apache-mod-itk会使网站变慢,我不确定是否能解决任何问题
  • 没有使用任何前两个,我认为唯一剩下的就是避免符号链接,不允许用户链接到不属于他们的东西。

所以,我想我会遵循第三点,但是…如何有效地避免符号链接,同时保持mod_rewrite工作?!
php已经被php-fpm chrooted了,所以我唯一的担心就是关于Apache本身。

为什么你需要限制Apache本身? 将脚本运行时(php,Perl,ruby,…)locking在chroot中会不会更好? 如果是这样,看看mod_fastcgi以及如何为您需要的特定语言启动持久性解释器。

任何遇到这个post的人都会注意到,Apache将SymLinksIfOwnerMatch描述为不适当的安全措施:

这个选项不应该被认为是一个安全的限制,因为符号链接testing受制于可避免的竞争条件。“
(来自http://httpd.apache.org/docs/2.2/mod/core.html#options )。

除了完全禁用符号链接并防止用户重写.htaccess文件中的设置外,为了查看防止符号链接攻击的解决scheme,请查看https://documentation.cpanel.net/display/EA/Symlink +种族+条件+保护 (这不仅仅是特定的cPanel)。