SELinux(Security-Enhanced Linux)作为Linux系统的强制访问控制(MAC)安全模块,其策略分类是安全架构的核心。以下是SELinux三种策略类型的专业解析及技术实践指南:
定位:平衡安全性与易用性
技术特性:
- 最小特权原则:默认仅针对高风险进程(如httpd、named、dhcpd等)启用严格限制
- 上下文继承机制:非目标进程继承父进程上下文(通常是unconfined_t
)
- 策略模块化:通过.pp
策略包实现动态加载(semodule -i
)
典型应用场景:
# 查看目标进程上下文
ps -eZ | grep -E 'httpd|sshd'
# 输出示例:system_u:system_r:httpd_t:s0
配置要点:
1. 修改布尔值实现精细化控制:
bash
setsebool -P httpd_can_network_connect_db 1
2. 自定义策略模块(需安装selinux-policy-devel
):
bash
audit2allow -i audit.log -M mypolicy
semodule -i mypolicy.pp
定位:全系统强制访问控制
技术实现:
- 全域标签化:所有进程/对象必须明确定义类型(无unconfined_t
)
- 策略完整性:拒绝所有未显式允许的操作(默认DENY)
- 多级安全(MLS):支持安全分级(如TopSecret/Secret/Unclassified)
策略文件结构示例:
/etc/selinux/strict/modules/
├── base.pp
├── kernel.pp
└── services.pp
关键操作:
# 切换至严格策略(需重启)
sed -i 's/SELINUXTYPE=.*/SELINUXTYPE=strict/' /etc/selinux/config
load_policy
调试技巧:
# 分析AVC拒绝日志
sealert -a /var/log/audit/audit.log
# 生成自定义策略
audit2why < /var/log/audit/audit.log
定位:军事级信息保密
核心机制:
- Bell-LaPadula模型:实现"不下读/不上写"原则
- 分层上下文:如sensitivity:s0-s15:c0.c127
- 角色域控制:RBAC与类型增强结合
策略配置示例:
# 创建分级用户
useradd -Z staff_u mlsuser
# 设置文件分级
chcon -l s0:c100 /data/classified
验证命令:
# 查看MLS上下文
ls -lZ /data/
# 输出示例:system_u:object_r:classified_data_t:s0:c100
bash
make -C /etc/selinux/strict/policy
bash
semanage permissive -a httpd_t
mermaid
graph LR
A[audit.log] --> B(audit2allow)
B --> C[.te文件]
C --> D(checkmodule)
D --> E[.mod文件]
E --> F(semodule_package)
F --> G[.pp策略包]
掌握这些策略类型及其技术实现,可显著提升系统安全基线。建议通过sealert
和audit2allow
工具链建立持续的策略优化流程。