文件完整性校验
AIDE 用预先建立的基线数据库比对文件系统的哈希与属性变化,是判断系统文件是否被替换的常用手段。它的价值取决于基线质量:基线必须来自可信状态,并且保存在与主机隔离的位置,否则攻击者可以连基线一起改掉。
基本信息
| 配置文件 | /etc/aide.conf,定义检查规则与数据库路径 |
|---|---|
| 数据库 | 已有基线库与 database_out 指定的新库 |
| 初始化 | aide --init 生成新基线库 |
| 检查 | aide --check 与基线比对并输出差异 |
| 检查内容 | 哈希、权限、属主、大小、时间戳,按规则选择 |
| 资源消耗 | 全盘检查会占用大量 IO 与时间 |
典型使用场景
- 确认关键系统文件是否被替换
- 事件发生后与可信基线比对找出改动
- 定期巡检发现异常变更
- 与包管理器校验结果互相印证
- 为系统重建提供改动清单
最小示例
最小示例
aide --init # 按规则生成新基线库
ls -l /var/lib/aide/ # 确认新库文件名与时间
aide --check # 与基线比对
aide --check | head -40 # 优先看变更清单开头
grep -E '^database|^database_out' /etc/aide.conf # 确认库文件路径配置
sha256sum /var/lib/aide/aide.db* # 库文件本身也要固化哈希输出类别与关注点
| 输出类别 | 含义 | 关注点 |
|---|---|---|
| added | 基线中不存在的新文件 | 与安装或运维记录核对 |
| removed | 基线中有但已消失的文件 | 可能被攻击者删除 |
| changed | 内容或属性发生变化 | 优先看系统二进制与配置 |
| 权限与属主 | 属性层面的改动 | 与包默认值比对 |
| 时间戳 | 与变更窗口对照 | 用于说明改动时机 |
库文件的实际名称与位置由 /etc/aide.conf 的 database 与 database_out 决定,各发行版默认值不同,不要按固定路径假设。
基线要放在只读介质或离线位置:与主机同盘存储时,攻击者能同时改动基线和被检文件,校验结果就失去了证明力。
aide --init 会覆盖数据库输出文件;对已有基线执行初始化前务必先备份,否则比对基准将永久丢失。