我们知道,传统的 Linux 系统安全,采用的是 DAC(自主访问控制方式),而 SELinux 是部署在 Linux 系统中的安全增强功能模块,它通过对进程和文件资源采用 MAC(强制访问控制方式)为 Linux 系统提供了改进的安全性。
需要注意的是,SELinux 的 MAC 并不会完全取代 DAC,恰恰相反,对于 Linux 系统安全来说,它是一个额外的安全层,换句话说,当使用 SELinux 时,DAC 仍然被使用,且会首先被使用,如果允许访问,再使用 SELinux 策略;反之,如果 DAC 规则拒绝访问,则根本无需使用 SELinux 策略。
例如,若用户尝试对没有执行权限(rw-)的文件进行执行操作,那么传统的 DAC 规则就会拒绝用户访问,因此,也就无需再使用 SELinux 策略。
相比传统的 Linux DAC 安全控制方式,SELinux 具有诸多好处,比如说:
其实,想要了解 SELinux 的优点,最直接的办法就是查看当 Linux 系统上没有运行 SELinux 时会发生什么事情。
例如,Web 服务器守护进程(httd)正在监听某一端口上所发生的事情,而后进来了一个请求查看主页的来自 Web 浏览器的简单请求。由于不会受到 SELinux 的约束,httpd 守护进程听到请求后,可以完成以下事情:
但在一个受 SELinux 约束的系统上,httpd 守护进程受到了更加严格的控制。仍然使用上面的示例,httped仅能监听 SELinux 允许其监听的端口。SELinux 还可以防止 httpd 访问任何没有正确设置安全上下文的文件,并拒绝没有再 SELinux 中显式启用的不安全活动。
因此,从本质上讲,SELinux 最大程序上限制了 Linux 系统中的恶意代码活动。