广告位

美国服务器入侵检测入门:使用AIDE进行文件完整性监控

频道: 日期: 浏览:61

1.1 什么是文件完整性监控?

美国服务器文件完整性监控通过创建系统文件的"指纹"数据库,定期比对当前文件状态与基准数据库的差异,从而检测:

  • 文件内容篡改

  • 权限变更

  • 属主变更

  • 文件增删

  • 敏感配置修改

1.2 AIDE工作流程

text

初始化阶段 → 创建基准数据库 → 定期检查 → 生成差异报告 → 安全响应

     ↓              ↓             ↓           ↓           ↓

  配置规则      记录文件特征    比对当前状态  识别异常变更  修复和告警

1.3 AIDE检测能力

  • 文件属性:权限、属主、属组、大小、时间戳

  • 哈希值:MD5、SHA1、SHA256等多种哈希算法

  • 扩展属性:SELinux上下文、ACL权限

  • 特殊文件:设备文件、符号链接、目录

二、AIDE安装与初始化配置

2.1 安装AIDE

Ubuntu/Debian系统:

bash

sudo apt updatesudo apt install aide aide-common

CentOS/RHEL系统:

bash

sudo yum install aide# 或者sudo dnf install aide

验证安装:

bash

aide -vwhich aide

2.2 初始配置文件解析

AIDE主配置文件:/etc/aide/aide.conf

bash

# 查看默认配置cat /etc/aide/aide.conf | grep -v '^#|^$'

关键配置段说明:

bash

# 定义规则宏@@define DBDIR /var/lib/aide          # 数据库目录@@define LOGDIR /var/log/aide         # 日志目录# 规则定义 - 定义检测规则组合CONTENT = sha256+sha512+rmd160+haval+tiger+whirlpool

PERMS = p+u+g+acl+selinux+xattrs

STATIC = p+u+g+acl+selinux+xattrs+i+n+l+bsize+size+links+link_name+mtime+ctime+atime

DATAONLY = p+u+g+n+acl+selinux+xattrs+bsize+size+links+link_name+mtime+ctime+atime+CONTENT

2.3 自定义配置文件

创建自定义配置:

bash

sudo cp /etc/aide/aide.conf /etc/aide/aide.conf.customsudo nano /etc/aide/aide.conf.custom

完整的自定义配置示例:

bash

# AIDE自定义配置文件@@define DBDIR /var/lib/aide

@@define LOGDIR /var/log/aide# 数据库设置database=file:@@{DBDIR}/aide.db.gzdatabase_out=file:@@{DBDIR}/aide.db.new.gzgzip_dbout=yes# 报告设置report_url=file:@@{LOGDIR}/aide.logreport_url=stdout# 规则定义CONTENT_EX = sha256+sha512+rmd160

PERMS = p+u+g+acl+selinux+xattrs

ATTRIBUTES = p+u+g+acl+selinux+xattrs+i+n+l+bsize+size+links+link_name

TIMESTAMP = mtime+ctime+atime

LOG = p+u+g+n+acl+selinux+xattrs+CONTENT_EX

FULL = PERMS+ATTRIBUTES+TIMESTAMP+CONTENT_EX# 定义监控路径和规则# 系统关键目录 - 完全监控/bin            FULL

/boot           FULL

/etc            FULL

/lib            FULL

/lib64          FULL

/opt            FULL

/sbin           FULL

/usr            FULL

/var            FULL# 排除目录!/proc!/sys!/tmp!/var/tmp!/var/run!/var/cache!/var/log!/home/*/.cache!/home/*/.local/share/Trash# 特定文件监控/etc/passwd     FULL

/etc/group      FULL

/etc/shadow     FULL

/etc/gshadow    FULL

/etc/sudoers    FULL

/etc/ssh/sshd_config FULL# Web目录监控/var/www/html   CONTENT_EX+PERMS

/opt/webapps    CONTENT_EX+PERMS# 数据库文件(内容不监控,只监控属性)/var/lib/mysql  PERMS+ATTRIBUTES+TIMESTAMP# 日志文件(不监控内容增长)/var/log        PERMS+ATTRIBUTES# 自定义应用/opt/myapp/bin  FULL

/opt/myapp/config PERMS+ATTRIBUTES+CONTENT_EX

三、AIDE数据库初始化与管理

3.1 初始化基准数据库

首次初始化:

bash

