我在 Apache 下有。 我需要将的文件所有者设置为吗? 有人说这是出于安全考虑vhost1
的 必要设置,假设被黑客入侵,不会受到影响。vhost2
/var/www/vhost1
vhostuser1
/var/www/vhost2
vhostuser2
vhost1
vhost2
答案1
主要问题是不是为每个虚拟主机使用专用的用户/组设置DocumentRoot
;相反,关键点是,默认情况下,该httpd
进程使用相同的允许全部您的虚拟主机。这意味着php
下面的恶意脚本vhost1
可以读取所有vhost2
文件。
解决方案是在特定用户权限下运行每个httpd
进程。这可以通过apache-mpm-itk
模块。使用此模块,您可以指定单个虚拟主机将在其下运行的用户/组。结合文件系统/DocumentRoot 端的限制权限,您可以有效地防止受感染的虚拟主机更改/监视同一服务器上托管的其他站点。
其他更重要的方法:
httpd
每个进程在其 chroot 下运行;- 充分利用 Linux VPS/容器为每个站点创建一个专用实例。
答案2
不,这不是强制性的,但如果您部署了一台多个用户可以访问的服务器,那么这样做就很有意义了。如果您想这样做,您必须使用 suexec,它会以相应用户的身份而不是默认的 www-data 用户身份执行 cgi 脚本。
此设置主要用于当您拥有一个由多个用户共享的 Web 服务器,并且您想阻止他们访问/操作彼此的数据(例如,当他们可以运行自己的 php 脚本时)。
而且它也增加了一点安全性,因为如果您的一个网站遭到黑客攻击并且在您的网站上运行了恶意代码,它也会做同样的事情,至少您的其他网站不会受到影响。
缺点是你必须跟踪所有用户/文件夹。