多用户 PHP 虚拟主机环境和安全

多用户 PHP 虚拟主机环境和安全

我想设置一个多用户 PHP 虚拟主机环境。

然而,我最大的担忧来了。用户可以使用 PHP 文件系统函数访问其他用户的目录,从而读取源文件并立即获取数据库密码和其他类型的敏感数据。

为了解决这个问题,我查阅了很多资源。但是,似乎没有一个能让我满意。

有没有办法在 Apache 定义的每个 VirtualHosts 的 setuid 环境中运行 PHP?有没有人已经完成此设置,可以指导我执行此操作所需的步骤?大型托管公司是如何做到的?

谢谢,科林

答案1

Setuid 环境确实运行良好。如果您使用的是 CPanel,则可以通过 easyapache 轻松进行设置。如果没有,则必须手动设置。suPHP 是一个很好的起点。

至于你为什么要费心,这和分层安全有关。有几种 PHP 漏洞允许你逃避 open_basedir 限制。如果这是你唯一的保护措施,那么有人可能会绕过它。如果你使用 open_basedir 和 suPHP(具有正确的权限),你将保护你的客户端免受 open_basedir 中的漏洞攻击。

suPHP 还使查找滥用源头变得更容易。仅使用 open_basedir,您无法分辨哪个进程属于哪个用户。如果某个用户上传了一个开始消耗所有 CPU 的脚本,则需要进行认真的挖掘才能确定是哪一个。使用 suPHP,您只需使用“top”即可查看滥用用户和脚本的完整路径。

答案2

有没有办法在 Apache 定义的每个 VirtualHosts 的 setuid 环境中运行 PHP?

这不是解决问题的方法。Apache 以单个 uid 运行。有类似这样的系统苏普,但当你可以使用标准包并设置时,为什么还要费心呢?open_basedir它明确解决了您描述的问题。

请考虑如何让用户安全地管理自己的网站 - 依靠文件所有权确定权限意味着您实际上限制了用户自己管理文件安全性的能力。他们应该能够以 Web 服务器 uid 无法写入的方式操作文件/目录(默认情况下),同时可选地提供一种处理上传的机制(最好在文档根目录之外)。

相关内容