auditd 状态与丢事件核查
auditd 的可靠性取决于三件事:内核审计是否启用、是否有事件因缓冲队列溢出而丢失、日志容量与轮转配置是否够用。auditctl -s 会给出 enabled 取值与 lost 计数,后者大于零意味着审计记录存在缺口。解读时间线前先看这几项,才不会把记录缺口当成“当时什么都没发生”。
基本信息
| 状态命令 | auditctl -s,输出 enabled 取值、lost 计数与 backlog 水位 |
|---|---|
| 规则列表 | auditctl -l 查看当前实际生效的规则 |
| 配置文件 | /etc/audit/auditd.conf 中的 max_log_file、num_logs、space_left_action |
| 日志位置 | /var/log/audit/audit.log |
| enabled 取值 | 0 关闭、1 启用、2 只读模式,取值不同含义不同 |
典型使用场景
- 判断审计记录是否完整可用,评估时间线的覆盖范围
- 排查缓冲溢出造成的事件丢失
- 检查日志容量与轮转策略,确认是否会造成记录被覆盖
- 核实审计服务在事件期间是否持续运行
- 在报告中说明审计证据的可靠性与已知缺口
状态核查
状态核查
auditctl -s # 状态、enabled 取值与 lost 计数
systemctl is-active auditd # 服务是否在运行
awk -F= '/^(max_log_file|num_logs|space_left_action|disk_full_action)/ {print $0}' /etc/audit/auditd.conf
ls -lh /var/log/audit/ | head # 日志体积与轮转情况
auditctl -l | head -20 # 当前生效的规则状态字段读法
| 字段 | 含义 | 异常参考 |
|---|---|---|
| enabled | 审计启用状态,0 关闭、1 启用、2 只读 | 取值为 0 说明事件未被记录 |
| lost | 因队列溢出丢失的事件数 | 大于零表示时间线存在缺口 |
| backlog | 待处理队列长度与上限 | 接近上限说明压力高、容易继续丢事件 |
| rate_limit | 同类事件限速参数 | 限速过严会造成同类事件被丢弃 |
auditd 日志容量默认有限,max_log_file 与 num_logs 决定保留多少历史。容量不足时旧日志会被覆盖,跨越轮转点的时间线要注明边界,避免把被覆盖的时间段当成没有活动。
lost 计数非零说明内核队列曾经溢出,这段时间的审计记录并不完整。报告里必须写明缺口与大致区间,不能把“日志里没有”直接表述成“主机上没有发生”。另外,auditd 与 journald 的保留策略各自独立,评估可回溯区间时要分别确认两者的留存规模与轮转配置,不能用一个来源的覆盖范围代表全部审计证据。