事件响应与取证
准备、遏制、根除、恢复、取证基础。
事件响应:NIST/SANS 流程与实战演练
这一课你将能做到
- 按准备、检测分析、遏制根除恢复、事后复盘的完整流程处置一次模拟入侵
- 用一组标准 Linux 命令完成证据收集与初步分析
- 为本站平台写一份可执行的安全事件响应预案(Runbook)
为什么要学
入侵不是「会不会」而是「何时」的问题。没有预案的团队在事件发生时的典型表现:直接重启服务器(销毁内存证据)、慌乱中删被入侵的账号(销毁日志)、对外乱发公告。事件响应的纪律性决定了损失下限——这也是大厂 SOC 团队的核心工作方法。
人话:应急响应 = 消防演习。火警响起时,专业人员按预案走,没预案的团队互相踩踏。
先建立图像
NIST SP 800-61 的生命周期是循环而非直线:
┌─ ① 准备 Preparation ── 预案、工具、联系人、演练
│ ▼
├─ ② 检测与分析 ──────── 告警分诊、确认范围、定性定级
│ ▼
├─ ③ 遏制/根除/恢复 ──── 隔离止损 → 清除持久化 → 恢复服务
│ ▼
├─ ④ 事后复盘 ────────── 时间线、根因、改进项跟踪
└──────────── 回到 ①(改进项输入下一轮准备)
SANS 六步法(准备、识别、遏制、根除、恢复、总结)是同一思想的更细拆分,面试两者都要能说。
跟着做
步骤 1:准备阶段——建立你的工具箱与预案
# 靶机(Ubuntu)预装应急常用工具
sudo apt install auditd rkhunter lynis
# 明确「证据盘」位置:只读挂载的外部存储
mkdir -p /mnt/evidence && sudo mount -o ro /dev/sdb1 /mnt/evidence
准备一页纸预案:事件分级(P1 数据泄露/P2 服务入侵/P3 异常行为)、各角色联系方式、升级路径、对外口径审批人。
步骤 2:演练设定(打自己的靶机)
# 靶机上模拟弱口令被爆破成功(用错误密码多试几次自己的 SSH)
# 或用 hydra 对自己靶机暴力破解(仅限自建靶机!)
hydra -l your_user -P /usr/share/wordlists/rockyou.txt \
192.168.56.101 ssh -t 4 # rockyou 字典:kali 自带,Ubuntu 需单独下载
几分钟内你会看到 auth.log 里密密麻麻的 Failed password——这就是真实攻击者每天在做的事。
步骤 3:检测与分析——收集证据
# 登录痕迹:成功登录、失败尝试、当前在线
sudo last -F | head -20
sudo lastb | head -20 # 失败登录(b = bad)
who # 当前登录
# 认证日志分析
sudo grep 'Accepted' /var/log/auth.log | awk '{print $9,$11}' | sort | uniq -c
# 可疑进程与外联
ps auxf | less
ss -antup | grep ESTAB # 谁在对外连接
# 持久化排查:定时任务、systemd、启动项
crontab -l; sudo ls /etc/cron*
systemctl list-unit-files --state=enabled
# 文件完整性:最近 24h 被改过的文件
sudo find / -mtime -1 -type f -not -path '/proc/*' -not -path '/sys/*' 2>/dev/null | head
**关键纪律:先取证再处置。**把 auth.log、ps 输出、网络连接快照拷到证据盘后才动手。
步骤 4:遏制——止血
# 隔离:切断攻击路径但保留取证环境(不要直接关机!)
sudo ufw deny from <attacker_ip>
# 账号层面:禁用被入侵账号、踢会话
sudo usermod -L compromised_user
sudo pkill -KILL -u compromised_user
# 收紧入口:临时关闭 SSH 密码登录(若尚未关闭)
步骤 5:根除与恢复
# 根除:清除持久化(重点查 crontab、systemd、authorized_keys、异常 SUID)
cat ~/.ssh/authorized_keys # 逐行核对
sudo find / -perm -4000 -newer /var/log/auth.log.1 2>/dev/null
# 恢复:改所有相关凭证 → 从干净备份/镜像重建 → 验证 → 逐步放量
sudo passwd your_user