1.3. SELinux 示例
安全增强型 Linux (SELinux)在许多实际场景中可以正常工作的安全优势。通过查看进程隔离和用户限制的实际示例,您可以看到 SELinux 如何缓解特权升级、配置错误和常见漏洞。
SELinux 通过几种方法增强系统安全性,例如:
- 默认操作为 deny(拒绝)。如果 SELinux 策略规则不存在允许访问(例如,允许进程打开文件),SELinux 将拒绝访问。
-
限制用户限制特权。您可以将 Linux 用户映射到受限的 SELinux 用户,以应用安全规则。例如,将 Linux 用户映射到
user_u可防止用户运行设置的用户 ID (setuid)应用程序,如sudo和su。 - SELinux 域 增加进程和数据分割。使用域来定义哪些进程可以访问特定的文件和目录。例如,入侵 Samba 服务器的攻击者无法使用它访问由其他进程(如 MariaDB 数据库)使用的文件。
-
SELinux 可缓解配置错误。攻击者可以利用域名系统(DNS)区域传送来注入错误信息。如果您在 RHEL 上运行 Berkeley Internet Name Domain (BIND)作为 DNS 服务器,且没有限制区域传送,默认的 SELinux 策略会阻止
命名守护进程和其他进程使用区传输来更新区文件 [1]. -
SELinux 缓解了路径遍历攻击。攻击者可以利用 Apache Web 服务器漏洞,使用特殊元素(如
../)来访问文件系统。如果您在 enforcing 模式下运行 SELinux,策略会阻止httpd进程访问未授权的文件。 -
SELinux 可防止在非 SMAP 平台上利用内核 NULL pointer dereferences。攻击者可以利用
mmap功能中的一个漏洞将任意代码放在空页面(CVE-2019-9213)中。如果您以 enforcing 模式运行 SELinux,策略会阻止此类攻击。 -
SELinux 可防止 *PTRACE_TRACEME exploitsReact,您可以使用
deny_ptrace布尔值来保护您的系统不受 PTRACE_TRACEME 漏洞(CVE-2019-13272)的影响。这可防止攻击者获得 root 权限。 -
SELinux 会阻止 NFS 错误配置。您可以使用
nfs_export_all_rw和nfs_export_all_ro布尔值来防止网络文件系统(NFS)错误配置,如意外共享/home目录。