Linux文件完整性检查-AIDE

在 Linux 系统中,最常用的文件完整性检查工具是 AIDE(Advanced Intrusion Detection Environment)。此外,你之前使用的 auditd 也可以实现对文件变更的实时监控,但两者侧重点不同:

AIDE:周期性(如每天)检查文件是否被修改,并生成报告。

auditd:实时记录对指定文件的操作(谁、何时、做了什么),但需要配置审计规则并定期分析日志。

以下分别介绍两种方式的配置方法。

文件完整性检查(File Integrity Monitoring, FIM)是安全监控的重要组成部分,它通过定期比对文件的当前状态与已知基准状态,来发现系统关键文件是否被意外或恶意修改。这对于检测入侵、配置错误以及合规性要求(如等保、PCI-DSS)至关重要。

在 Linux 系统中,最常用的文件完整性检查工具是 AIDE(Advanced Intrusion Detection Environment)。此外,你之前使用的 auditd 也可以实现对文件变更的实时监控,但两者侧重点不同:

  • AIDE:周期性(如每天)检查文件是否被修改,并生成报告。
  • auditd:实时记录对指定文件的操作(谁、何时、做了什么),但需要配置审计规则并定期分析日志。

以下分别介绍两种方式的配置方法。


一、使用 AIDE 进行周期性完整性检查

1. 安装 AIDE

# CentOS/RHEL
yum install aide -y

# Ubuntu/Debian
apt install aide -y

2. 初始化数据库

首次运行前,需要生成一个基准数据库,记录所有被监控文件的原始状态。

aide -i

该命令会在 /var/lib/aide/aide.db.new.gz 生成初始数据库。然后将其重命名为正式数据库:

mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz

3. 配置监控规则

AIDE 的配置文件为 /etc/aide.conf。你可以自定义需要监控哪些文件以及监控哪些属性(如权限、所有者、大小、哈希值等)。

常用规则示例:

# 监控 /etc 下的所有文件,但排除临时文件和日志
/etc    p+i+n+u+g+s+sha512
!/etc/.*~
!/etc/.*\.log
!/etc/.*\.pid

# 监控关键二进制文件
/bin    p+i+n+u+g+s+sha512
/sbin   p+i+n+u+g+s+sha512

# 监控用户家目录(可选)
/root   p+i+n+u+g+s+sha512
/home   p+i+n+u+g+s+sha512

# 监控系统库文件
/usr/lib p+i+n+u+g+s+sha512

# 数据库位置
database=file:/var/lib/aide/aide.db.gz
database_out=file:/var/lib/aide/aide.db.new.gz

  • p:权限
  • i:inode
  • n:链接数
  • u:用户
  • g:组
  • s:大小
  • sha512:使用 SHA512 哈希校验内容

4. 执行检查

aide --check > /var/log/aide/check_$(date +%Y%m%d).log 2>&1

这样可以将标准输出和错误输出都保存到以日期命名的日志文件中。

也可以同时输出到终端和文件:

aide --check | tee /var/log/aide/last_check.log

对/etc/passwd做一点修改后,输出结果如下:

AIDE 0.15.1 found differences between database and filesystem!!
Start timestamp: 2026-03-29 17:54:05

Summary:
  Total number of files:	22577
  Added files:			0
  Removed files:		0
  Changed files:		1


---------------------------------------------------
Changed files:
---------------------------------------------------

changed: /etc/passwd

---------------------------------------------------
Detailed information about changes:
---------------------------------------------------


File: /etc/passwd
 Size     : 1378                             , 1383
 Inode    : 16781641                         , 16780667
 SHA512   : roHzkJz8Ia1D3dP7EBPL42gv6lpY5t+v , cB1UH7FxobGHoNudHqups/240jCJ+jpK
You have new mail in /var/spool/mail/root

5. 定期自动执行

可以通过 crontab 每天运行检查,并将结果通过邮件发送给管理员。

# 编辑 root 的 crontab
crontab -e

# 添加以下行(每天凌晨 2 点执行)
0 2 * * * /usr/bin/aide --check > /var/log/aide/check_$(date +%Y%m%d).log 2>&1

6. 更新数据库

当系统进行了合法的变更(如软件更新、配置修改)后,需要更新基准数据库,避免误报。

aide --update
mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz

二、使用 auditd 实时监控关键文件变更

如果你需要实时记录是谁在何时修改了哪些关键文件,可以使用 auditd。你之前的 ausearch 查询已经展示了这一点。

1. 添加监控规则

例如,监控 /etc/passwd/etc/shadow 的写入和属性变更:

auditctl -w /etc/passwd -p wa -k passwd_changes
auditctl -w /etc/shadow -p wa -k shadow_changes
  • -w:监控文件或目录
  • -p:监控的权限(r=读,w=写,x=执行,a=属性变更)
  • -k:自定义标签,便于搜索

2. 使规则永久生效

将规则写入 /etc/audit/rules.d/ 目录下的文件(如 key_files.rules):

echo "-w /etc/passwd -p wa -k passwd_changes" >> /etc/audit/rules.d/key_files.rules
echo "-w /etc/shadow -p wa -k shadow_changes" >> /etc/audit/rules.d/key_files.rules

然后重新加载规则:

augenrules --load
service auditd restart

3. 查看实时变更

使用 ausearch 查询特定标签的事件:

ausearch -k passwd_changes -i

或使用 aureport 生成摘要。

4. 注意事项

  • auditd 会产生大量日志,需配置好日志轮转(在 /etc/audit/auditd.conf 中设置 max_log_filemax_log_file_action)。
  • 仅监控关键文件,避免监控整个 /etc 目录导致日志爆炸。

三、两种方式的对比与选择

特性 AIDE auditd
检测方式 周期性比对(如每天) 实时监控
记录内容 文件属性、哈希值变化 操作详情(谁、何时、什么操作)
资源消耗 扫描时较高,平时无 持续占用少量资源,日志量可能大
适用场景 合规性检查、事后取证 实时入侵检测、操作审计
配置复杂度 较低 中等

建议

  • 对于合规性要求(如等保2.0),建议部署 AIDE 并每天执行检查。
  • 对于关键系统文件(如 /etc/passwd/etc/shadow/etc/sudoers),可同时使用 auditd 实时监控,以便快速定位责任人。
  • 结合两者可以达到更全面的文件完整性保护。

四、检查结果的解读与响应

AIDE 报告示例

Changed files:
/etc/passwd
/etc/shadow

一旦发现非预期的变更,应立即:

  1. 确认变更是否由合法管理员操作(可结合 auditd 日志查找谁修改了文件)。
  2. 如为恶意修改,立即启动应急响应,恢复文件并排查入侵途径。
  3. 如果变更是合法的,请更新 AIDE 数据库以避免下次误报。

auditd 日志分析

通过 ausearch -k passwd_changes -i 可以查看到谁、使用什么工具、何时修改了文件。这在应急响应中至关重要。


五、总结

配置文件完整性检查是保障系统安全的基础工作。你可以根据实际需求选择 AIDE 或 auditd,或者两者组合使用。记得将检查结果纳入日常监控,并定期更新基准库,确保检测的有效性。

如果你有特定的合规要求(如等保、PCI),还需要根据标准调整检查范围和频率。

posted @ 2026-03-30 19:41  kunlunsansheng  阅读(137)  评论(0)    收藏  举报