### 如何监控 Linux 文件操

1. Auditd

`Auditd` 是 Linux 内核提供的、功能最强大且最专业的审计工具。它可以记录几乎所有的系统调用，包括文件读、写、执行等操作，并能根据规则进行过滤。

优点：

- 全面而精准：可以精确地监控指定用户、指定目录或特定系统调用
- 安全性高：即使系统被入侵，攻击者也很难篡改 `auditd` 的日志
- 可配置性强：可以通过规则文件（`/etc/audit/audit.rules`）自定义监控策略。

如何使用：

1. 安装：大多数发行版默认已安装。如果没有，可以通过 `yum install audit` 或 `apt-get install auditd` 来安装

2. 添加监控规则：

   - 监控 `/etc/` 目录下所有文件的写入、修改和权限变更：

         auditctl -w /etc/ -p wa -k etc_changes

   - 监控所有对 `rm` 命令的调用：

         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` 目录下的创建、删除、移动和写入操作：

         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. 创建基线数据库：在系统干净时运行，生成文件的哈希值数据库

       aide --init

3. 移动数据库：将生成的 `aide.db.new.gz` 文件改名为 `aide.db.gz` 并移动到安全位置

4. 定期检查：

       aide --check

   这会与基线数据库进行对比，并报告所有变更

适用场景：

- 系统加固：定期检查关键系统文件（如 `/etc`、`/bin`）是否被非法修改
- 入侵检测：当怀疑系统被入侵时，FIM 工具能迅速找出被篡改的文件