Linux SELinux日志如何查看
小樊
38
2025-11-16 14:42:03
查看 Linux SELinux 日志的常用方法
一 核心日志位置与前提
- SELinux 的访问拒绝等事件由 auditd 记录到 /var/log/audit/audit.log,日志中的关键标识为 avc: denied。若未安装或未启动 auditd,将看不到详细的 AVC 拒绝日志。可用以下命令检查与启用:
- 检查状态:sudo systemctl status auditd
- 启动并设为开机自启:sudo systemctl start auditd && sudo systemctl enable auditd
- 安装组件(RHEL/CentOS):sudo yum install audit;Debian/Ubuntu:sudo apt-get install auditd
- 注意:在 SELinux 为 disabled 模式时不会产生 AVC 拒绝日志,排查前请确认不是该模式。
二 快速定位拒绝事件
- 直接检索 AVC 拒绝行(最常用):
- sudo grep ‘avc: denied’ /var/log/audit/audit.log
- 使用 ausearch 按事件类型与时间过滤:
- 查看所有 AVC 事件:sudo ausearch -m avc
- 查看最近一小时:sudo ausearch -m avc -ts recent -1h
- 结合进程过滤:sudo ausearch -m avc -ts recent -1h -p
- 生成 SELinux 事件报告:
- 说明:ausearch 的事件类型参数既可用 -m avc,也可用 -m selinux(不同系统/版本支持略有差异)。
三 可读性更强的分析工具
- 使用 sealert 对 audit.log 进行解析并给出处理建议:
- 安装(RHEL/CentOS):sudo yum install setroubleshoot-server
- 分析全部:sudo sealert -a /var/log/audit/audit.log
- 按提示 ID 查看:sudo sealert -l
- 辅助命令(将 AVC 转换为可理解说明):
- ausearch -m avc --ts today | audit2why
- audit2allow -w(配合 ausearch 输出,给出更直观的解释与可选策略模块)。
四 常见排障命令速查
- 查看 SELinux 运行状态:getenforce 或 sestatus
- 临时切换为宽容模式(仅记录不阻断,便于排障):sudo setenforce 0
- 查看进程或用户的 SELinux 上下文:
- 查看某目录应有的默认上下文:matchpathcon /path
- 在日志缺失时,排查是否因策略规则使用了 dontaudit 导致静默:
- 检查:seinfo | grep -E ‘(dontaudit|allow)’
- 临时禁用 dontaudit 并重建策略:semodule --disable_dontaudit --build(排查完成后建议恢复:semodule --build)