广告位

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

频道: 日期: 浏览:24

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 "🚨 检查完成 - 发现文件变更!"
        echo ""
        echo "=== 变更摘要 ==="
        
        # 提取变更统计
        ADDED=$(grep -c "added:" "$REPORT_FILE")
        CHANGED=$(grep -c "changed:" "$REPORT_FILE")
        REMOVED=$(grep -c "removed:" "$REPORT_FILE")
        
        echo "新增文件: $ADDED"
        echo "变更文件: $CHANGED" 
        echo "删除文件: $REMOVED"
        echo ""
        
        # 显示重要变更
        echo "=== 重要文件变更 ==="
        grep -E "(changed:|added:|removed:)" "$REPORT_FILE" | grep -E "(/etc/passwd|/etc/shadow|/etc/sudoers|/etc/ssh/|/bin/|/sbin/)" | head -20
        
        echo ""
        echo "详细报告: $REPORT_FILE"
        ;;
    *)
        echo "❌ 检查失败 - 未知错误"
        ;;esac

4.2 自动化监控脚本

每日检查脚本:

bash

#!/bin/bash# aide-daily-check.shCONFIG="/etc/aide/aide.conf.custom"LOG_DIR="/var/log/aide"REPORT_FILE="$LOG_DIR/daily-check-$(date +%Y%m%d).log"ALERT_EMAIL="admin@example.com"ALERT_THRESHOLD=10  # 变更文件数量阈值mkdir -p "$LOG_DIR"echo "=== AIDE每日检查报告 ===" > "$REPORT_FILE"echo "服务器: $(hostname)" >> "$REPORT_FILE"echo "检查时间: $(date)" >> "$REPORT_FILE"echo "配置文件: $CONFIG" >> "$REPORT_FILE"echo "" >> "$REPORT_FILE"# 执行检查echo "执行AIDE检查..." >> "$REPORT_FILE"sudo aide -c "$CONFIG" --check >> "$REPORT_FILE" 2>&1CHECK_RESULT=$?echo "" >> "$REPORT_FILE"echo "检查完成时间: $(date)" >> "$REPORT_FILE"echo "退出码: $CHECK_RESULT" >> "$REPORT_FILE"# 分析结果case $CHECK_RESULT in
    0)
        RESULT_SUMMARY="✅ 无异常变更"
        ;;
    2)
        # 统计变更数量
        CHANGES=$(grep -c "added:\|changed:\|removed:" "$REPORT_FILE")
        RESULT_SUMMARY="🚨 检测到 $CHANGES 个变更"
        
        # 如果变更超过阈值,发送告警
        if [ "$CHANGES" -gt "$ALERT_THRESHOLD" ]; then
            echo "发送告警邮件..." >> "$REPORT_FILE"
            mail -s "🚨 AIDE告警 - $(hostname) 检测到 $CHANGES 个文件变更" "$ALERT_EMAIL" < "$REPORT_FILE"
        fi
        
        # 记录到系统日志
        logger -t AIDE "检测到 $CHANGES 个文件变更"
        ;;
    *)
        RESULT_SUMMARY="❌ 检查失败"
        ;;esacecho "检查结果: $RESULT_SUMMARY" >> "$REPORT_FILE"# 清理旧日志(保留30天)find "$LOG_DIR" -name "daily-check-*.log" -mtime +30 -deleteecho "每日检查完成: $RESULT_SUMMARY"

4.3 实时监控集成

使用inotify-tools增强监控:

bash

