根据文件所有权禁用PHP

时间:2011-07-27 17:24:17

标签: php apache

最近我遇到了一些安全问题,其中一个破解者在网站代码中发现了一个利用上传任意文件的漏洞,其中一个是“PHP Shell”,它给了他们各种破解工具和apache级别的访问权限。服务器

虽然已经修复了漏洞并删除了文件,但是为了锁定Linux服务器,我想使它成为apache拥有的任何文件(apache运行的用户)无法执行PHP。所有合法的PHP文件都归不同的用户所有。

我们确实需要保持apache可写入的目录,因为我们安装了各种CMS,允许用户上传图像和文档。我知道我们可以做的另一个选择是关闭那些可由apache写入的目录的php,但由于它需要发生在多个服务器上的数百个域中,我希望能做一个更“全局”的修复,这样我就不会必须确保免除PHP的目录列表始终是最新的等等。

思想?

1 个答案:

答案 0 :(得分:0)

实际上,在我看来,最安全的选择可能是在任何编写文件的目录中禁用PHP,因为任何其他方法似乎都很脆弱。您可以修改mod_php(或者,如果您正在使用FastCGI,则会生成FastCGI进程的方式),尽管这些方法似乎相当复杂。

如果您打算使用所有者(并且我会建议,还有权限确保它不仅仅是某人发现的世界可写的PHP文件),那么您可以使用{{{ 1}} auto_prepend_file

这使您可以将一些PHP代码放在一个文件中,该文件在所有PHP脚本的开头都是php.ini d。您可以在PHP中编写验证文件应该运行所需的任何逻辑(否则强制退出)。您甚至可以向管理员发送电子邮件,或者在脚本不能运行的情况下采取其他适当的操作。

http://www.php.net/manual/en/ini.core.php#ini.auto-prepend-file

但正如我所说,这种做法非常糟糕。在Web服务器可写的任何目录中禁用PHP支持要好得多,而不是依赖所有权。