使用SELinux的安全上下文保护Web服务器 假设我们想要在Linux服务器上运行Apache Web服务器程序,由于这台服务器会运行一些关键应用,并暴露在互联网上,所以我们想确保这台Web服务器受到尽可能多的保护。 如果你启动Web服务并尝试配置你的Web服务器允许执行某些CGI脚本,如hello.pl,那么如果不改变SELinux的配置,Linux系统日志和SELinux审计日志都会记录到错误。要在SELinux审计日志中查看这些错误,执行sealert –b。这会打开SELinux审计日志,如下所示: 现在的问题是,为什么会出现这种情况?答案很简单,因为hello.pl是一个CGI可执行程序,它应该被归为httpd_sys_script_exec_tdomain上下文,而不是httpd_sys_content_t。 我们可以使用chcon命令解决这个问题: 现在我们应该能够看到,我们的Web服务器执行了hello.pl,而且在SELinux日志中也没有产生任何警告或者错误。 以这种方式配置SELinux,入侵者很难通过使用未授权的CGI或perl脚本来获得系统的控制。同样地,任何想要更改文件根目录到系统其他用户的子目录的行为都会失败,除非该子目录及子目录下的索引文件已被添加到httpd域。 那么,让我们来假设,我们的Linux服务器上的用户John创建了名为html的子目录。完成该目录和index.html文件的创建后,你会发现,该目录和文件被默认归入user_home_t上下文,如下所示: 直到且除非该上下文被修改为正确的httpd上下文域,否则任何试图通过Web服务器访问这个index.html的操作都会被SELinux拒绝,并在审计日志当中留下错误记录。你可以使用chcon命令(如下图)或者semanage命令来改变上下文。
|