### 如何监控 Linux 文件操 **1. Auditd** **`Auditd`** 是 Linux 内核提供的、功能最强大且最专业的审计工具。它可以记录几乎所有的系统调用,包括文件读、写、执行等操作,并能根据规则进行过滤。 **优点:** - **全面而精准**:可以精确地监控指定用户、指定目录或特定系统调用 - **安全性高**:即使系统被入侵,攻击者也很难篡改 `auditd` 的日志 - **可配置性强**:可以通过规则文件(`/etc/audit/audit.rules`)自定义监控策略。 **如何使用:** 1. **安装**:大多数发行版默认已安装。如果没有,可以通过 `yum install audit` 或 `apt-get install auditd` 来安装 2. **添加监控规则**: - 监控 `/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 ``` 3. **查看日志**:日志默认存放在 `/var/log/audit/audit.log`,可以使用 `ausearch` 和 `aureport` 等工具进行查询和分析 **适用场景:** - **安全审计**:监控关键系统文件和目录,确保符合安全合规要求 - **事后取证**:当发生安全事件时,可以从日志中追踪攻击者的文件操作行为 **2. inotifywait** `inotify` 是 Linux 内核提供的文件系统事件监控接口,而 **`inotifywait`** 是一个命令行工具,它利用这个接口实时监控文件或目录的事件,比如创建、删除、修改等 **优点:** - **实时性**:可以实时监控文件系统的变化 - **轻量级**:安装和使用都很简单,对系统资源占用很小 - **精确监控**:可以监控特定的事件类型 **如何使用:** 1. **安装**:`yum install inotify-tools` 或 `apt-get install inotify-tools` 2. **开始监控**: - 实时监控 `/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 为例):** 1. **安装**:`yum install aide` 或 `apt-get install aide` 2. **创建基线数据库**:在系统干净时运行,生成文件的哈希值数据库 ```bash aide --init ``` 3. **移动数据库**:将生成的 `aide.db.new.gz` 文件改名为 `aide.db.gz` 并移动到安全位置 4. **定期检查**: ```bash aide --check ``` 这会与基线数据库进行对比,并报告所有变更 **适用场景:** - **系统加固**:定期检查关键系统文件(如 `/etc`、`/bin`)是否被非法修改 - **入侵检测**:当怀疑系统被入侵时,FIM 工具能迅速找出被篡改的文件