靜態封包過濾只看單一封包,無法辨別「回應」與「攻擊」的差異。Stateful Inspection(狀態監控防火牆)透過維護 State Table,賦予防火牆連線情境感知能力,成為現代網路安全的基石。
什麼是 State Table?
State Table 是防火牆在記憶體中維護的連線追蹤資料庫。每筆連線記錄包含來源 IP、目的 IP、來源 Port、目的 Port、協定類型、TCP 序號以及當前握手狀態(SYN_SENT、ESTABLISHED、FIN_WAIT 等)。當封包抵達時,防火牆先比對 State Table 而非逐條掃描規則;若封包屬於已知合法連線的回應,直接放行,大幅降低規則比對開銷。TCP 三向握手完成後,連線進入 ESTABLISHED 狀態;連線結束或逾時後,對應條目自動移除,動態管理過濾規則的開關。
Stateful vs. 靜態封包過濾:關鍵差異
靜態封包過濾(第一代防火牆)對每個封包獨立判斷,必須開放高位 Port(1024–65535)才能接收回應,形成巨大攻擊面。Stateful Inspection(第三代防火牆)則知道「這個 ACK 封包對應哪一筆我主動發起的 SYN」,因此僅允許合法回應封包通過,拒絕所有未對應連線的非預期封包。UDP 雖無握手機制,防火牆仍以「發送後限時等待回應」的偽狀態模擬追蹤,有效防範 UDP Flooding 偽造回應攻擊。
# Linux conntrack:查看當前 State Table 內容
$ conntrack -L
tcp 6 ESTABLISHED src=192.168.1.10 dst=93.184.216.34 sport=54321 dport=443
tcp 6 TIME_WAIT src=192.168.1.10 dst=93.184.216.34 sport=54320 dport=80
💡 重點整理
- State Table 追蹤五元組:src/dst IP、src/dst Port、Protocol,加上 TCP 序號與握手狀態。
- 動態規則開關:連線建立時自動新增放行條目,結束或逾時後立即移除。
- 防禦偽造回應:無對應連線記錄的封包一律丟棄,杜絕 IP Spoofing 回應攻擊。
- UDP 偽狀態追蹤:以時間窗口模擬連線狀態,彌補無連線協定的安全缺口。
Stateful Inspection 讓防火牆從「逐包審查員」進化為「連線情境感知守門人」。理解 State Table 的運作機制,是掌握現代防火牆與零信任架構設計的關鍵基礎。
📚 參考文獻
- Netfilter Project — Connection Tracking (conntrack):https://www.netfilter.org/documentation/(Linux 核心層級 Stateful Inspection 官方文件)
- Cheswick, W. R. & Bellovin, S. M. (1994). Firewalls and Internet Security(Stateful Inspection 概念奠基著作)
- NIST SP 800-41 Rev.1 — Guidelines on Firewalls and Firewall Policy:https://csrc.nist.gov/publications/detail/sp/800-41/rev-1/final
⚠️ 本文內容基於撰寫時的最新資訊,實際應用時請參考官方文件的最
留言
張貼留言