将Apache虚拟主机从系统的其余部分分离出来

我正在build立一个Web服务器,它将把许多不同的网站作为Apache VirtualHosts来托pipe,其中每一个都有可能运行脚本(主要是PHP,其他的)。

我的问题是,我如何将这些虚拟主机中的每一个与其他系统隔离开来? 我不希望网站X读取网站Y或任何服务器的“私人”文件的configuration。

目前我已经使用FastCGI,PHP和SUExec设置了VirtualHosts,如下所述(http://10hosting.com/forums/vps-tutorials/148894-debian-apache-2-2-fastcgi-php-5-suexec -easy-way.html ),但是SUExec只能防止用户编辑/执行非自己的文件 – 用户仍然可以读取configuration文件等敏感信息。

我曾经想过要删除服务器上所有文件的UNIX全局读取权限,因为这样可以解决上述问题,但我不确定是否可以安全地执行此操作而不中断服务器function。

我也研究过使用chroot,但是这似乎只能在每个服务器的基础上完成,而不是在每个虚拟主机的基础上完成。

我正在寻找任何build议,将我的VirtualHosts从系统的其余部分。

PS我正在运行的Ubuntu 12.04服务器

我的答案:我几乎按照我目前的configuration结束了,但是为所有的虚拟主机做了一个chroot jail,例如在/var/www有chroot jail,然后把所有的用户数据放在每个group / others r /禁用了w / x权限。 特别是这个选项是可取的,因为这是所有可能的,没有任何修改源代码。

我select了@Chris的答案,因为它被彻底写入,也被认为是FTP和SELinux

这可以通过在Apache中启用mod_users模块来完成。

您需要在您的apacheconfiguration中设置UserDir。 我build议你在一个单独的configuration文件中做这个并包含它。 包括在内

 <IfModule mod_users.c> Include conf/extra/userdir.conf </IfModule> 

我可以给你整个教程,但这应该让你开始configurationApache: http : //www.techytalk.info/enable-userdir-apache-module-ubuntu-debian-based-linux-distributions/

如果你正在运行SELinux(你应该),你必须让Apache读访问用户家庭。 你可以通过设置:

 sudo setsebool -P httpd_enable_homedirs=On 

它还需要用户dirs public_html目录的文件许可权以及直到根目录的父目录的rx权限。

显然你需要为用户设置chroot,例如在vsftpd中。 安装:

 apt-get vsftpd 

要configurationchroot,请使用vi或nano打开/etc/vsftpd/vsftpd.conf。 查找并取消注释或添加:chroot_local_user = yes

你可以得到相同的行为,我推荐通过FTP,打开/ etc / ssh / sshd_config sftp并添加一个匹配块和这一行:

 Subsystem sftp internal-sftp Match Group web_users ChrootDirectory %h ForceCommand internal-sftp AllowTcpForwarding no Match 

这将chroot web_users组中的任何用户。 你也需要通过将其设置为/ sbin / nologin来拒绝对shell的访问:

 useradd -G "web_users" -s /sbin/nologin new_user 

如果这是一个公共生产服务器,我强烈build议你在OS,OpenSSH,Apache,PHP,vsftpd上应用一些强化,并应用一些严格的iptables和TCP包装。 我build议你离开SELinux。

我build议看看suphp或PHP-FPM 。

它将基本上使PHP解释器“su”到为该VirtualHostconfiguration的某个特定用户。 这将允许您使用通用文件系统权限来隔离每个VirtualHost。

我会推荐FPM出于性能方面的考虑。 从主页上看,这是你最感兴趣的东西:

另外感兴趣的是每个池用户和组选项,它们允许你在给定的uid和gid下运行特定的fpm池; 再见suphp!

看看chroot

一些起点:

Apache的chroot变得简单

Apache的Chroot环境(Debian)

Apache Chroot监狱:虚拟主机