温馨提示×

centos selinux日志分析步骤

小樊
45
2025-11-25 18:20:05
栏目: 智能运维

CentOS SELinux 日志分析步骤

一 准备与定位日志来源

  • 确认 SELinux 运行状态:getenforce(返回 Enforcing/Permissive/Disabled),sestatus -v 查看详细状态与策略路径。
  • 确认审计服务:auditd 负责写入 /var/log/audit/audit.log;若未运行,部分消息会进入 /var/log/messages
  • 快速查看 AVC 拒绝概况:aureport | grep AVC;实时查看:journalctl | grep AVC
  • 安装常用分析工具(最小化系统可能未预装):yum -y install audit audit-libs setroubleshoot-server(或 setroubleshoot)。

二 快速定位 AVC 拒绝

  • 按时间范围检索:ausearch -m AVC,USER_AVC,SELINUX_ERR -ts <开始时间> -te <结束时间>(时间格式:YYYY-MM-DD HH:MM:SS)。
  • 查看最近的拒绝:ausearch -m AVC,USER_AVC,SELINUX_ERR -ts recent
  • 按进程检索:ausearch -m AVC -p <PID>;按文件检索:ausearch -m AVC -f <文件路径>
  • 直接在日志中过滤:grep -i "denied" /var/log/audit/audit.logjournalctl | grep AVC
  • 示例 AVC 关键信息:
    • type=AVCavc: denied { getattr }
    • comm="httpd"(进程名)、pid=...
    • path="/var/myserver/services"(目标路径)
    • scontext=system_u:system_r:httpd_t:s0(主体上下文)
    • tcontext=unconfined_u:object_r:var_t:s0(目标上下文)
    • tclass=filepermissive=0(是否宽容模式)

三 解读 AVC 并给出修复方案

  • 使用诊断工具生成可读报告与建议:sealert -a /var/log/audit/audit.log。报告会给出高置信度修复步骤,例如:
    • 文件标签错误:建议执行 restorecon -v <文件或目录> 恢复默认安全上下文。
    • 策略缺失:建议用 audit2allow 生成本地策略模块。
  • 分析为何被拒:audit2why < /var/log/audit/audit.log,输出拒绝原因及是否可通过策略模块放行。
  • 生成并(临时)加载本地策略模块:audit2allow -a -M mypolicy(生成 mypolicy.pp 与 mypolicy.te),semodule -i mypolicy.pp
  • 场景示例(目录标签错误):
    • 现象:httpd 访问 /var/myserver/services 被拒,AVC 显示 tcontext=...:var_t
    • 修复:restorecon -Rv /var/myserver/services,或设置正确 fcontext 后恢复:
      • semanage fcontext -a -t httpd_sys_content_t '/var/myserver/services(/.*)?'
      • restorecon -Rv /var/myserver/services

四 常见修复动作对照表

症状与线索 可能原因 推荐操作
AVC 中目标上下文为 var_tdefault_t 等非预期类型 文件/目录标签错误 restorecon -Rv <路径>;必要时用 semanage fcontext 设置默认标签后恢复
AVC 提示缺失 TE allow 规则 策略未覆盖该访问 audit2allow -a -M <name> 生成模块,semodule -i <name>.pp
新目录作为 DocumentRoot 或数据目录 默认 fcontext 不匹配服务类型 为目录设置正确 fcontext(如 httpd_sys_content_t),再 restorecon
服务需监听非常规端口 端口类型未允许该服务 semanage port -a -t <svc>_port_t -p tcp <端口>
临时需要收集完整拒绝日志 生产环境不便立刻修复 将 SELinux 设为 Permissive 复现问题,定位后再恢复 Enforcing(修改 /etc/selinux/configSELINUX=,重启;用 sestatus 确认)

五 日志轮替与长期维护

  • audit.log 默认不自动轮替,建议配置 logrotate 或使用系统自带策略,避免日志过大影响分析。
  • 建议保留一段时间的审计日志,便于回溯;对高频服务可结合 ausearch -ts recent 快速筛查最新拒绝。
  • 变更文件标签或策略后,使用 restoreconsemodule -l | grep <name> 校验生效状态。

0