Ubuntu 启用与配置 SELinux 的实操指南
一 背景与准备
- Ubuntu 默认使用 AppArmor,如要使用 SELinux 需先安装并启用相关组件,再切换安全框架。准备步骤:
- 安装基础工具与策略包(不同版本包名略有差异):
- sudo apt update
- sudo apt install selinux-basics selinux-utils selinux-policy-default auditd setools
- 激活 SELinux(会设置内核启动参数并准备策略环境):
- 重启后验证:
- sestatus(应显示 enabled,Current mode 为 Permissive 或 Enforcing)
- getenforce(查看当前运行模式)
- 说明:首次从“禁用”切换到“启用”时,系统可能需要一次全量文件上下文重标,见下文“首次启用注意事项”。
二 启用与模式切换
- 三种模式与用途:
- Disabled:完全关闭(不建议)
- Permissive:仅记录拒绝事件,不阻断(用于排错)
- Enforcing:强制执行策略(生产推荐)
- 常用操作:
- 查看状态:
- 临时切换(重启失效):
- sudo setenforce 1(Enforcing)/ 0(Permissive)
- 永久生效(编辑配置文件):
- sudo nano /etc/selinux/config
- 设置:SELINUX=enforcing;SELINUXTYPE=targeted(或 minimum/mls)
- 保存并重启
- 重要提示:
- 从 Disabled 直接改为 Enforcing 容易因文件标签缺失导致服务异常,建议先设为 Permissive 观察日志,再改为 Enforcing。
- 若曾通过内核参数禁用(如 selinux=0 或 enforcing=0),需编辑 /etc/default/grub,移除相关参数后更新 GRUB 并重启:
- grub2-mkconfig -o /boot/grub2/grub.cfg(BIOS)
- grub2-mkconfig -o /boot/efi/EFI/*/grub.cfg(UEFI,路径因平台而异)
- 首次启用或长期禁用后启用,建议创建 /.autorelabel 并重启,触发全量重标,避免上下文错误导致服务启动失败。
三 安全加固与运维要点
- 管理安全上下文与标签:
- 查看:ls -Z、ps -eZ、secon
- 修复/重标:restorecon、fixfiles、setfiles(新增策略或迁移数据后执行)
- 策略与布尔值调优:
- 查看/切换布尔值:getsebool、setsebool -P(加 -P 永久生效)
- 例:限制用户从家目录执行程序
- sudo setsebool -P allow_user_exec_content off
- 模块管理:semodule -l(列出现有模块)、必要时用 audit2allow 生成本地策略模块并加载(先分析日志,最小化授权)
- 日志与排错:
- 审计日志:/var/log/audit/audit.log
- 辅助分析:ausearch、sealert(图形/文本分析工具)
- 排错流程建议:Permissive 模式验证 → 依据日志定位 → 用布尔值/本地模块最小化放行 → 回到 Enforcing。
四 与防火墙和其他安全措施的协同
- SELinux 是 MAC 层,应与网络层防护协同:
- Ubuntu 常用 UFW 做基础防火墙:
- sudo ufw enable
- sudo ufw allow 22/tcp,80/tcp,443/tcp
- sudo ufw status verbose
- 同时做好系统基线与最小化:
- 及时更新(apt update/upgrade)
- 仅开启必需服务,禁用不必要服务
- 强化 SSH(禁用 root 登录、使用密钥登录、按需改端口)
- 配置密码/口令策略与登录审计
- 以上措施与 SELinux 互补,能显著降低攻击面并提升整体安全态势。
五 常见注意事项与最佳实践
- 默认策略选择:优先使用 targeted,在可控范围内逐步引入更严格的 mls/minimum。
- 变更节奏:先 Permissive 验证,再 Enforcing;任何策略调整遵循“最小权限”原则。
- 文件与数据迁移:拷贝后执行 restorecon -R 修正标签,避免因标签错误引发访问拒绝。
- 容器与虚拟化:确保宿主机与客体(容器/VM)策略一致,必要时为容器加载专用模块。
- 备份与回滚:变更前备份 /etc/selinux/config 与关键策略模块;保留回滚方案。
- 性能影响:SELinux 会带来一定开销,但在正确配置下通常可控;以安全收益为先,结合业务压测验证。