3

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

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

非常感谢!大卫

4

3 回答 3

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>

这将限制您的所有 PHP 进程仅访问文件系统上的这个(或这些)路径。即使通过 chdir() 或使用符号链接,也将禁止在其他位置打开文件。

自 PHP5.3.0 起,您还可以在运行时使用 ini_set() 提供此指令,但恕我直言,最好直接在您的 vhosts.conf 文件中应用它。

PHP 手册

于 2009-10-30T13:05:46.153 回答
1

对于终极隔离,请考虑轻量级虚拟化(Linux 上的 OpenVZ、FreeBSD jails 或类似的)。它类似于普通的虚拟机,但共享内核,因此不承担完全虚拟化的开销。轻量级虚拟机还可以以协作的方式共享磁盘空间,而不是每个使用单独的磁盘映像,并且都可以使用相同文件的单个副本。缺点是轻量级虚拟机总是运行相同的内核,即你不能在另一个操作系统中运行一个操作系统,这对你来说似乎不是问题。

于 2009-11-06T00:23:12.250 回答
1

查看适用于 Apache 2.x 的 ITK MPM:http: //mpm-itk.sesse.net/

几年来,我在许多繁忙的网站上使用它,没有任何问题。

于 2009-10-28T14:35:59.283 回答