SELinux在Ubuntu中的作用
小樊
41
2025-12-28 05:48:49
SELinux在Ubuntu中的作用与定位
核心作用与工作方式
- 在 Ubuntu 上,SELinux 提供 强制访问控制(MAC),以比传统 DAC(自主访问控制) 更细粒度地限制进程对文件、目录、端口、套接字等资源的访问,遵循 最小权限原则。即使进程以 root 身份运行,超出策略允许的操作也会被拒绝。SELinux 通过给主体与客体打上 安全上下文(user:role:type:level) 并依据策略规则进行判定来实施控制。常见工作模式包括:Enforcing(强制执行)、Permissive(仅记录不阻断)、Disabled(禁用)。
在Ubuntu中的默认状态与兼容性
- Ubuntu 默认不启用 SELinux,而是使用 AppArmor 作为默认的 LSM(Linux 安全模块)。在 Ubuntu 上启用 SELinux 属于可选方案,官方与社区的可用性与功能覆盖度相对 RHEL/CentOS/Fedora 等发行版要弱,遇到复杂场景时可能需要更多手工策略调优。因此,是否启用 SELinux 应结合应用合规需求与运维能力综合评估。
启用后的关键管理要点
- 状态与模式
- 查看状态:
getenforce、sestatus
- 临时切换:
sudo setenforce 0|1(仅在已启用且非 Disabled 时有效)
- 永久生效:编辑 /etc/selinux/config 中的
SELINUX=enforcing|permissive|disabled 并重启
- 安全上下文与策略
- 查看标签:
ls -Z、ps -eZ
- 修复标签:
restorecon -Rv /path
- 策略开关:使用
setsebool -P <name> on|off 调整布尔值以开启/关闭特定功能
- 审计与排错:查看 /var/log/audit/audit.log,必要时用
ausearch -m avc -ts recent 检索 AVC 拒绝日志,定位并修正策略或标签问题
典型应用场景与注意事项
- 适用场景
- 需要对关键服务(如 Web、数据库、SSH)实施细粒度边界控制,降低被攻破后的横向移动风险
- 合规要求必须使用 MAC 框架来约束进程与数据的访问
- 注意事项
- 在 Ubuntu 上启用与维护成本较高,功能覆盖与工具链不如 RHEL/CentOS/Fedora 完备;若对 SELinux 依赖较强,优先考虑这些发行版以获得更顺畅的体验