auditctl 的两个用途
auditctl 是审计子系统的命令行入口:-s 查看内核审计开关、缓冲区积压与丢失计数,-l 查看当前生效的规则集。它还能临时添加规则,这类规则重启即失效,用来定位问题和验证规则效果很方便。要长期生效则必须写进 /etc/audit/rules.d/ 下的规则文件。
基本信息
| 适用平台 | Linux(auditd) |
|---|---|
| 风险等级 | 中 |
| 基线要求 | 规则可见、可解释、有来源 |
| 关键命令 | auditctl -s、-l、-w、-W、-D |
| 持久化目录 | /etc/audit/rules.d/,配合 augenrules --load |
典型使用场景
- 排查审计是否真的在工作,看开关与积压情况
- 查看当前生效规则,确认没有被悄悄删改
- 临时加一条规则,验证能否捕捉到目标事件
- 在写入持久化文件前先调试规则语法
- 排查 lost 计数增长导致的证据缺失
- 应急时快速观察某个文件或命令的访问行为
状态与临时规则
状态与临时规则
auditctl -s # 查看 enabled、backlog、lost 等状态
auditctl -l # 列出当前生效的全部规则
auditctl -w /etc/ssh/sshd_config -p wa -k sshd_config # 临时监视文件写与属性变更
auditctl -W /etc/ssh/sshd_config -p wa -k sshd_config # 删除该条临时规则
auditctl -D # 清空全部规则,仅调试时使用
augenrules --load # 把 rules.d 下的规则重新载入内核输出逐列读法
| 字段 | 含义 | 判读 |
|---|---|---|
| enabled | 审计是否启用 | 1 启用、0 关闭、2 规则只读 |
| backlog | 待处理事件队列深度 | 持续增长说明处理不过来 |
| lost | 因缓冲区不足丢失的事件数 | 不为 0 即存在记录缺失 |
| rate_limit | 每秒允许的审计消息上限 | 过低会丢掉高频事件 |
| -l 输出 | 当前生效的规则列表 | 应与规则文件内容保持一致 |
auditctl 直接添加的规则重启就丢失:需要持久化时必须写进 /etc/audit/rules.d/ 下的规则文件,再执行 augenrules --load。
用 -W 删除规则时,参数必须与添加时完全一致,否则删不掉,最后只能靠 -D 清空后重来。
lost 计数持续增长说明内核审计缓冲区不足:可以调大 backlog_limit,或者减少高噪声规则,否则真正需要的记录会被丢掉。