我并不是要质疑在大多数情况下将 apache 放入 chroot-jail 中这一完善的安全预防措施,但就我的情况而言,我对此表示怀疑。
我们有一个虚拟服务器托管单个应用程序 - Web 服务。本指南说我应该禁用 SELinux我觉得哪个不太安全?所有这些都是为了在我们的应用程序受到攻击后保护普通的 Centos 安装。
显然,这有点主观,但在资源有限的小规模部署中,我们是否有更好的方法应该关注?
答案1
Chroot 提供了一点安全性,为攻击者提供了减速带。如果 apache/CGI 中存在漏洞,攻击者必须逃离 chroot jail。自动攻击不太可能尝试这样做,但如果存在已知的内核漏洞,并且该漏洞的要求在 chrooted 环境中可获得,那么您就会受到攻击。
SELinux 提供了更大的安全性,但实施起来的麻烦也不容小觑。对于简单情况,可能存在预先准备好的 SELinux 策略,但如果您要做一些奇怪/自定义的事情,则需要自己扩展它们。如果您加载了 selinux 开发 RPM,这并不难。从非强制模式开始,完全测试您的系统,然后运行:
audit2allow -a -l -R -m foo -o foo.te
这将帮助您制定自定义政策。
与 SELinux 类似的步骤是 GRSecurity。它不太标准,但可能比 SELinux 更安全,可能更容易使用,尽管互联网上能够帮助您的随机人员较少。
另一种方法是在虚拟机中运行 Web 服务器。这可以为您提供更多的安全性,但已知攻击能够逃脱虚拟机环境。不过,这些攻击者很可能是意志坚定的攻击者,而不是普通的脚本小子。
答案2
我只想说,我从来没有费心在 chroot 环境中设置 apache。如果你认为 chroot 可能没有必要,那可能就没有必要了。