1. SELinux 基础概念与工作原理
SELinux(Security-Enhanced Linux)是美国国家安全局(NSA)开发的一种强制访问控制(MAC)安全机制,它通过为系统中的每个进程、文件和网络端口等对象分配安全上下文(Security Context),并基于策略规则严格控制这些对象之间的交互,从而提供比传统Linux自主访问控制(DAC)更细粒度的安全防护。
1.1 安全上下文详解
SELinux安全上下文由四个部分组成,格式为:user:role:type:sensitivity。以system_u:system_r:sshd_t:s0为例:
- user:标识创建或拥有该对象的用户身份(如system_u表示系统用户)
- role:定义对象的角色(如system_r表示系统角色)
- type:最重要的部分,决定访问控制规则(如sshd_t表示SSH服务类型)
- sensitivity:多级安全(MLS)相关,通常为s0
查看文件上下文示例:
bash复制ls -Z /etc/passwd
# 输出示例:system_u:object_r:passwd_file_t:s0 /etc/passwd
查看进程上下文示例:
bash复制ps -Z -C nginx
# 输出示例:system_u:system_r:httpd_t:s0 1234 ? 00:00:00 nginx
1.2 SELinux三种工作模式
-
Enforcing模式(强制模式):
- 默认工作模式
- 严格执行所有策略规则,拒绝任何未经明确允许的操作
- 违规行为会被记录到/var/log/audit/audit.log
- 生产环境推荐模式
-
Permissive模式(宽容模式):
- 仅记录违规行为而不阻止
- 用于策略调试和问题排查
- 可通过
setenforce 0临时切换
-
Disabled模式(禁用模式):
- 完全关闭SELinux功能
- 需要重启系统生效
- 不建议使用,会导致系统失去MAC保护
模式管理命令:
bash复制# 查看当前模式
ge
