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

我想build立一个多用户PHP虚拟主机环境。

不过,这是我最担心的问题。 用户可以使用PHP文件系统function访问其他用户目录,从而读取源文件并获得对数据库密码和其他types敏感数据的中间访问。

为了解决这个问题,我一直在寻找很多资源。 但是,他们没有一个让我满意。

有什么办法可以在setuid环境中为Apache定义的每个VirtualHosts运行PHP吗? 有没有人已经通过这个设置,可以指导我这样做所需的步骤? 大型托pipe公司如何做呢?

谢谢,科林

Setuid环境确实工作得很好。 如果您使用的是CPanel,可以通过easyapache轻松设置。 如果你不是,你必须手动设置它。 suPHP在这里是一个很好的开始。

至于为什么你应该打扰,这是关于分层安全。 有几个PHP的漏洞,让你逃避open_basedir的限制。 如果这是你唯一的保护,那么可能有人可以解决这个问题。 如果您使用open_basedir和suPHP(具有正确的权限),则可以保护您的客户免受open_basedir中的攻击。

suPHP也使find滥用的来源更容易。 用open_basedir,你不能告诉哪个用户拥有哪个进程。 如果某些用户要上传一个开始占用CPU的脚本,则需要进行一些认真的挖掘才能确定哪一个。 使用suPHP,您只需使用“top”即可查看滥用用户以及脚本的完整path。

有什么办法可以在setuid环境中为Apache定义的每个VirtualHosts运行PHP吗?

这不是解决问题的方法。 Apache作为一个单独的uid运行。 有像suPHP这样的系统,但是为什么要使用标准软件包并设置open_basedir来明确地解决你描述的问题。

请考虑如何让用户安全地pipe理自己的网站 – 依靠文件的所有权来确定权限意味着您有效地限制了用户自己pipe理文件安全的能力。 他们应该能够操作文件/目录(默认情况下),使得它们不能被web服务器uid写入,同时可以select提供处理上传的机制(最好在文档根目录之外)。