温馨提示×

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 事件报告:
    • sudo aureport -m 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 运行状态:getenforcesestatus
  • 临时切换为宽容模式(仅记录不阻断,便于排障):sudo setenforce 0
  • 查看进程或用户的 SELinux 上下文:
    • 进程:ps -eZ
    • 当前用户:id -Z
  • 查看某目录应有的默认上下文:matchpathcon /path
  • 在日志缺失时,排查是否因策略规则使用了 dontaudit 导致静默:
    • 检查:seinfo | grep -E ‘(dontaudit|allow)’
    • 临时禁用 dontaudit 并重建策略:semodule --disable_dontaudit --build(排查完成后建议恢复:semodule --build

0