跳到主要內容

Stateful Inspection 深度解析:State Table 如何賦予防火牆連線情境感知能力

靜態封包過濾只看單一封包,無法辨別「回應」與「攻擊」的差異。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 的運作機制,是掌握現代防火牆與零信任架構設計的關鍵基礎。

📚 參考文獻

  1. Netfilter Project — Connection Tracking (conntrack)https://www.netfilter.org/documentation/(Linux 核心層級 Stateful Inspection 官方文件)
  2. Cheswick, W. R. & Bellovin, S. M. (1994). Firewalls and Internet Security(Stateful Inspection 概念奠基著作)
  3. NIST SP 800-41 Rev.1 — Guidelines on Firewalls and Firewall Policyhttps://csrc.nist.gov/publications/detail/sp/800-41/rev-1/final

⚠️ 本文內容基於撰寫時的最新資訊,實際應用時請參考官方文件的最

留言