CentOS 系统中 SELinux 安全机制深度解析
1. 为何使用 SELinux
传统的自主访问控制(DAC)模型存在一个主要问题,许多服务必须以 root 用户身份运行。这可能是因为它们需要访问低编号的 TCP 端口、切换到用户登录会话,或者需要访问其他受限资源。在传统的 DAC 模型下,一个被入侵或配置错误的服务可能会让攻击者完全绕过所有安全措施,获得系统的完全访问权限,这被称为权限提升。
SELinux 通过增加另一层安全检查来减少与 DAC 相关的问题。如果一个被入侵的服务以 root 用户身份运行,并且试图访问该服务正常运行不需要的文件,访问将被拒绝,从而防止该服务获得更多的访问权限。
有人可能会认为这听起来很像访问控制列表(ACLs)。ACLs 可以提供细粒度的安全控制,但它们仍然是 DAC 的一种形式。用户可以更改自己的 ACLs,而 root 用户或任何以 root 用户身份运行的进程可以更改和绕过任何 ACL。
CentOS 预装了 SELinux,它有三种运行模式:禁用(Disabled)、宽容(Permissive)和强制(Enforcing)。安装 CentOS 后,系统会提示你选择首选的 SELinux 模式。
- 禁用模式 :SELinux 完全禁用,CentOS 仅提供传统的 DAC 安全机制。
- 宽容模式 :任何安全策略失败都会生成警告,但不会阻止访问。
- 强制模式 :安全策略违规会导致访问被拒绝。
需要注意的是,启用 SELinux 并不会禁用传统的 DA