我正在设置一个Web服务器,该服务器将托管许多不同的网站,如Apache VirtualHosts,每个网站都可以运行脚本(主要是PHP,其他可能是possiblu)。
我的问题是如何将这些VirtualHost彼此隔离以及与系统其余部分隔离?我不希望网站X例如读取网站Y的配置或任何服务器的“私有”文件。
目前,我已按照此处所述使用FastCGI,PHP和SUExec设置了VirtualHosts(http://x10hosting.com/forums/vps-tutorials/148894-debian-apache-2-2-fastcgi-php-5-suexec -easy-way.html),但是SUExec仅阻止用户编辑/执行他们自己以外的文件-用户仍然可以读取敏感信息,例如配置文件。
我已经考虑过删除服务器上所有文件的UNIX全局读取权限,因为这样可以解决上述问题,但是我不确定是否可以安全地执行此操作而不中断服务器功能。
我也研究了使用chroot,但似乎只能在每个服务器上完成,而不能在每个虚拟主机上完成。
我正在寻找将我的VirtualHost与系统其余部分隔离的任何建议。
PS我正在运行Ubuntu 12.04服务器
我的回答:我几乎按照当前配置进行了操作,但是对所有虚拟主机都进行了chroot监禁,例如,将chroot监禁入其中/var/www
,然后将所有用户数据放在子文件夹中,每个子文件夹均具有组/其他r / w / x权限禁用的。该选项是可取的,特别是因为无需修改源代码就可以实现。
我选择了@Chris的答案,因为它是经过彻底编写的,并且还考虑了FTP和SELinux
mod_userdir
提供单独域名的虚拟托管。另外,我确实担心隔离方面的安全性,因为我无法在Apache的用户目录之间找到任何相关信息。似乎不提供该功能。