我一直在管理一些LAMP服务器,每个服务器上有2-5个站点。这些程序基本上属于同一个用户/客户端,因此除了通过易受攻击的守护程序或脚本进行攻击外,不存在任何安全问题。我正在建立自己的服务器,并想开始托管多个网站。我首先关心的是...与世隔绝如何避免c99脚本损坏所有虚拟主机?另外,我是否应该阻止该c99能够写入/读取其他站点的目录?(从另一个站点“猫”一个config.php,然后进入mysql数据库是很容易的)我的服务器是一个512M的1G的VPS。在免费的托管管理器中,有没有为我的VPS工作的小管理器?(这可能与我想要的安全方法兼容)目前我不打算托管超过10个网站,但我不接受客户端/黑客可以导航到不想要的目录,或者更糟糕的是,运行恶意脚本。FTP管理就可以了。我不想让SSH隔离的事情复杂化。
这种情况下的最佳实践是什么?基本上,托管公司怎么做才能睡个好觉?:)
非常感谢!大卫
发布于 2009-10-30 21:05:46
您应该在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>这将限制所有PHP进程只能访问文件系统上的这个(或这些)路径。在其他位置打开文件将被禁止,甚至是通过chdir()或使用symbolik链接。
从PHP5.3.0开始,您也可以在运行时使用ini_set()提供此指令,但更好的做法是直接在您的vhosts.conf文件中应用此指令。
PHP Manual
发布于 2009-10-28 22:35:59
查看ITK MPM for Apache2.x:http://mpm-itk.sesse.net/
我已经在一些繁忙的网站上使用了几年了,没有任何问题。
发布于 2009-11-06 08:23:12
要实现终极隔离,可以考虑轻量级虚拟化( Linux上的OpenVZ、FreeBSD jails或类似的虚拟化)。它类似于原始虚拟机,但共享内核,因此不承担完全虚拟化的开销。轻量级虚拟机还可以以协作的方式共享磁盘空间,而不是每个虚拟机使用单独的磁盘映像,并且所有虚拟机都可以使用相同文件的单个副本。缺点是轻量级虚拟机总是运行相同的内核,即你不能在另一个操作系统中运行一个操作系统,这对你来说似乎不是问题。
https://stackoverflow.com/questions/1600039
复制相似问题