如何监控 Linux 文件操
1. Auditd
Auditd 是 Linux 内核提供的、功能最强大且最专业的审计工具。它可以记录几乎所有的系统调用,包括文件读、写、执行等操作,并能根据规则进行过滤。
优点:
全面而精准:可以精确地监控指定用户、指定目录或特定系统调用
安全性高:即使系统被入侵,攻击者也很难篡改
auditd的日志可配置性强:可以通过规则文件(
/etc/audit/audit.rules)自定义监控策略。
如何使用:
安装:大多数发行版默认已安装。如果没有,可以通过
yum install audit或apt-get install auditd来安装
添加监控规则:
- 监控
/etc/目录下所有文件的写入、修改和权限变更:
``bash``
auditctl -w /etc/ -p wa -k etc_changes
- 监控所有对
rm命令的调用:
``bash``
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目录下的创建、删除、移动和写入操作:
``bash``
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
创建基线数据库:在系统干净时运行,生成文件的哈希值数据库
``bash``
aide --init
移动数据库:将生成的
aide.db.new.gz文件改名为aide.db.gz并移动到安全位置
定期检查:
``bash``
aide --check
这会与基线数据库进行对比,并报告所有变更
适用场景:
系统加固:定期检查关键系统文件(如
/etc、/bin)是否被非法修改入侵检测:当怀疑系统被入侵时,FIM 工具能迅速找出被篡改的文件