我有vhost1
,vhost2
在 Apache 下。
我是否需要将/var/www/vhost1
文件所有者设置为vhostuser1
,将 /var/www/vhost2
文件所有者设置为vhostuser2
.
有人说这是安全的必要设置,假设vhost1
被黑客入侵,vhost2
不会受到影响。
我有vhost1
,vhost2
在 Apache 下。
我是否需要将/var/www/vhost1
文件所有者设置为vhostuser1
,将 /var/www/vhost2
文件所有者设置为vhostuser2
.
有人说这是安全的必要设置,假设vhost1
被黑客入侵,vhost2
不会受到影响。
主要问题是没有为每个 vhost 使用专用的用户/组设置
DocumentRoot
;相反,关键是,默认情况下,该httpd
进程以对所有虚拟主机相同的权限运行。这意味着一个流氓脚本可以读取所有文件。php
vhost1
vhost2
httpd
一种解决方案是在特定用户权限下运行每个进程。这是通过apache-mpm-itk
模块完成的。使用此模块,您可以指定单个虚拟主机将在其下运行的用户/组。将其与文件系统/DocumentRoot 端的限制性权限相结合,您可以有效地防止受感染的虚拟主机更改/监视同一服务器上托管的其他站点。其他更重量级的方法:
httpd
在其 chroot 下运行每个进程;不,这不是强制性的,但是如果您部署了多个用户可以访问的服务器,这很有意义。如果要执行此操作,则必须使用 suexec,它以相应用户而不是默认的 www-data 用户身份执行 cgi 脚本。
如果您有一个在多个用户之间共享的网络服务器,并且您希望防止他们访问/操作彼此的数据(例如,当他们可以运行自己的 php 脚本时),则通常使用此设置。
而且它还增加了一点安全性,因为如果您的一个站点被黑客入侵并且在您的站点上运行恶意代码,它会执行相同的操作,至少您的其他站点不会受到影响。
缺点是您必须跟踪所有用户/文件夹。