AIDE快照需重命名、校验、权限锁定三步才可用,否则aide --check比对失效;初始化前须清理残留数据库文件;必须用退出码判断结果,0为正常,1为变更,255为错误。

AIDE 的快照不是“生成完就能用”,必须完成重命名、校验、权限锁定三步,否则 aide --check 实际比对的是旧状态或直接静默失败。
初始化前必须彻底清理残留文件
残留的 /var/lib/aide/aide.db* 或自定义 aide.conf 会导致 aide --init 输出看似成功,但后续比对完全失效。常见现象是:明明改了 /etc/passwd,aide --check 却返回 0(无变更)。
- 先执行
sudo rm -f /var/lib/aide/aide.db* /etc/aide.conf - 再确认是否使用默认配置路径——多数发行版是
/etc/aide.conf,若改过DBDIR或database配置项,需同步清理对应位置 - 安装后首次运行前,确保系统已部署完毕、关键服务启动正常、无未授权变更——此时的基线才可信
aide --init 生成的不是最终数据库
aide --init 默认输出 /var/lib/aide/aide.db.new.gz,而 aide --check 只读取 aide.db.gz。不重命名 = 白跑一次。
- 运行
sudo mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz - 立即校验压缩完整性:
sudo gzip -t /var/lib/aide/aide.db.gz,失败则需重做--init - 推荐留存指纹:
sha256sum /var/lib/aide/aide.db.gz > /root/aide.db.sha256,防止数据库本身被篡改 - 数据库权限必须为
600且属主为root:root,否则aide --check可能跳过校验或报Unable to open database
比对结果不能只看 stdout,必须依赖退出码
AIDE 输出全是文本,Changed:、Added:、Removed: 混在一起,人工扫屏极易漏判。真正可靠的信号只有退出状态码。
-
0:无任何变更 -
1:检测到文件属性或内容变更(重点关注sha256字段变化) -
255:内部错误(如数据库损坏、权限不足、路径不可达) - 别写
aide --check | grep Changed,改用:aide --check && echo "OK" || echo "ALERT" - 发现
Added:或Removed:要优先排查——比内容修改更可疑,可能是后门植入或日志清理
排除规则写错等于没排除
AIDE 不支持正则,只认 glob 和显式路径。写错规则不仅无效,还可能因扫描虚拟文件系统(如 /proc)导致大量误报。
- 想忽略所有日志文件,不能写
/var/log/.*,应写/var/log/.*$(注意结尾$是 glob 通配,非正则)或更稳妥地逐条排除:/var/log/syslog.* p+i+n+u+g+s+b+sha256 - 绝对不要给
/proc、/sys、/dev写监控规则——每次扫描都变,必然报错 - 修改
aide.conf后,必须重新运行aide --init,否则新规则完全不生效 - 时间戳校验(
m和c)在系统时钟异常时会引发批量误报,比对前先运行timedatectl status确认时钟同步正常
最常被跳过的环节是重命名数据库和校验退出码——这两步一漏,整个 AIDE 就形同虚设。它不报错,也不提醒,只是默默拿一个过期甚至损坏的快照在比对。











