入侵检测AIDE(文件目录完整性检查)

在 Linux 系统中,aide(Advanced Intrusion Detection Environment)是一个用于文件完整性检查的开源工具。它可以帮助系统管理员检测文件系统中的未经授权的更改,例如文件内容、权限、所有者或时间戳的修改。aide 通过创建一个文件系统的基线数据库(类似于指纹),然后定期与当前文件系统状态进行比较,来发现潜在的安全问题或入侵行为

f1455ec0b66781a580c5b51708653ef2.png


AIDE

env

  • centos7.x
  • aide-v0.15.1

一、AIDE 简介

  • 全称: Advanced Intrusion Detection Environment
  • 功能:
    • 创建文件系统快照(数据库),记录文件的属性(如哈希值、权限、修改时间等)。
    • 定期检查文件系统,检测与基线数据库的差异。
    • 用于入侵检测、合规性检查或系统监控。
  • 适用场景:
    • 服务器安全监控。
    • 检测恶意软件或黑客篡改。
    • 满足审计和合规性要求。
  • 平台: 适用于大多数 Linux 发行版(如 Ubuntu、Debian、CentOS、Fedora 等)。

二、安装 AIDE

在不同的 Linux 发行版中,安装命令有所不同:

  1. Ubuntu/Debian:

    1
    2
    sudo apt update
    sudo apt install aide
  2. CentOS/RHEL:

    1
    sudo yum install aide

    或(对于较新版本使用 dnf):

    1
    sudo dnf install aide
  3. Fedora:

    1
    sudo dnf install aide

安装完成后,可以通过以下命令验证安装:

1
aide --version

三、AIDE 配置

aide 的主要配置文件位于 /etc/aide.conf,可以通过编辑它来自定义检查规则。

  1. 配置文件结构:

    • 定义需要监控的目录和文件。
    • 指定检查哪些属性(如 SHA256 校验和、权限、修改时间等)。
    • 示例配置片段:
      /bin NORMAL
      /etc NORMAL
      /var/log LOG
      !/var/log/.*.gz
      • NORMAL: 检查文件的常见属性(如权限、所有者、哈希值)。
      • LOG: 适用于日志文件,仅记录变化。
      • !: 排除某些文件或目录。
  2. 常用检查规则:

    • p: 文件权限
    • i: inode
    • n: 硬链接数
    • u: 用户
    • g: 组
    • s: 文件大小
    • sha256: SHA256 校验和
  3. 调整配置:
    根据需求编辑 /etc/aide.conf,例如只监控关键系统文件:

    1
    sudo nano /etc/aide.conf

四、AIDE 使用方法

以下是 aide 的基本操作步骤:

1. 初始化数据库

首次使用时,需要创建一个基线数据库:

1
sudo aide --init
  • 这会生成一个数据库文件,默认位于 /var/lib/aide/aide.db.new.gz
  • 将其重命名为正式数据库:
    1
    sudo mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz

2. 检查文件完整性

使用以下命令比较当前文件系统与基线数据库:

1
sudo aide --check
  • 如果没有变化,输出会显示正常。
  • 如果检测到更改,会列出具体差异,例如:
    AIDE found differences between database and filesystem!!
    Summary:
    Total number of files: 12345
    Added files: 2
    Removed files: 1
    Changed files: 5

48e731fb700bfbce7190437f23a30d77.png

3. 更新数据库

如果文件更改是合法的(例如系统更新),可以更新数据库:

1
sudo aide --update
  • 更新后,将新数据库替换旧数据库:
    1
    sudo cp /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz

4. 自动化检查

可以通过 cron 任务实现定期检查,例如每天凌晨 2 点运行:

1
sudo crontab -e

添加以下内容:

0 2 * * * /usr/bin/aide --check | /usr/bin/mail -s "AIDE Report" [email protected]

五、常见选项

  • --init: 初始化数据库。
  • --check: 检查文件系统与数据库的差异。
  • --update: 更新数据库(生成新数据库但不覆盖旧的)。
  • --config=/path/to/aide.conf: 指定自定义配置文件。

六、注意事项

  1. 性能影响: 检查大量文件可能耗时较长,建议在低负载时运行
  2. 安全性: 数据库文件(/var/lib/aide/aide.db.gz)应妥善保护,避免被篡改。
  3. 日志分析: 检查结果可能很详细,建议结合脚本过滤关键信息。

七、示例

假设你想监控 /etc 目录:

  1. 编辑 /etc/aide.conf,添加:
    /etc NORMAL
  2. 初始化数据库:
    1
    2
    sudo aide --init
    sudo mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
  3. 修改 /etc/passwd 文件,然后检查:
    1
    sudo aide --check
    输出会显示 /etc/passwd 的更改。

aide 是一个强大且轻量级的工具,适合需要文件完整性监控的 Linux 环境。通过合理配置和定期检查,它能显著提升系统的安全性。