ausearch 是审计日志的“探针”,负责精准定位原始事件,aureport 才生成可读报告;应始终用 auid(而非 uid)标识用户,结合 execve 与文件系统调用串联行为,并通过 --raw 输出供 aureport 格式化为 CSV 或完整上下文。

ausearch 本身不生成报告,它是审计日志的“探针”,负责精准定位原始事件;真正生成可读报告的是 aureport。两者配合,才能把零散日志变成行为轨迹——关键在于用 ausearch 先捞出干净、带上下文的原始数据,再喂给 aureport 格式化输出。
锁定目标:用 auid 而不是 uid
普通用户执行 sudo 或 su 后,UID 会变,但 auid(登录会话原始 UID)始终不变,这才是可追溯的真实身份锚点。
- 查某用户的 auid:id -u username
- 确认该 auid 的近期活动:sudo ausearch --loginuid $(id -u username) --start today | head -5
- 避免被切换身份干扰,所有后续查询都用 -ua 1001(而非 -ui 0)
聚焦动作:抓 execve + 关键系统调用
命令执行只走 execve,文件操作依赖 unlink、unlinkat、openat 等调用。单查一条不够,得把“谁发起了命令”和“命令动了什么”串起来。
- 提取某用户全部命令(含参数):sudo ausearch -m execve -ua 1001 --start today --raw | aureport -f -i
- 查对敏感文件的操作:sudo ausearch -ua 1001 -m unlink,unlinkat,openat -f /etc/shadow --raw
- 合并命令与文件事件:sudo ausearch -ua 1001 -m execve,file -ts today --raw
导出可用数据:raw 输出 + aureport 格式化
ausearch 加 --raw 输出机器可读的原始格式,这是 aureport 解析的基础;直接加 -i 虽能看中文,但字段不规整,不利于后续处理。
- 生成 CSV 报告(含时间、用户、命令、路径):sudo ausearch -m execve -ua 1001 --start yesterday --raw | aureport -f -i --format csv > /tmp/cmd_report.csv
- 提取完整进程上下文(comm、exe、cwd、auid):sudo ausearch -m execve -ua 1001 --start recent --raw | aureport -f -i --output full | grep -E "(comm=|exe=|cwd=|auid=)"
- 快速筛查高危动作:sudo ausearch -m execve -ua 1001 | grep -E "(rm -rf|dd if=|chmod 777)"
提速技巧:预打标签 + 指定归档文件
TB 级日志下,硬扫极慢。提前在 audit 规则中打 -k 标签,再用 ausearch 直接按 key 查,响应可压到秒级。
- 为 sudo 行为打标:auditctl -a always,exit -F arch=b64 -S execve -F path=/usr/bin/sudo -k sudo_by_auid1001
- 秒级检索该用户所有 sudo 记录:sudo ausearch -k sudo_by_auid1001 -i
- 只查昨天归档日志(跳过当前活跃日志):sudo ausearch -if /var/log/audit/audit.log.1 -k sudo_by_auid1001 -i

















