首页/安全/取证与溯源速查/审计不可变模式与规则防篡改
Linux 取证135 条

审计不可变模式与规则防篡改

把审计配置置为不可变(-e 2)后规则无法在线修改,可防止攻击者临时关闭审计;该状态需要重启才能解除。

取证与溯源速查安全更新于 2026-10-13

审计不可变模式的意义

审计系统有一个不可变开关:把配置置为不可变(-e 2)后,正在运行的规则无法再被在线修改,只有重启主机才能解除。设计目的是防止攻击者拿到 root 之后用一条命令关掉审计、抹掉后续记录。核查方式是查看 auditctl -s 输出中的 enabled 值:0 表示审计关闭、1 表示正常启用、2 表示规则已不可变。值被改成 0 本身就是重要发现,说明有人主动停用了审计。

基本信息

查看命令auditctl -s,关注 enabled 与 lost 字段
取值含义0 关闭、1 启用、2 不可变
配置位置/etc/audit/rules.d/ 与 /etc/audit/audit.rules 中的 -e 2
解除方式置为不可变后需重启主机才能再次修改规则

典型使用场景

  • 确认审计系统是否处于开启状态,排除记录缺失的解释
  • 检查主机是否配置了规则保护,评估抗篡改能力
  • 排查事件期间审计被中断的时间段
  • 核对内核命令行是否带有禁用审计的参数
  • 为合规检查提供审计配置的现状证据

核查审计状态

核查审计状态
auditctl -s | grep -E 'enabled|lost|pid'      # 当前状态与丢失计数
grep -Rn '^\s*-e 2' /etc/audit/rules.d/ /etc/audit/audit.rules 2>/dev/null   # 是否配置不可变
grep -Rn 'failures\|lost' /var/log/audit/audit.log 2>/dev/null | tail -5     # 日志侧的异常提示
cat /proc/cmdline | tr ' ' '\n' | grep -i audit      # 内核参数是否影响审计
systemctl is-active auditd                          # 服务是否在运行

auditctl -s 输出读法

字段含义判读要点
enabled审计开关状态:0 / 1 / 20 表示被关闭,属重要发现
pid审计守护进程号为空说明未在运行
lost因队列满等原因丢失的事件数非零表示记录并不完整
backlog_limit事件队列容量容量过小会放大丢失风险
启用不可变后新增规则必须重启主机,运维变更流程要提前协调;日常整改窗口可以把临时关闭与再次置为不可变安排在同一次维护中完成。
lost 计数非零说明审计子系统曾因队列积压丢弃事件,此时不能把「日志中没有记录」直接解释为「事件没有发生」。
在实际案件中不要为了加规则而重启主机,重启会同时清除大量易失性证据,评估影响后再与决策方确认。

易错点

  • 看到 enabled 为 0 仍按日志缺失解释事件,结论方向错误
  • 忽略 lost 字段,把不完整的审计记录当成全量证据
  • 为新增规则重启主机,易失性证据被一并清除
  • 只改 /etc/audit/rules.d 未确认是否已被加载生效

数据来源与参考

  • auditd 官方手册(auditctl(8) -e 选项)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