在LAMP上运行多个站点并进行安全隔离

Dav*_* C. 2 php linux apache security lamp

我一直在管理一些LAMP服务器,每个服务器上有2-5个站点.这些基本上由同一个用户/客户端拥有,因此除了通过易受攻击的守护程序或脚本的攻击之外没有任何安全问题.我正在建立自己的服务器,并希望开始托管多个站点.我首先关注的是......隔离.如何避免c99脚本破坏所有虚拟主机?另外,我应该阻止c99能够写/读其他网站的目录吗?(很容易从另一个站点"cat"一个config.php,然后进入mysql数据库)我的服务器是一个512M突发到1G的VPS.在免费托管经理中,是否有适合我的VPS的小型服务?(这可能与我想要的安全方法兼容)目前我不打算托管超过10个站点,但我不接受客户端/黑客可以导航到不需要的目录,或者更糟糕的是,运行恶意脚本.FTP管理没问题.我不想让SSH隔离复杂化.

在这种情况下,最佳做法是什么?基本上,托管公司做什么睡得好?:)

非常感谢!大卫

小智 8

您应该在Apache配置中为每个虚拟主机使用PHP指令open_basedir,方法是添加以下行:

<VirtualHost x.x.x.x:80>
ServeName www.example.com
DocumentRoot /path/to/your/virtualroot
...
... usual stuff ...
...
php_admin_value open_basedir /path/to/your/virtualroot:/some/other/path
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

这将限制所有PHP进程只访问文件系统上的这个(或这些)路径.即使是使用chdir()或使用symbolik链接,也禁止在其他位置打开文件.

您也可以在运行时使用ini_set()从PHP5.3.0开始提供此指令,但是最好直接在vhosts.conf文件中应用它.

PHP手册