如何监控 Linux 文件操
1. Auditd
Auditd
是 Linux 内核提供的、功能最强大且最专业的审计工具。它可以记录几乎所有的系统调用,包括文件读、写、执行等操作,并能根据规则进行过滤。
优点:
- 全面而精准:可以精确地监控指定用户、指定目录或特定系统调用
- 安全性高:即使系统被入侵,攻击者也很难篡改
auditd
的日志 - 可配置性强:可以通过规则文件(
/etc/audit/audit.rules
)自定义监控策略。
如何使用:
安装:大多数发行版默认已安装。如果没有,可以通过
yum install audit
或apt-get install auditd
来安装添加监控规则:
监控
/etc/
目录下所有文件的写入、修改和权限变更:auditctl -w /etc/ -p wa -k etc_changes
监控所有对
rm
命令的调用:auditctl -a always,exit -F arch=b64 -S unlink -S unlinkat -k file_deletion
查看日志:日志默认存放在
/var/log/audit/audit.log
,可以使用ausearch
和aureport
等工具进行查询和分析
适用场景:
- 安全审计:监控关键系统文件和目录,确保符合安全合规要求
- 事后取证:当发生安全事件时,可以从日志中追踪攻击者的文件操作行为
2. inotifywait
inotify
是 Linux 内核提供的文件系统事件监控接口,而 inotifywait
是一个命令行工具,它利用这个接口实时监控文件或目录的事件,比如创建、删除、修改等
优点:
- 实时性:可以实时监控文件系统的变化
- 轻量级:安装和使用都很简单,对系统资源占用很小
- 精确监控:可以监控特定的事件类型
如何使用:
安装:
yum install inotify-tools
或apt-get install inotify-tools
开始监控:
实时监控
/tmp
目录下的创建、删除、移动和写入操作:inotifywait -m -r -e create,delete,move,modify /tmp/
-m
:持续监控-r
:递归监控子目录-e
:指定要监控的事件
适用场景:
- 脚本化监控:可以轻松地集成到 shell 脚本中,当发生特定文件操作时,自动触发报警或执行其他操作
- 快速排查问题:例如,某个应用程序突然写入了大量日志文件,你可以用
inotifywait
来快速定位是哪个文件被修改了
3. FIM 工具
FIM 工具,如 Tripwire 和 AIDE(Advanced Intrusion Detection Environment),通过定期计算文件的哈希值(如 SHA256),来监控文件的完整性。如果哈希值发生变化,则说明文件被修改
优点:
- 强大的事后取证能力:能够准确地识别出哪些文件在何时被修改
- 防御篡改:可以检测到攻击者对系统文件、恶意软件的篡改
如何使用(以 AIDE 为例):
安装:
yum install aide
或apt-get install aide
创建基线数据库:在系统干净时运行,生成文件的哈希值数据库
aide --init
移动数据库:将生成的
aide.db.new.gz
文件改名为aide.db.gz
并移动到安全位置定期检查:
aide --check
这会与基线数据库进行对比,并报告所有变更
适用场景:
- 系统加固:定期检查关键系统文件(如
/etc
、/bin
)是否被非法修改 - 入侵检测:当怀疑系统被入侵时,FIM 工具能迅速找出被篡改的文件