温馨提示×

Ubuntu如何调试SELinux问题

小樊
32
2025-12-28 05:49:50
栏目: 智能运维

Ubuntu 调试 SELinux 的实用流程

一 环境准备与启用

  • 安装工具与策略包:sudo apt update && sudo apt install selinux-basics selinux-policy-default auditd audispd-plugins setools
  • 启用 SELinux:sudo selinux-activate(设置启动参数)
  • 检查状态:getenforce / sestatus(应看到 Enforcing/Permissive/Disabled
  • 如未启用成功,可在 /etc/default/grubGRUB_CMDLINE_LINUX_DEFAULT 中加入 security=selinux,然后更新 GRUB 并重启
  • 注意:在 Ubuntu 上 SELinux 的支持相对有限,若需完整特性可考虑 RHEL/CentOS 等发行版

二 快速定位 AVC 拒绝

  • 确认审计服务:sudo systemctl enable --now auditd
  • 实时查看拒绝日志:sudo tail -f /var/log/audit/audit.log | grep -i avc
  • 按时间检索:sudo ausearch -m avc -ts today
  • 生成 SELinux 事件报告:sudo aureport -m selinux
  • 解释拒绝原因:sudo ausearch -m avc -ts recent | audit2why
  • 辅助诊断:sudo sealert -a /var/log/audit/audit.log(若已安装 setroubleshoot)

三 上下文与策略修复

  • 查看文件/进程上下文:ls -Z /path;ps -eZ | grep <进程名>
  • 修复错误上下文:sudo restorecon -Rv /path
  • 自动生成最小允许规则(先 permissive 验证,再生成模块):
    • grep -i denied /var/log/audit/audit.log | audit2allow -M mypol
    • sudo semodule -i mypol.pp
  • 编译安装自定义模块(.te → .pp):
    • 编写 custom_policy.te → make -f /usr/share/selinux/devel/Makefile
    • sudo semodule -i custom_policy.pp
  • 验证:重启服务或复现操作,确认不再出现 AVC

四 模式切换与应急

  • 临时切换为宽容模式(记录拒绝但不阻断):sudo setenforce 0
  • 临时恢复强制模式:sudo setenforce 1
  • 永久禁用:编辑 /etc/selinux/config,将 SELINUX=enforcing 改为 SELINUX=disabled,保存并重启
  • 建议仅在排障时短时置于 Permissive,避免长期降低安全基线

五 常见排错清单

  • 审计服务未运行导致无 AVC 日志:sudo systemctl enable --now auditd
  • 未安装分析工具:sudo apt install setools auditd
  • 文件/目录上下文错误:用 ls -Z 核对,执行 restorecon -Rv 修复
  • 策略过严:用 audit2allow 生成建议规则,优先最小权限,逐步验证
  • 需要更友好的解释:使用 audit2whysealert 辅助定位
  • 生产环境变更前先备份策略与关键配置,变更后及时回归验证

0