Linux 安全事件回應的完整流程 文章首圖

Linux 安全事件回應的完整流程

Linux 安全事件回應的完整流程

在雲端與伺服器運算日益普及的今天,資安事件已不再是「是否會發生」的問題,而是「何時發生」的挑戰。許多系統管理員在面对入侵時,往往因為缺乏標準作業程序(SOP)而手忙腳亂,導致證據滅失或影響擴大。本文將針對中階 Linux 使用者,介紹一套標準化的安全事件回應流程,幫助你在危機發生時保持冷靜並有效處置。

第一階段:確認與隔離

當監控系統發出警報或你發現異常行為(如 CPU 飆高、不明連線)時,首要任務是確認事件的嚴重性並防止損害擴大。

1. 確認異常狀態 首先,使用 tophtop 查看是否有異常的高資源佔用程序。接著,檢查系統日誌以獲取初步線索:

# 查看最後 100 行系統安全日誌
sudo tail -n 100 /var/log/auth.log

# 查看最後 100 行系統核心日誌
sudo dmesg | tail -n 100

2. 網路隔離 若確認為惡意入侵,應立即將受影響主機從網路中隔離。在 Ubuntu 或 Debian 上,可以使用 ufw 封鎖所有外部連線,僅保留管理用的 SSH 端口(假設為 22):

# 先允許 SSH 連線(務必先執行,否則可能失去連線)
sudo ufw allow 22/tcp

# 拒絕所有其他入站連線
sudo ufw default deny incoming
sudo ufw enable

第二階段:取證與分析

在隔離環境後,不要急著重啟或刪除檔案,這會破壞關鍵證據。我們需要收集系統狀態快照。

1. 收集進程與網路連線資訊 找出可疑的 PID(程序識別碼)和網路連線:

# 列出所有活躍的 TCP 連線及其對應的程序
sudo ss -tlnp | grep ESTAB

# 查看特定可疑 PID 的詳細資訊(假設 PID 為 12345)
sudo ps -ef | grep 12345
sudo lsof -p 12345

2. 檢查登入紀錄 確認是否有未授權的登入嘗試:

# 查看所有成功與失敗的登入嘗試
sudo last
sudo lastb

# 檢查 SSH 登入失敗次數,找出暴力破解來源 IP
grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr | head -10

3. 檢查異常檔案與排程任務 駭客常會安裝後門或定時任務來維持存取權限:

# 檢查 crontab 是否有異常排程
sudo crontab -l
sudo ls -la /etc/cron.*

# 檢查最近 24 小時內被修改過的系統二進位檔
sudo find /usr/bin /usr/sbin -type f -mtime -1

第三階段:清除與復原

取證完成後,方可進行清除工作。請務必先備份 /var/log/etc 目錄。

1. 終止惡意程序與移除檔案 根據第二階段的分析結果,終止惡意進程並刪除相關檔案:

# 強制終止可疑進程
sudo kill -9 <PID>

# 刪除惡意檔案(請謹慎操作,確保路徑正確)
sudo rm -rf /tmp/suspicious_file

2. 修復帳戶與權限 檢查 /etc/passwd/etc/shadow,移除未授權的帳戶。若發現 root 帳號被修改,請立即重置密碼並檢查 /root/.ssh/authorized_keys

3. 系統更新與補丁 駭客常利用已知漏洞入侵。請執行系統更新:

sudo apt update && sudo apt upgrade -y

常見問題與注意事項

Q1: 為什麼不能直接重啟伺服器? 重啟會清除記憶體中的證據(如加密金鑰、未寫入磁碟的惡意程式碼),並可能觸發惡意程式的備援機制。除非系統完全凍結無法操作,否則應優先進行記憶體取證(如使用 makedumpfile)。

Q2: 如何防止未來發生類似事件? 除了定期更新系統,建議啟用 fail2ban 來自動封鎖暴力破解 IP,並使用 auditd 監控關鍵檔案的存取。此外,實施最小權限原則(Principle of Least Privilege),避免使用 root 帳號進行日常操作。

小結

安全事件回應不僅是技術挑戰,更是流程管理的考驗。透過「確認隔離 → 取證分析 → 清除復原」的標準流程,你可以將資安風險降至最低。記住,預防勝於治療,日常的安全加固與監控才是避免危機的最佳策略。