### 如何监控 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 工具能迅速找出被篡改的文件
