返回首页

Linux 入侵检测与应急响应 — AIDE/rkhunter/auditd 安全事件排查实战

📅 创建于 2026-05-12 🔄 更新于 2026-05-12 📝 959 字

Linux 入侵检测与应急响应:安全事件排查实战手册

生产环境的安全防护不能只靠边界防火墙。攻击者一旦突破外层防线,主机层面的入侵检测与应急响应能力是最后一道防线。 入侵检测体系分三层:网络层(NIDS)、主机层(HIDS)、应用层(WAF/RASP)。

一、入侵检测体系概览

三层安全检测

层级 工具 能力 局限性
网络层 (NIDS) Suricata / Snort 已知攻击特征检测 加密流量无法深度检测
主机层 (HIDS) auditd + AIDE + OSSEC/Wazuh 文件篡改、提权操作、异常进程 内核级 Rootkit 可绕过
应用层 ModSecurity / OpenRASP SQL注入、XSS、命令注入 业务逻辑漏洞难以覆盖

推荐工具组合方案

单一工具无法覆盖所有场景。推荐组合:

工具 定位 核心能力
AIDE 文件完整性基线 监控关键二进制/配置文件是否被篡改
rkhunter + chkrootkit Rootkit 扫描 内核级和用户态后门检测
auditd 内核级审计 记录系统调用级别的操作日志,满足等保/PCI-DSS
ClamAV 恶意文件查杀 开源杀毒引擎,社区维护病毒库

安全加固(预防)与入侵检测(发现/响应)的体系关系参见 server-security-hardening-checklist


二、文件完整性检测(AIDE)

AIDE(Advanced Intrusion Detection Environment)基于文件属性数据库的完整性检测。

安装与配置

# Ubuntu/Debian
sudo apt install -y aide

# CentOS/RHEL
sudo dnf install -y aide

检测规则组

AIDE 配置文件 /etc/aide/aide.conf 定义不同级别的检测规则:

规则组 检测范围 适用
BINLIB 全属性 + sha256 + sha512 关键二进制(/bin, /sbin, /usr/bin)
CONFFILE 内容变更 + 权限 配置文件(/etc)
LOGFILE 仅权限和属主 日志文件(忽略内容增长)
DATAONLY 权限 + 属主 + sha256 数据目录

基线生成与检查

# 初始化基线数据库
sudo aide --init
sudo cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db

# 安全存储基线(攻击者能修改基线则AIDE失效)
sudo cp /var/lib/aide/aide.db /mnt/readonly-backup/aide.db.$(date +%Y%m%d)

# 定期检查
sudo aide --check

# 合法变更后更新基线
sudo aide --update
sudo cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db

每日自动检查:

# /etc/cron.d/aide-check
0 3 * * * root /usr/bin/aide --check | mail -s "AIDE Report" [email protected]

三、Rootkit 检测(rkhunter + chkrootkit)

rkhunter

# 安装
sudo apt install -y rkhunter
sudo rkhunter --update
sudo rkhunter --propupd

# 完整扫描
sudo rkhunter --check --skip-keypress --report-warnings-only

# 日志查看
cat /var/log/rkhunter.log
# [Found] 可疑项 → 人工确认
# [Warning] 警告项 → 可能误报或真实威胁

chkrootkit 交叉验证

单一工具可能漏检,用 chkrootkit 做交叉验证(检测原理不同):

sudo apt install -y chkrootkit
sudo chkrootkit       # 交互模式
sudo chkrootkit -q    # 静默模式(只输出可疑项)
  • rkhunter:基于签名匹配 + 文件属性检查 + 系统配置审计
  • chkrootkit:基于特征字符串搜索 + 系统命令输出分析

四、系统审计框架(auditd)

auditd 是 Linux 内核审计子系统的用户态守护进程,可记录系统调用级别的操作日志。

架构

内核 audit 模块 → netlink socket → auditd 守护进程 → 日志文件
                                          ↓
                                  ausearch / aureport(查询/报告)

企业级审计规则集

# /etc/audit/rules.d/security.rules

# 缓冲区配置
-b 8192                          # 审计缓冲区大小
-f 1                             # 满策略:1=警告 2=关机

# 身份与认证审计
-w /etc/passwd -p wa -k identity_mod
-w /etc/shadow -p wa -k identity_mod
-w /etc/sudoers -p wa -k privilege_escalation

# 提权操作审计
-a always,exit -F arch=b64 -S setuid,setgid,setreuid,setregid -F auid>=1000 -k priv_cmd

# 网络连接审计(反弹 Shell 检测)
-a always,exit -F arch=b64 -S connect -F auid>=1000 -k net_connect
-a always,exit -F arch=b64 -S bind -F auid>=1000 -k net_bind

# 临时目录执行审计(攻击者释放恶意文件)
-a always,exit -F arch=b64 -S execve -F dir=/tmp -k exec_tmp
-a always,exit -F arch=b64 -S execve -F dir=/var/tmp -k exec_tmp

# 内核模块加载审计(LKM Rootkit 检测)
-a always,exit -F arch=b64 -S init_module,finit_module -k kernel_mod

