aide是最稳妥的文件完整性监控工具,因其原生支持权限、属主、sha256、inode等全字段校验,且具备压缩数据库与增量比对能力;需精简配置规则、严格设置数据库权限并准确命名,避免误报与失效。

怎么选工具:AIDE 是当前最稳妥的选择
直接用 aide,别折腾 md5sum 或手写脚本做系统级扫描。MD5 已被证实可碰撞,md5sum 只防误损坏,不防恶意替换;纯 sha256sum 脚本能查内容,但漏权限、属主、硬链接数、ACL、SELinux 上下文这些关键元数据。aide 原生支持全部字段,且数据库可压缩、可增量比对,适合长期运行。
/etc/aide.conf 规则怎么写才不误报
默认配置太宽泛,一跑就满屏 Changed,实际多数是日志或临时文件刷新导致的。必须手动精简:
- 定义精简规则别名,例如:
F = p+i+n+u+g+s+m+c+sha256(权限、inode、链接数、用户、组、大小、mtime、ctime、SHA256) - 只监控真正关键路径:
/bin F、/sbin F、/usr/bin F、/etc/ssh/ F、/etc/pam.d/ F - 排除项必须写在对应监控路径之前,且路径要精确:
!/var/log/、!/tmp/、!/proc/、!/sys/、!/run/、!/etc/.*~、!/etc/*.log - 检查语法是否合法:
sudo aide --config-check,无输出才算通过
数据库初始化和定时任务最容易错在哪
两个地方一错,整个扫描就失效:
-
aide --init生成的是/var/lib/aide/aide.db.new.gz,必须手动重命名为/var/lib/aide/aide.db.gz,否则aide --check会报database not found - 数据库文件权限必须设为
600:sudo chmod 600 /var/lib/aide/aide.db.gz,否则非 root 用户可能篡改或读取 - crontab 里不能只依赖
grep输出发邮件——aide --check成功返回0,发现变更返回1,出错返回2;只管道grep会漏掉2(比如数据库损坏、权限不足),建议加退出码判断逻辑 - 日志路径别写错:
database=file:/var/lib/aide/aide.db.gz中的.gz、斜杠、大小写都必须完全匹配配置文件
怎么看出告警是真的入侵而不是运维操作
收到 Added、Removed、Changed 不代表立刻断定被黑,得看上下文:
-
Added最危险——查新增文件路径是否在/tmp、/dev/shm、/var/www等可写目录;用stat -c "%y %U %G" /path/to/file看创建时间与属主 -
Removed比Changed更可疑——比如/usr/bin/file消失,可能是攻击者清理痕迹,优先核对 RPM 包状态:rpm -V file -
Changed要看具体字段:如果只有m(mtime)变而sha256不变,可能是 touch 或日志轮转;如果sha256变了,再结合journalctl --since "2 hours ago" | grep -i "update\|upgrade"排查是否刚执行过更新 - 别只看邮件摘要,手动跑一次
sudo aide --compare,它会输出新旧哈希值对比,能确认是不是真内容改动
aide --init。早一小时,可能就把后门也当成可信状态存进数据库了。