# 使用自定义配置初始化sudo aide -c /etc/aide/aide.conf.custom --init# 或者使用默认配置sudo aide --init# 输出示例:AIDE, version 0.16.

AIDE database at /var/lib/aide/aide.db.new.gz initialized.

设置基准数据库:

bash

# 将新生成的数据库设置为基准sudo cp /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz# 验证数据库sudo aide -c /etc/aide/aide.conf.custom --check

3.2 数据库更新流程

当系统发生合法变更时,需要更新基准数据库:

bash

#!/bin/bash# aide-update.sh - 安全的数据库更新脚本CONFIG_FILE="/etc/aide/aide.conf.custom"BACKUP_DIR="/var/backup/aide"DATE=$(date +%Y%m%d_%H%M%S)echo "开始AIDE数据库更新流程..."echo "时间: $(date)"echo ""# 创建备份echo "1. 备份当前数据库..."mkdir -p "$BACKUP_DIR"cp "/var/lib/aide/aide.db.gz" "$BACKUP_DIR/aide.db.gz.$DATE"echo "备份完成: $BACKUP_DIR/aide.db.gz.$DATE"echo ""# 检查当前状态echo "2. 检查当前文件变更..."sudo aide -c "$CONFIG_FILE" --check > "/tmp/aide-check-$DATE.log" 2>&1if [ $? -eq 0 ]; then

    echo "✅ 无异常变更,可以安全更新"else

    echo "⚠️ 检测到变更,请审查日志: /tmp/aide-check-$DATE.log"

    echo "变更摘要:"

    grep -E "(added|changed|removed)" "/tmp/aide-check-$DATE.log" | head -10

    echo ""

    

    read -p "是否继续更新数据库?(y/N): " -n 1 -r

    echo

    if [[ ! $REPLY =~ ^[Yy]$ ]]; then

        echo "❌ 用户取消更新"

        exit 1

    fifi# 更新数据库echo "3. 生成新数据库..."sudo aide -c "$CONFIG_FILE" --updateif [ $? -eq 0 ]; then

    echo "✅ 新数据库生成成功"

    

    # 替换基准数据库

    sudo cp "/var/lib/aide/aide.db.new.gz" "/var/lib/aide/aide.db.gz"

    echo "✅ 基准数据库已更新"

    

    # 清理临时文件

    sudo rm -f "/var/lib/aide/aide.db.new.gz"

    echo "✅ 临时文件已清理"else

    echo "❌ 数据库更新失败"

    exit 1fiecho ""echo "AIDE数据库更新完成"

3.3 数据库验证与维护

验证数据库完整性:

bash

#!/bin/bash# aide-validate.shecho "=== AIDE数据库验证 ==="echo "时间: $(date)"echo ""# 检查数据库文件DB_FILE="/var/lib/aide/aide.db.gz"if [ ! -f "$DB_FILE" ]; then

    echo "❌ 数据库文件不存在: $DB_FILE"

    exit 1fiecho "✅ 数据库文件存在: $DB_FILE"echo "文件大小: $(du -h "$DB_FILE" | cut -f1)"echo "修改时间: $(stat -c %y "$DB_FILE")"echo ""# 测试数据库读取echo "测试数据库读取..."sudo aide --config-checkif [ $? -eq 0 ]; then

    echo "✅ 数据库配置检查通过"else

    echo "❌ 数据库配置检查失败"

    exit 1fi# 快速检查echo ""echo "执行快速检查..."sudo aide --checkif [ $? -eq 0 ]; then

    echo "✅ 快速检查通过 - 无异常变更"else

    echo "⚠️ 快速检查发现变更,请查看详细报告"fi

四、AIDE监控与检查操作

4.1 手动执行完整性检查

基础检查命令:

bash

# 使用默认配置检查sudo aide --check# 使用自定义配置检查sudo aide -c /etc/aide/aide.conf.custom --check# 详细输出检查sudo aide --check --verbose

解析检查报告:

bash

#!/bin/bash# aide-report-analyzer.shREPORT_FILE="/tmp/aide-report-$(date +%Y%m%d).log"echo "开始AIDE完整性检查..."sudo aide --check > "$REPORT_FILE" 2>&1case $? in

    0)

        echo "✅ 检查完成 - 无异常变更"

        ;;

    1)

        echo "⚠️ 检查完成 - 发现配置错误"

        ;;

    2)

        echo "
          
关键词: