
Linux系统中用AIDE(Advanced Intrusion Detection Environment)做文件完整性检测,核心是建立可信基线并定期比对。关键在于初始化数据库要干净、比对策略要合理、结果分析要准确。
安装与初始化AIDE数据库
AIDE默认不预装,需手动安装。以主流发行版为例:
- CentOS/RHEL:yum install aide 或 dnf install aide
- Ubuntu/Debian:apt install aide
安装后先生成初始配置文件(通常为/etc/aide.conf),再初始化数据库:
- 运行aide --init,生成/var/lib/aide/aide.db.new.gz
- 重命名并解压: mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gzgunzip /var/lib/aide/aide.db.gz
这一步必须在系统刚部署、未被入侵且关键服务已配置完毕后执行,否则基线本身不可信。
定制化检测规则(重点在/etc/aide.conf)
AIDE默认配置较宽泛,生产环境建议精简并聚焦关键路径。常用规则示例:
- /bin/ p+i+n+u+g+s+b+m+c+acl+selinux+xattrs+sha256 —— 二进制目录,关注权限、属主、哈希
- /etc/ p+i+n+u+g+s+b+m+c+md5+acl+selinux —— 配置文件,启用md5兼顾性能
- !/etc/.* —— 排除隐藏文件(如临时备份)
- !/usr/src/ —— 排除源码目录,避免频繁变更干扰
规则中各字母含义需明确:p=权限,i=inode,n=链接数,u/g=用户/组,s=大小,m=mtime,c=ctime,sha256=校验和。按需组合,避免过度检测拖慢速度。
定期检查与结果解读
日常检测只需运行:aide --check。输出分三类:
- Added:新增文件(如攻击者上传的webshell)
- Removed:删除文件(如系统命令被替换后原文件消失)
- Changed:属性或内容变更(重点关注sha256或md5字段是否变化)
若发现异常,先确认是否为运维操作(如升级、配置更新)。非预期变更需立即排查:
– 检查文件修改时间与系统日志(journalctl -u systemd --since "2 hours ago")
– 核对进程关联(lsof +D /path/to/file)
– 提取文件哈希比对已知安全版本
自动化巡检与告警(简单可行方案)
将AIDE检查集成进crontab,配合邮件通知:
- 编辑定时任务:crontab -e
- 添加行(每周日凌晨2点执行):
0 2 * * 0 /usr/bin/aide --check | /usr/bin/mail -s "AIDE Report $(date +%F)" admin@company.com
为减少误报,可过滤掉已知良性变更(如日志轮转):
aide --check | grep -E "(Added|Removed|Changed)" | grep -v "/var/log/"










