ausearch 无法直接导出取证闭环,需结合 ausearch、ausyscall、auditctl 配置及日志时间对齐等步骤,精准匹配 unlink/unlinkat/rename 系统调用,关联进程上下文与用户身份,并确保 auditd 运行及日志完整性。

使用 ausearch 本身无法直接“导出取证闭环”,它只是审计日志的查询工具;真正实现从定位删除行为到生成可验证证据链,需结合 ausearch、ausyscall、auditctl 配置及日志时间对齐等步骤。关键在于:精准匹配删除系统调用 + 关联进程上下文 + 提取完整事件链。
锁定删除行为的核心系统调用
Linux 中文件删除主要触发 unlink、unlinkat(含 AT_REMOVEDIR)、rename(重命名为 /dev/null 或覆盖)等调用。仅搜 "deleted" 或文件名易漏判:
- 用
ausearch -m unlink,unlinkat,rename -f /path/to/file精准捕获目标文件的删/移操作 - 加
--start recent或具体时间范围(如--start 04/05/2024 14:00)避免全盘扫描 - 若不确定路径,先用
ausearch -m syscall -sc 263(unlinkat 系统调用号)缩小范围,再过滤路径
补全进程与用户上下文(取证闭环基础)
单条 unlink 记录不含执行者身份或父进程链,需关联同一 msg=audit 时间戳下的多条记录:
- 用
ausearch -m syscall -f /path/to/file --raw | aureport -f -i --key delete_file(需提前用-k delete_file标记规则) - 更可靠方式:
ausearch -m unlink,unlinkat -f /path/to/file --start today --raw | aureport -f -i --summary,再挑出可疑事件 ID,用aureport -a [event_id]查完整会话 - 重点提取字段:
uid、auid(登录 UID)、pid、ppid、comm(命令名)、exe(绝对路径)、cwd(工作目录)
一键导出结构化证据(含时间戳+上下文)
将原始审计日志转为带时间、用户、命令、路径的 CSV 或文本报告,便于归档和比对:
- 基础导出:
ausearch -m unlink,unlinkat -f "/etc/shadow" --start 12h --raw | aureport -f -i --output csv > shadow_delete_report.csv - 增强版(含进程树):
ausearch -m unlink,unlinkat -f "/tmp/secret.txt" --start 2024-04-05 10:00:00 --raw | aureport -f -i --format csv --output full | grep -E "(uid=|auid=|comm=|exe=|cwd=|path=)" > forensic_chain.csv - 注意:
--format full输出含所有字段,但需人工筛选;建议配合awk提取关键列,例如:... | awk -F',' '{print $1,$3,$5,$7,$9}' OFS=','
确保日志完整性(闭环前提)
若 auditd 未启用或日志轮转过早,ausearch 将查不到记录:
- 确认服务运行:
systemctl status auditd,且/etc/audit/rules.d/*.rules中有相关监控(如-a always,exit -F arch=b64 -S unlink,unlinkat,rename -F path=/target/dir/ -k file_delete) - 检查日志保留:
grep max_log_file /etc/audit/auditd.conf(建议 ≥100MB),并确认max_log_file_action = rotate - 导出前先备份当前日志:
cp /var/log/audit/audit.log /var/log/audit/audit_$(date +%s).log,防止分析中日志被覆盖

