#!/bin/bash# aide-realtime-monitor.sh# 安装inotify-tools# sudo apt install inotify-toolsMONITOR_DIRS=("/etc" "/bin" "/sbin" "/usr/bin" "/usr/sbin")LOG_FILE="/var/log/aide/realtime-monitor.log"echo "启动AIDE实时文件监控..." | tee -a "$LOG_FILE"echo "监控目录: ${MONITOR_DIRS[*]}" | tee -a "$LOG_FILE"echo "开始时间: $(date)" | tee -a "$LOG_FILE"echo "" | tee -a "$LOG_FILE"# 创建inotify监控for dir in "${MONITOR_DIRS[@]}"; do
    if [ -d "$dir" ]; then
        inotifywait -m -r -e modify,attrib,close_write,move,create,delete \
            --format '%T %e %w%f' --timefmt '%Y-%m-%d %H:%M:%S' \
            "$dir" 2>/dev/null &
    fidone | while read line; do
    TIMESTAMP=$(echo "$line" | cut -d' ' -f1-2)
    EVENT=$(echo "$line" | cut -d' ' -f3)
    FILE=$(echo "$line" | cut -d' ' -f4-)
    
    # 记录到日志
    echo "[$TIMESTAMP] $EVENT - $FILE" >> "$LOG_FILE"
    
    # 关键文件变更告警
    if [[ "$FILE" =~ /etc/passwd|/etc/shadow|/etc/sudoers|/etc/ssh/ ]]; then
        echo "🚨 关键文件变更: $FILE ($EVENT)" | tee -a "$LOG_FILE"
        logger -t AIDE "关键文件变更: $FILE ($EVENT)"
    fidone

五、AIDE高级配置与优化

5.1 性能优化配置

针对大文件的优化配置:

bash

# 在/etc/aide/aide.conf.custom中添加性能优化# 排除大文件和不经常变化的文件!/var/lib/dpkg/status-old!/var/lib/dpkg/status!/var/lib/dpkg/available!/var/lib/apt/lists!/var/cache/apt!/var/lib/rpm!/var/lib/PackageKit# 对日志文件使用轻量级检查/var/log/messages$    PERMS+ATTRIBUTES
/var/log/syslog$      PERMS+ATTRIBUTES
/var/log/auth.log$    PERMS+ATTRIBUTES# 对大目录使用内容排除规则/var/spool    PERMS+ATTRIBUTES+TIMESTAMP
/var/cache    PERMS+ATTRIBUTES+TIMESTAMP# 数据库文件只检查属性/var/lib/mysql    PERMS+ATTRIBUTES+TIMESTAMP
/var/lib/pgsql    PERMS+ATTRIBUTES+TIMESTAMP

5.2 多环境配置管理

开发环境配置:

bash

# /etc/aide/aide.conf.dev@@define DBDIR /var/lib/aide
@@define LOGDIR /var/log/aide# 开发环境规则 - 宽松检查DEV_RULE = p+u+g+size+mtime# 只监控关键系统文件/etc/passwd      DEV_RULE
/etc/group       DEV_RULE  
/etc/shadow      DEV_RULE
/etc/sudoers     DEV_RULE
/bin             DEV_RULE
/sbin            DEV_RULE

生产环境配置:

bash

# /etc/aide/aide.conf.prod  @@define DBDIR /var/lib/aide
@@define LOGDIR /var/log/aide# 生产环境规则 - 严格检查PROD_RULE = sha256+sha512+p+u+g+acl+selinux+xattrs+i+n+l+bsize+size+mtime+ctime# 全面监控/bin            PROD_RULE
/boot           PROD_RULE
/etc            PROD_RULE
/lib            PROD_RULE
/lib64          PROD_RULE
/sbin           PROD_RULE
/usr            PROD_RULE
/opt            PROD_RULE

5.3 加密数据库配置

使用GPG加密数据库:

bash

#!/bin/bash# aide-encrypted-db.sh# 生成GPG密钥(如果还没有)if [ ! -f ~/.gnupg/aide.key ]; then
    cat > /tmp/aide-key-config << EOF
    %echo Generating AIDE database encryption key
    Key-Type: RSA
    Key-Length: 4096
    Subkey-Type: RSA
    Subkey-Length: 4096  
    Name-Real: AIDE Database Encryption
    Name-Email: aide@$(hostname)
    Expire-Date: 0
    %no-protection
    %commit
    %echo done
