首页/系统/信创系统运维速查/SELinux 拒绝排查:AVC 日志与 sealert
安全加固65 条

SELinux 拒绝排查:AVC 日志与 sealert

SELinux 拦截会留下 AVC 记录:ausearch 按时间检索,sealert/audit2why 给出人话解释;先判断是标签、布尔还是策略缺失,再决定修复方式。

信创系统运维速查系统更新于 2026-10-13

拒绝记录长什么样

SELinux 拦截访问时会在审计日志里留下 AVC(Access Vector Cache)拒绝记录,字段包括被拒的进程、目标对象、操作类型与权限。排查的第一步不是急着放宽策略,而是判断属于哪一类:标签不对、布尔开关未开、还是真的缺少策略规则。这三类对应的修复方式完全不同,选错方向会把安全边界越改越宽。

基本信息

日志位置/var/log/audit/audit.log(auditd 未运行时可能在 dmesg 或 journal)
检索命令ausearch -m avc -ts recent、ausearch -m avc -ts today
解释工具sealert -a(setroubleshoot 包)、audit2why
策略编译audit2allow(放宽策略的手段,须谨慎)
修复方式restorecon 修标签、setsebool -P 开布尔、必要时定制策略
权限要求root

典型使用场景

  • 服务无法读取数据目录,日志里出现 AVC 拒绝
  • 迁移站点后页面 403,需要确认是否为标签问题
  • 排查某个自定义程序为何无法绑定端口
  • 评估拒绝记录以决定是否需要定制策略
  • 确认整改后拒绝是否消失,闭环验证

检索 AVC

检索 AVC
ausearch -m avc -ts recent            # 最近的 AVC 拒绝
ausearch -m avc -ts today | tail -50  # 今天的记录,取最后若干条
sealert -a /var/log/audit/audit.log   # 图形化解释(需 setroubleshoot 包)
audit2why < /var/log/audit/audit.log  # 命令行解释,给出人话原因
dmesg | grep -i avc | tail            # auditd 未安装时的备用入口
getenforce                            # 确认 SELinux 当前模式(Enforcing 才会拦截)

按建议处理(示例)

按建议处理(示例)
# 若是标签问题(最常见):
restorecon -Rv /path
# 若是布尔值问题:
setsebool -P httpd_can_network_connect on    # -P 表示持久化
semanage boolean -l | grep httpd             # 查看布尔项说明与当前值
# 若是自定义目录,还需登记路径规则:
semanage fcontext -a -t httpd_sys_content_t '/web(/.*)?' && restorecon -Rv /web
ausearch -m avc -ts recent                   # 验证拒绝是否消失

原因类型与修复

原因类型典型迹象修复方式
标签不符进程类型与目标对象类型不匹配restorecon 恢复,或登记 fcontext 规则
布尔未开audit2why 提示缺少某项权限setsebool -P 打开对应布尔项
端口未登记绑定非标准端口被拒semanage port -a 登记端口类型
策略确实缺失解释建议生成模块评估后用 audit2allow 定制策略
临时误判dmesg 有记录但服务正常确认为历史记录,用 -ts 限定时间范围
audit2allow 生成的放行模块属于放宽策略:只有在确认没有更小的改动方案时才考虑,生成后要记录原因与影响范围,不要用『一条命令解决所有拒绝』的思路处理。
AVC 记录的时间戳来自审计子系统:跨时区或时间未同步的机器排查前先确认时间一致(chrony),否则按时间检索会对不上。

易错点

  • 遇到拒绝直接关闭 SELinux 或切到 Permissive,问题消失但安全能力被整体放弃
  • 直接把 audit2allow 的产物装上,策略被无差别放宽,掩盖了本可通过改标签解决的小问题
  • 只看 dmesg 不看 audit.log,auditd 已接管记录时 dmesg 里只有片段,容易漏掉关键字段
  • 机器时间未同步,按时间范围检索不到对应记录,误以为没有新拒绝
  • 改完标签不执行 restorecon 验证,误认为已修复,业务实际仍被拒绝

数据来源与参考

  • man 8 ausearch
  • setroubleshoot 官方文档
  • SELinux 官方 Wiki(AVC)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