SELinux (Security-Enhanced Linux) 是由美国国家安全局(NSA)开发的一种强制访问控制(MAC)安全机制,自Linux 2.6内核起被集成到主流Linux发行版中。
每个系统对象(文件、进程、端口等)都有一个安全上下文标签,格式为:
user:role:type[:level]
示例:
system_u:system_r:httpd_t:s0
SELinux策略定义了: - 类型(Type)之间的关系 - 角色(Role)可以访问哪些类型 - 用户(User)可以担任哪些角色
二进制格式的策略规则集合,通常位于/etc/selinux/[policy_name]/policy/
访问是否被允许取决于: - 源类型(进程的type) - 目标类型(资源的type) - 对象类别(文件、目录、套接字等) - 访问权限(读、写、执行等)
模式 | 描述 | 适用场景 |
---|---|---|
Enforcing | 强制执行策略,拒绝未授权的访问 | 生产环境 |
Permissive | 记录违规但不阻止,用于审计和策略调试 | 策略开发/测试 |
Disabled | 完全禁用SELinux | 不推荐(安全风险) |
查看当前模式:
getenforce
临时切换模式:
setenforce 0 # Permissive
setenforce 1 # Enforcing
sestatus
- 查看SELinux状态chcon
- 更改文件安全上下文restorecon
- 恢复文件默认安全上下文semanage
- 管理策略元素(端口、布尔值等)audit2allow
- 从审计日志生成策略模块SELinux提供大量可调节的布尔值开关:
getsebool -a # 列出所有布尔值
setsebool -P httpd_can_network_connect on # 永久设置布尔值
grep avc /var/log/audit/audit.log | audit2allow -M mypolicy
semodule -i mypolicy.pp
grep avc /var/log/audit/audit.log
sealert
分析:sealert -a /var/log/audit/audit.log
chcon
或restorecon
)SELinux虽然增加了系统复杂性,但提供了强大的安全保护层。正确配置后,它可以显著减少系统被攻陷的风险,是Linux系统安全的重要防线。