EOF
    gpg --batch --generate-key /tmp/aide-key-config    rm /tmp/aide-key-configfi# 加密数据库ENCRYPTED_DB="/var/lib/aide/aide.db.gz.gpg"# 初始化加密数据库sudo aide --initgpg --encrypt --recipient aide@$(hostname) /var/lib/aide/aide.db.new.gzsudo mv /var/lib/aide/aide.db.new.gz.gpg "$ENCRYPTED_DB"# 解密检查脚本cat > /usr/local/bin/aide-check-encrypted << 'EOF'
#!/bin/bash
TEMP_DB="/tmp/aide.db.$$.gz"

# 解密数据库
gpg --decrypt /var/lib/aide/aide.db.gz.gpg > "$TEMP_DB" 2>/dev/null

if [ $? -eq 0 ]; then
    # 使用解密后的数据库进行检查
    aide --database="$TEMP_DB" --check
    CHECK_RESULT=$?
    
    # 清理临时文件
    rm -f "$TEMP_DB"
    exit $CHECK_RESULT
else
    echo "数据库解密失败"
    rm -f "$TEMP_DB"
    exit 1
fi
EOFchmod +x /usr/local/bin/aide-check-encrypted

六、企业级部署方案

6.1 集中式AIDE管理

主控服务器脚本:

bash

#!/bin/bash# aide-central-manager.shSERVERS=(
    "web1.example.com"
    "web2.example.com"
    "db1.example.com" 
    "db2.example.com"
    "cache1.example.com")REPORT_DIR="/var/log/aide-central/$(date +%Y%m%d)"mkdir -p "$REPORT_DIR"echo "=== 集中式AIDE检查报告 ==="echo "检查时间: $(date)"echo ""for server in "${SERVERS[@]}"; do
    echo "检查服务器: $server"
    
    REPORT_FILE="$REPORT_DIR/aide-$server.log"
    
    # 执行远程检查
    if ssh "admin@$server" "sudo aide --check" > "$REPORT_FILE" 2>&1; then
        CHANGES=$(grep -c "added:\|changed:\|removed:" "$REPORT_FILE" 2>/dev/null || echo "0")
        
        if [ "$CHANGES" -eq "0" ]; then
            echo "  ✅ 正常 - 无变更"
        else
            echo "  🚨 异常 - $CHANGES 个变更"
            
            # 提取关键变更
            CRITICAL_CHANGES=$(grep -E "(/etc/passwd|/etc/shadow|/etc/sudoers)" "$REPORT_FILE" | wc -l)
            if [ "$CRITICAL_CHANGES" -gt 0 ]; then
                echo "  ⚠️  发现 $CRITICAL_CHANGES 个关键文件变更"
            fi
        fi
    else
        echo "  ❌ 检查失败"
    fidoneecho ""echo "详细报告目录: $REPORT_DIR"

6.2 自动化响应系统

AIDE告警响应脚本:

bash

#!/bin/bash# aide-alert-response.shREPORT_FILE="$1"SERVER=$(hostname)if [ ! -f "$REPORT_FILE" ]; then
    echo "错误: 报告文件不存在"
    exit 1fi# 分析报告CHANGES=$(grep -c "added:\|changed:\|removed:" "$REPORT_FILE")CRITICAL_FILES=$(grep -E "(/etc/passwd|/etc/shadow|/etc/sudoers|/etc/ssh/sshd_config)" "$REPORT_FILE")echo "🚨 AIDE安全告警 - $SERVER"echo "变更数量: $CHANGES"echo ""if [ -n "$CRITICAL_FILES" ]; then
    echo "⚠️ 关键文件变更:"
    echo "$CRITICAL_FILES"
    echo ""
    
    # 立即动作 - 备份受影响文件
    echo "执行紧急备份..."
    BACKUP_DIR="/var/backup/emergency/$(date +%Y%m%d_%H%M%S)"
    mkdir -p "$BACKUP_DIR"
    
    echo "$CRITICAL_FILES" | while read line; do
        FILE=$(echo "$line" | grep -o "/[^ ]*" | head -1)
        if [ -f "$FILE" ]; then
            cp "$FILE" "$BACKUP_DIR/" 2>/dev/null && echo "备份: $FILE"
        fi
    donefi# 发送通知if command -v curl >/dev/null; then
    # 发送到Slack
    curl -X POST -H 'Content-type: application/json' \
        --data "{\"text\":\"🚨 AIDE检测到文件变更于 $SERVER: $CHANGES 个变更\"}" \
        "https://hooks.slack.com/services/YOUR/WEBHOOK/URL" >/dev/null 2>&1fi# 记录到SIEM系统logger -p auth.alert -t AIDE "检测到 $CHANGES 个文件变更"echo "响应动作完成"

