第 6 課 · 出事之後:應急響應的第一小時
服務器疑似被入侵的第一小時決定損失大小——多數「災難擴大」不是因爲攻擊多高明,而是因爲響應慌亂:直接重啓(毀了內存裏的證據)、急着刪文件(打草驚蛇且可能刪錯)、或者幹脆裝作沒看見。這一課給你一條固定的第一小時流程:確認 → 隔離 → 取證 → 清除 → 恢復 → 復盤,每步有命令有紀律。
第一步:確認(10 分鍾)——是真入侵還是虛驚
觸發信號通常是:登入告警響了陌生 IP、監控發現異常進程/流量、文件被篡改、被機房通知濫用投訴。確認動作按快慢排序:
# ① 誰在線:當前會話與最近登入(陌生 IP 即實錘一半)
w && last -20 | head -15
# ② 異常進程:CPU/內存大戶與可疑名字(挖礦程序常僞裝系統進程名)
ps aux --sort=-%cpu | head -8
# ③ 異常外聯:連到陌生 IP 的進程(C2 回連的直接證據)
ss -tnp state established | grep -v ":22\|:443\|:80" | head -10
# ④ 最近被改動的系統文件(24 小時內)
find /etc /usr/bin /usr/sbin -xdev -mtime -1 -type f 2>/dev/null | head -10
判定口徑:①②③任何一項有「說不出來歷」的東西 = 按入侵處理;全幹淨但告警真實 = 降級爲異常觀察,48 小時內每 8 小時復查一輪。
第二步:隔離(5 分鍾)——止血優先於破案
確認入侵後的第一動作是切斷攻擊者的通道,但別關機(內存裏有活證據):
# 最小隔離:防火牆只留你自己的管理 IP(攻擊者的會話被切斷,你的取證通道保留)
sudo ufw insert 1 allow from 你的管理IP to any port 22
sudo ufw insert 2 deny in from any to any port 22
# 對外服務臨時下線(網站被掛馬時防止繼續坑訪客):
sudo systemctl stop nginx # 或防火牆擋 80/443
# 雲環境另一條路:控制臺把安全組收緊到只允許你的 IP——效果同,動作在帶外層
第三步:取證(20 分鍾)——先拍照再動手
清除動作會毀證據,所以易失數據先採(順序:內存→網絡→磁盤日志):
# ① 進程與網絡快照(重啓就沒了,最先採)
ps auxf > /root/ir-$(date +%F-%H%M)-ps.txt
ss -tunap > /root/ir-$(date +%F-%H%M)-net.txt
# ② 可疑二進制與日志打包(別在原位刪除,先復制歸檔)
tar czf /root/ir-evidence-$(date +%F).tar.gz /var/log/auth.log* /var/log/syslog* /root/ir-*.txt 2>/dev/null
# ③ 時間線素材:最近 48 小時被改動的文件清單
find / -xdev -type f -mtime -2 -not -path "/proc/*" -not -path "/sys/*" 2>/dev/null > /root/ir-timeline.txt
# ④ 持久化位置逐個看(攻擊者要的是「重啓後還在」):
crontab -l; ls /etc/cron.d/ /etc/cron.daily/ 2>/dev/null
grep -r "authorized_keys" /root /home --include="*" -l 2>/dev/null # 誰被加了鑰匙
systemctl list-unit-files --state=enabled | tail -20 # 陌生自啓服務
cat /etc/ld.so.preload 2>/dev/null # 非空即高危(用戶態 rootkit 位)
第四步:清除與第五步:恢復——重裝優於清理
紀律性結論:被拿到 root 的機器,清理不可信,重裝才可信——rootkit 可以 hook 你用來檢查的工具(你看到的「幹淨」是它想讓你看到的)。標準路徑:①從幹淨備份恢復數據(第 5 課的演練在這裏兌現價值——恢復快不快全看練沒練過);②新裝系統 + 本課程 2–4 課的基線全套;③數據回遷前掃描(備份本身可能含攻擊者植入物——webshell 就在網站目錄裏被一起備份了);④所有憑據輪換:SSH 密鑰、數據庫密碼、面板密碼、API 令牌——入侵者拿到 root 時,機器上的一切祕密都該視爲已泄露。
第六步:復盤——把事故變成資產
一周內寫一頁復盤,回答四個問題:怎麼進來的(入口漏洞:弱口令/未修漏洞/暴露的管理面——找到它才防得住下一次);爲什麼現在才發現(監控與告警的缺口);損失清單(數據/可用性/信譽,量化);三個改進項(進日歷、有負責人、有截止日——沒有跟進的復盤是作文)。復盤的產出餵回第 1 課的威脅模型:你的模型從此帶着實戰修訂。
本節小結
- 第一小時六步:確認(10 分鍾四查)→ 隔離(切攻擊者通道、留取證通道、別關機)→ 取證(易失數據先採,持久化位置逐個看);
- 清除靠重裝不靠清理:root 失守的機器清理不可信——幹淨備份 + 新系統 + 全憑據輪換;
- 復盤回答四問(怎麼進的/爲何晚發現/損失/三改進),產出餵回威脅模型——事故才沒白出。