# 规则锁定
-e 2

日志查询

# ausearch - 条件搜索
sudo ausearch -k identity_mod -ts today           # 身份文件变更
sudo ausearch -ua 1001 -ts recent                  # 指定用户操作
sudo ausearch --success no -ts today               # 失败系统调用

# aureport - 汇总报告
sudo aureport -au --summary                        # 认证事件
sudo aureport -x --summary                         # 可执行文件
sudo aureport --failed --summary                   # 失败事件

五、应急响应流程

应急响应六步法

准备 → 识别 → 遏制 → 根除 → 恢复 → 总结

初始响应检查清单

按易失性从高到低顺序采集(切勿直接关机——内存中跑着关键证据):

# 排查项 命令 关注点
1 系统基本信息 uname -a, uptime, date 判断是否被重启、时区
2 用户账号 awk -F: '$3==0 {print $1}' /etc/passwd UID=0 的非 root 用户、空密码、新增用户
3 进程排查 ps auxf, ls -la /proc/*/exe 2>/dev/null | grep "(deleted)" 隐藏进程、已删除仍运行的可执行文件
4 网络连接 ss -tulnp, ss -tnp state established 异常监听端口、反弹 Shell、挖矿外联
5 文件排查 find / -mtime -3 -type f, find / -perm -4000 近期变更文件、SUID/SGID 提权文件、隐藏文件
6 定时任务 crontab -l, systemctl list-timers --all crontab/systemd 后门持久化

自动化排查脚本

文章提供了两个实战脚本(详见 raw 源文件):

  1. security_audit.sh — 一键采集系统安全状态,生成巡检报告
  2. intrusion_detect.sh — 自动化检测常见入侵痕迹(异常用户/隐藏进程/挖矿连接/Webshell/Rootkit)

六、纵深防御体系

┌─────────────────────────────────────────────┐
│ 网络层:iptables/nftables + Suricata NIDS   │
│  ┌─────────────────────────────────────────┐│
│  │ 主机层:auditd + AIDE + rkhunter       ││
│  │  ┌─────────────────────────────────────┐││
│  │  │ 应用层:WAF + RASP + 输入校验      │││
│  │  │  ┌─────────────────────────────────┐│││
│  │  │  │ 数据层:加密存储 + 访问控制    ││││
│  │  │  └─────────────────────────────────┘│││
│  │  └─────────────────────────────────────┘││
│  └─────────────────────────────────────────┘│
└─────────────────────────────────────────────┘

告警分级与升级机制

级别 触发条件 响应动作 通知方式
P3-低 单次 SSH 失败、端口扫描 记录日志 日报汇总
P2-中 5 分钟内 ≥ 10 次 SSH 失败 自动封禁 IP 1 小时 企业微信/钉钉
P1-高 SUID 文件变更、新增 crontab 封禁 + 隔离主机网络 电话告警
P0-紧急 Rootkit 检出、内核模块加载 立即隔离 + 保留现场 电话 + 短信

日志集中管理

攻击者拿到 root 后第一件事往往是清日志:

# rsyslog 远程转发(TCP 保证可靠)
*.* @@logserver.internal:514

# 本地日志防篡改(只追加属性)
sudo chattr +a /var/log/auth.log
sudo chattr +a /var/log/syslog

七、安全基线建设

CIS Benchmark 提供了各发行版的详细加固清单,核心动作:

# 清理不必要的包和端口
sudo apt purge -y telnetd rsh-server xinetd
# 关闭不必要的服务
for svc in avahi-daemon cups bluetooth; do
  sudo systemctl disable --now "$svc"
done
# SUID 文件清理
find / -type f \( -perm -4000 -o -perm -2000 \) -exec ls -la {} \; 2>/dev/null

安全加固详细操作参见 server-security-hardening-checklistssh-brute-force-protection-guide


八、常见问题

错误现象 原因 解决方案
AIDE 大量误报 未排除动态变化文件(日志/缓存) aide.conf 中用 ! 排除 /var/log/tmp
auditd 导致系统卡顿 规则匹配范围过大 缩小规则 + 增加 -F auid>=1000 过滤系统进程
rkhunter "Hidden file found" /dev/.udev 等系统正常文件 加入 /etc/rkhunter.conf 白名单
ClamAV 占满 CPU 默认全盘扫描无限制 nice -n 19 + --max-filesize 限制
日志转发丢失数据 rsyslog 使用 UDP 网络抖动 改用 TCP(@@)+ 启用磁盘队列缓冲

关联页面

页面 关联点
server-security-hardening-checklist 服务器安全加固(预防→检测→响应的安全体系第一环)
ssh-brute-force-protection-guide SSH 暴力破解防御(检测+应急排查的配合)
linux-kernel-tuning-production 内核安全参数(入侵检测的底层基础设施)
docker-production-pitfalls Docker 安全(Docker daemon 入侵检测补充)
linux-user-management-guide Linux 用户管理避坑指南(last/lastb/auditd/用户行为监控的实战方法)