七、故障排除与维护

7.1 常见问题解决

数据库损坏恢复:

bash

#!/bin/bash# aide-database-recovery.shecho "AIDE数据库恢复工具"echo ""BACKUP_DIR="/var/backup/aide"LATEST_BACKUP=$(ls -t "$BACKUP_DIR"/aide.db.gz.* 2>/dev/null | head -1)if [ -n "$LATEST_BACKUP" ]; then
    echo "找到备份: $LATEST_BACKUP"
    echo "恢复数据库..."
    
    sudo cp "$LATEST_BACKUP" "/var/lib/aide/aide.db.gz"
    sudo chown root:root "/var/lib/aide/aide.db.gz"
    sudo chmod 600 "/var/lib/aide/aide.db.gz"
    
    echo "✅ 数据库恢复完成"else
    echo "❌ 未找到备份,需要重新初始化"
    echo "执行: sudo aide --init && sudo cp /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz"fi

性能问题诊断:

bash

#!/bin/bash# aide-performance-check.shecho "=== AIDE性能诊断 ==="echo ""# 检查数据库大小DB_SIZE=$(du -h /var/lib/aide/aide.db.gz 2>/dev/null | cut -f1)echo "数据库大小: ${DB_SIZE:-未找到}"# 检查配置的监控文件数量FILE_COUNT=$(grep -E '^/|^!' /etc/aide/aide.conf.custom | grep -v '^#' | grep -v '^$' | wc -l)echo "配置的监控路径: $FILE_COUNT"# 测试检查时间echo ""echo "性能测试 - 开始检查..."TIME_OUTPUT=$(time (sudo aide --check >/dev/null 2>&1) 2>&1)echo "检查时间: $TIME_OUTPUT"# 检查系统资源echo ""echo "系统资源:"echo "内存: $(free -h | grep Mem | awk '{print $3 "/" $2}')"echo "负载: $(uptime | awk -F'load average:' '{print $2}')"

7.2 日志分析工具

AIDE日志分析脚本:

bash

#!/bin/bash# aide-log-analyzer.shLOG_FILE="${1:-/var/log/aide/aide.log}"DAYS="${2:-7}"echo "=== AIDE日志分析报告 ==="echo "分析文件: $LOG_FILE"echo "时间范围: 最近 $DAYS 天"echo "生成时间: $(date)"echo ""# 统计变更趋势echo "变更趋势统计:"echo "=============="for i in $(seq 0 $((DAYS-1))); do
    DATE=$(date -d "$i days ago" +%Y-%m-%d)
    COUNT=$(grep "$DATE" "$LOG_FILE" 2>/dev/null | grep -c "added:\|changed:\|removed:")
    echo "$DATE: $COUNT 个变更"doneecho ""echo "最常见变更文件:"echo "==============="grep -h "added:\|changed:\|removed:" "$LOG_FILE" 2>/dev/null | \
    awk '{print $2}' | sort | uniq -c | sort -nr | head -10echo ""echo "按类型统计:"echo "==========="ADDED=$(grep -c "added:" "$LOG_FILE" 2>/dev/null)CHANGED=$(grep -c "changed:" "$LOG_FILE" 2>/dev/null)  REMOVED=$(grep -c "removed:" "$LOG_FILE" 2>/dev/null)echo "新增文件: $ADDED"echo "变更文件: $CHANGED"echo "删除文件: $REMOVED"echo "总计: $((ADDED + CHANGED + REMOVED))"

八、安全最佳实践

8.1 AIDE部署清单

