我一直在管理几个 LAMP 服务器,每个服务器上有 2-5 个站点。 这些基本上由同一用户/客户端拥有,因此除了通过易受攻击的守护程序或脚本进行攻击外,不存在安全问题。 我正在构建自己的服务器并想开始托管多个站点。 我首先关心的是……隔离。 我怎样才能避免 c99 脚本破坏所有虚拟主机? 另外,我是否应该阻止 c99 能够写入/读取其他站点的目录? (很容易从另一个站点“cat”一个config.php,然后进入mysql数据库) 我的服务器是一个VPS,512M可爆到1G。在免费的托管管理器中,有没有适合我的 VPS 的小型托管管理器? (这可能与我想要的安全方法兼容) 目前我不打算托管超过 10 个站点,但我不会接受客户端/黑客可以导航到不需要的目录,或者更糟糕的是,运行恶意脚本。 FTP管理就好了。我不想让 SSH 隔离变得复杂。
在这种情况下,最佳做法是什么?基本上,托管公司如何做才能睡得好? :)
非常感谢! 大卫
最佳答案
您应该在 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() 或使用符号链接(symbolic link)也是如此。
自 PHP5.3.0 起,您还可以在运行时使用 ini_set() 提供此指令,但恕我直言,最好直接在您的 vhosts.conf 文件中应用此指令。
关于php - 在安全隔离的 LAMP 上运行多个站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1600039/