linux web服务器安全配置,使用SELinux的安全上下文保护Web服务器

使用SELinux的安全上下文保护Web服务器

假设我们想要在Linux服务器上运行Apache Web服务器程序,由于这台服务器会运行一些关键应用,并暴露在互联网上,所以我们想确保这台Web服务器受到尽可能多的保护。

如果你启动Web服务并尝试配置你的Web服务器允许执行某些CGI脚本,如hello.pl,那么如果不改变SELinux的配置,Linux系统日志和SELinux审计日志都会记录到错误。要在SELinux审计日志中查看这些错误,执行sealert –b。这会打开SELinux审计日志,如下所示:

73d2d4c3856bb20bfdca5907b3f5f84b.png

现在的问题是,为什么会出现这种情况?答案很简单,因为hello.pl是一个CGI可执行程序,它应该被归为httpd_sys_script_exec_tdomain上下文,而不是httpd_sys_content_t。

我们可以使用chcon命令解决这个问题:

root@test3 cgi-bin]# ls -lZ *.pl

-rwxr-xr-x apache apache root:object_r:httpd_sys_content_t hello.pl

[root@test3 cgi-bin]# chcon -v --type=httpd_sys_script_exec_t hello.pl

context of hello.pl changed to

root:object_r:httpd_sys_script_exec_t[root@test3 cgi-root@test3 cgi-bin]

# ls -lZ *.pl

-rwxr-xr-x apache apache root:object_r:httpd_sys_script_exec_t hello.pl

现在我们应该能够看到,我们的Web服务器执行了hello.pl,而且在SELinux日志中也没有产生任何警告或者错误。

151cdbb954c4dc4e258e34669d852426.png

以这种方式配置SELinux,入侵者很难通过使用未授权的CGI或perl脚本来获得系统的控制。同样地,任何想要更改文件根目录到系统其他用户的子目录的行为都会失败,除非该子目录及子目录下的索引文件已被添加到httpd域。

那么,让我们来假设,我们的Linux服务器上的用户John创建了名为html的子目录。完成该目录和index.html文件的创建后,你会发现,该目录和文件被默认归入user_home_t上下文,如下所示:

ab0f4028b95af1788665b4a93289e32f.png

直到且除非该上下文被修改为正确的httpd上下文域,否则任何试图通过Web服务器访问这个index.html的操作都会被SELinux拒绝,并在审计日志当中留下错误记录。你可以使用chcon命令(如下图)或者semanage命令来改变上下文。

0e9dd153930085f29f771aa8c785bdea.png0b1331709591d260c1c78e86d0c51c18.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值