部署前检查:

bash

#!/bin/bash# aide-pre-deployment-check.shecho "=== AIDE部署前检查 ==="echo ""# 系统检查echo "1. 系统信息:"echo "   主机名: $(hostname)"echo "   操作系统: $(lsb_release -d 2>/dev/null | cut -f2 || cat /etc/redhat-release 2>/dev/null || echo "Unknown")"echo "   内核版本: $(uname -r)"echo ""# 磁盘空间检查echo "2. 磁盘空间:"df -h /var/lib /var/log | awk '{print "   " $0}'echo ""# 依赖检查echo "3. 依赖检查:"for pkg in aide openssl gzip; do
    if command -v "$pkg" >/dev/null; then
        echo "   ✅ $pkg: 已安装"
    else
        echo "   ❌ $pkg: 未安装"
    fidoneecho ""# 权限检查echo "4. 权限检查:"if [ "$(id -u)" -eq 0 ]; then
    echo "   ✅ 当前用户: root"else
    echo "   ❌ 当前用户: $(whoami) - 需要root权限"fiecho ""echo "检查完成"

8.2 持续监控策略

完整的AIDE监控方案:

bash

#!/bin/bash# aide-complete-monitoring.sh# 配置cron任务setup_aide_cron() {
    echo "配置AIDE定时任务..."
    
    # 每日检查
    (crontab -l 2>/dev/null; echo "0 2 * * * /usr/local/bin/aide-daily-check.sh") | crontab -    
    # 每周数据库更新
    (crontab -l 2>/dev/null; echo "0 3 * * 0 /usr/local/bin/aide-update.sh") | crontab -    
    # 每月报告
    (crontab -l 2>/dev/null; echo "0 4 1 * * /usr/local/bin/aide-monthly-report.sh") | crontab -    
    echo "✅ 定时任务配置完成"}# 初始化AIDEinitialize_aide() {
    echo "初始化AIDE..."
    
    # 备份原配置
    cp /etc/aide/aide.conf /etc/aide/aide.conf.backup    
    # 部署自定义配置
    cp aide.conf.custom /etc/aide/aide.conf.custom    chmod 600 /etc/aide/aide.conf.custom    
    # 初始化数据库
    aide -c /etc/aide/aide.conf.custom --init
    cp /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz    
    echo "✅ AIDE初始化完成"}# 部署监控脚本deploy_scripts() {
    echo "部署监控脚本..."
    
    # 复制所有脚本到/usr/local/bin/
    cp aide-daily-check.sh /usr/local/bin/    cp aide-update.sh /usr/local/bin/    cp aide-alert-response.sh /usr/local/bin/    
    # 设置执行权限
    chmod +x /usr/local/bin/aide-*.sh    
    echo "✅ 脚本部署完成"}# 主执行流程main() {
    echo "开始部署完整的AIDE监控方案..."
    echo ""
    
    initialize_aide    echo ""
    
    deploy_scripts  
    echo ""
    
    setup_aide_cron    echo ""
    
    echo "🎉 AIDE监控方案部署完成"
    echo ""
    echo "下一步:"
    echo "1. 验证初始化检查: sudo aide --check"
    echo "2. 测试告警响应"
    echo "3. 审查首次报告"}main

总结

通过系统化部署AIDE文件完整性监控,你可以:

🎯 实现的安全能力:

  • 实时检测文件系统异常变更

  • 快速响应安全事件

  • 满足合规要求(PCI DSS、HIPAA等)

  • 建立基线安全监控能力

🔧 核心部署要点:

  1. 合理配置监控规则和排除列表

  2. 安全存储基准数据库

  3. 自动化检查和更新流程

  4. 集成告警和响应机制

🚀 进阶建议:

  • 结合SIEM系统进行集中分析

  • 集成到CI/CD流水线中

  • 定期进行恢复演练

  • 建立变更管理流程

AIDE作为入侵检测的第一道防线,能够有效发现系统文件的未授权变更,是每个安全运维人员必备的技能。

生成文章图片 (47).jpg

关键词: