美国服务器入侵检测入门:使用AIDE进行文件完整性监控
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等)
建立基线安全监控能力
🔧 核心部署要点:
合理配置监控规则和排除列表
安全存储基准数据库
自动化检查和更新流程
集成告警和响应机制
🚀 进阶建议:
结合SIEM系统进行集中分析
集成到CI/CD流水线中
定期进行恢复演练
建立变更管理流程
AIDE作为入侵检测的第一道防线,能够有效发现系统文件的未授权变更,是每个安全运维人员必备的技能。


扫码关注
微信好友
关注抖音