昨天我們談到,資安人員在發現 Log 有異常(例如暴力破解、多次登入失敗、惡意掃描)後,會啟動 IR(Incident Response)流程,其中最關鍵的步驟就是:
今天我們就延伸到最常見的 Containment 工具 —— 防火牆。
沒有防火牆的風險
想像公司大門沒有警衛,任何人都能隨便進出。攻擊者一旦找到漏洞,馬上能進到內部系統。
防火牆的角色
它就是「邊界守門員」,決定哪些封包能進,哪些要直接擋掉。
實際案例
當我們發現某個 IP 在 log 裡面短時間內瘋狂嘗試登入,第一個動作就是「防火牆封鎖」該來源。
👉 優點:每台機器都能夠自己守門
👉 缺點:無法集中管理,適合小規模或個人環境
部署在公司邊界,控制「內網 ↔ 外網」的進出流量:
👉 優點:集中管理,企業標配
👉 缺點:規則寫錯可能會讓整個公司卡死 😅
支援應用層檢測,可以看懂「HTTP / SQL / DNS」裡的內容,不只靠 IP/Port。
👉 優點:能防止 Web 攻擊、惡意軟體傳輸
👉 缺點:貴!通常是大公司或政府才負擔得起 >< 放心~我們不太需要 😎
隨著大家搬到 AWS、GCP、Azure,雲端防火牆變超常見!:
👉 優點:跟雲服務綁在一起,自動化部署方便
👉 缺點:功能比不上 NGFW,屬於基礎安全控制
專門保護網站 / API 的防火牆:
👉 優點:針對 SQL Injection、XSS 等網站攻擊特化
👉 缺點:無法管一般的網路流量,只保護 Web
昨天我們簡單實作的部分是手動發現 IP → 手動封鎖。
今天的部分我們就可以延伸成「腳本自動化」的方式來阻擋 IP:
範例:自動抓登入失敗的 IP 並封鎖(Linux),假設現在有一個 auth.log
# 找最近 10 分鐘內,登入失敗超過 5 次的 IP
grep "Failed password" /var/log/auth.log | \
awk '{print $(NF-3)}' | \
sort | uniq -c | sort -nr | awk '$1 > 5 {print $2}' > suspicious_ips.txt
# 封鎖這些可疑的 IP
for ip in $(cat bad_ips.txt); do
sudo iptables -A INPUT -s $ip -j DROP
done
👉 這就是 Log 分析 → 自動防禦 的小範例。
單純封鎖 IP 可能會誤殺(誤封正常使用者)。
另一個進階方法是 限制某個服務的連線頻率。
Linux iptables 範例:
可以參考:
# 限制 SSH 每分鐘最多 3 次嘗試
sudo iptables -A INPUT -p tcp --dport 22 -m limit --limit 3/minute -j ACCEPT
👉 這樣比單純封鎖更「優雅」。
有時候攻擊來自同一段網路(例如 203.0.113.0/24)。
# 阻擋整段
sudo iptables -A INPUT -s 203.0.113.0/24 -j DROP
👉 適合應付惡意 Botnet。
昨天的實作只是加一條規則,今天我們就進階到:
# /etc/pf.conf
# 定義一個 table(黑名單)
table <badhosts> persist file "/etc/pf.badhosts"
# 預設允許
pass in all
# 對黑名單進行封鎖
block in quick from <badhosts> to any
然後只要更新 /etc/pf.badhosts
,不用改規則就能持續封鎖新 IP:
echo "192.168.1.50" | sudo tee -a /etc/pf.badhosts
sudo pfctl -t badhosts -T add -f /etc/pf.badhosts
👉 較為「企業級」的做法。
封鎖 IP 只是「止血」,真正要避免問題再發生,需要:
今天我們從 Log 發現異常,進一步用防火牆進行封鎖。
以下是明天我會分享的內容~🤓
我們明天見!🥳