aureport --file 不是合法命令,需通过 auditd 文件监控规则(-w)+ ausearch 定位 + aureport 分析构建完整性追踪机制:1. 列出核心程序白名单;2. 部署 -p wa 规则监控写与属性变更;3. 用 ausearch 扫描 chmod/write 等事件。

aureport --file 并不是 aureport 的合法参数,该命令不支持 -f 或 --file 选项来直接生成“可执行程序完整性报告”。
你真正需要的,是结合 auditd 的文件监控规则(-w) + ausearch 定位访问行为 + aureport 汇总分析,构建一套面向关键二进制文件的完整性变化追踪机制。所谓“完整性报告”,在 auditd 体系中并非校验哈希,而是通过记录所有对目标文件的写、属性修改、执行等敏感操作事件,实现行为级完整性审计。
以下是可落地的自动化方案:
1. 先定义“核心可执行程序”白名单
把你要保护的程序路径明确列出,例如: ``` /bin/bash /usr/bin/python3 /usr/sbin/sshd /sbin/init /usr/bin/curl /usr/bin/wget ``` 保存为 `/etc/audit/core-binaries.list`(每行一个绝对路径)2. 部署精准文件监控规则
在 `/etc/audit/rules.d/core-integrity.rules` 中添加: ```bash # 监控所有核心二进制的写、属性变更、执行(可选) -w /bin/bash -p wa -k core_bin_bash -w /usr/bin/python3 -p wa -k core_bin_python3 -w /usr/sbin/sshd -p wa -k core_bin_sshd -w /sbin/init -p wa -k core_bin_init # ……逐行添加,或用脚本生成 ``` > ⚠️ 注意:`-p wa` 表示监控 write(写)和 attribute change(如 chmod/chown),这是判断文件被篡改的核心信号;**不建议加 `-x`(执行)用于完整性目的**,它会产生海量日志且不反映修改行为。加载规则:
sudo augenrules --load sudo systemctl restart auditd
3. 用 ausearch 提取所有篡改线索
以下命令自动扫描最近7天内对白名单文件的所有 `wa` 类事件: ```bash while IFS= read -r path; do [ -n "$path" ] && sudo ausearch -m chmod,chmodat,write -f "$path" -ts $(date -d '7 days ago' '+%m/%d/%Y %H:%M:%S') --raw 2>/dev/null done 4. 输出示例(关键字段解读) ``` File Report======================================== # date time file syscall perm comm proctitle 1. 05/22/2026 03:14:22 /usr/bin/python3 257 0200 python3 /usr/bin/python3 -c import os; os.system('sh') 2. 05/25/2026 11:08:47 /bin/bash 90 0200 bash /bin/bash -i 3. 05/26/2026 22:19:03 /usr/sbin/sshd 257 0200 sshd /usr/sbin/sshd -D ``` 重点关注: - `syscall`: `257=chmod`, `90=chown`, `2=write` → 判断是否被改权限或覆写 - `perm`: `0200` 表示 `S_IWUSR`(用户可写),若原文件本应只读(`0555`),则异常 - `comm`: 执行该操作的进程名,是否为可信工具(如 `rpm`, `dpkg`, `cp`)?5. 自动化每日报告脚本(可直接部署)
```bash #!/bin/bash REPORT_DIR="/var/log/audit/reports" DATE=$(date +%Y%m%d) mkdir -p "$REPORT_DIR"生成带时间戳的完整事件明细
sudo ausearch -m chmod,chmodat,write -f $(cat /etc/audit/core-binaries.list | paste -sd',' -) \ -ts $(date -d '1 day ago' '+%m/%d/%Y %H:%M:%S') --raw 2>/dev/null | \ aureport -f -i > "$REPORT_DIR/integrity-$(DATE).log"
同时输出简洁摘要(仅含异常条目)
if [ -s "$REPORT_DIR/integrity-$(DATE).log" ]; then echo "⚠️ 发现 $(grep -c 'File Report' "$REPORT_DIR/integrity-$(DATE).log") 个文件变更事件" | \ tee "$REPORT_DIR/summary-$(DATE).log" grep -E '^[0-9]+.' "$REPORT_DIR/integrity-$(DATE).log" | head -10 >> "$REPORT_DIR/summary-$(DATE).log" fi
设为 cron 每日执行即可。 不复杂但容易忽略:真正的完整性保障,靠的是**持续监控写入与属性变更行为**,而不是幻想 `aureport --file` 能自动比对哈希——auditd 本身不存储文件快照,它记录的是“谁、何时、以何种方式动了文件”。

















