编辑#2,2015年7月23日:寻找一个新的答案,以识别在以下设置中缺少的重要安全项目,或者可以给出理由相信所有内容均已涵盖。
编辑#3,2015年7月29日:我特别在寻找可能的配置错误,例如无意中允许某些可被利用来规避安全限制或更糟的东西,但仍未解决的问题。
这是多站点/共享主机设置,我们希望使用共享的Apache实例(即在一个用户帐户下运行),但每个网站的用户都使用PHP / CGI运行,以确保没有站点可以访问另一个站点的文件,我们希望确保没有遗漏任何内容(例如,如果我们不了解符号链接攻击防护)。
这是我到目前为止的内容:
- 确保PHP脚本以网站的Linux用户帐户和组身份运行,并且被监禁(例如使用CageFS)或至少使用Linux文件系统权限进行了适当限制。
- 使用suexec以确保CGI脚本不能以Apache用户身份运行。
- 如果需要服务器端包含支持(例如shtml文件中的支持),请使用它
Options IncludesNOEXEC
来防止CGI在您不希望的时候运行(尽管使用suexec并不会引起太大的关注)。 - 拥有symlink攻击保护功能,这样黑客就不会欺骗Apache以纯文本形式提供另一个网站的文件,也不会泄露DB密码之类的可利用信息。
- 配置
AllowOverride
/AllowOverrideList
以仅允许黑客无法利用的任何指令。如果上述各项处理正确,我认为这不必担心。
如果MPM ITK没那么慢并且没有以root身份运行,我会选择它,但是我们特别想使用共享的Apache,但要确保它安全地完成。
我找到了http://httpd.apache.org/docs/2.4/misc/security_tips.html,但是它在该主题上并不全面。
如果有帮助,我们计划将CloudLinux与CageFS和mod_lsapi结合使用。
还有什么要确保做或知道的吗?
编辑2015年7月20日:人们已经提交了一些很好的替代解决方案,这些解决方案通常都很有价值,但是请注意,此问题仅针对共享Apache设置的安全性。特别是上面没有提到的东西可以使一个站点访问另一个站点的文件或以某种方式危害其他站点吗?
谢谢!