ICF作用
ICF 本質上是一個狀態數據包過濾器。與靜態數據包過濾器不同,靜態數據包過濾器僅基於數據包的地址信息來確定是否丟棄數據包,而狀態數據包過濾器的決定會同時基於數據包的狀態和會話的上下文信息。這些存儲的狀態為該過濾器提供了實施比靜態過濾器更為豐富、更為全面的規則集的方法。
ICF 所維護的狀態是一個連線流表。對於面向連線的協定(如 TCP),連線流等價於這些協定的連線定義(例如,源和目標地址、連線埠以及所使用的協定)。對於無連線的協定(如 UDP),連線流是在公共端點(如,IPAddress1/Port1 和 IPAddress2/Port2)之間無中斷髮送的一組數據包。此處的無中斷,是指在給定的時間段(比如 1 分鐘)內沒有任何數據包與該流匹配。
當連線流到時終止或連線被關閉時,表中的狀態信息會被刪除。
ICF規則策略
ICF 在整個狀態數據包過濾中實施的主要安全策略包括三個規則:
該策略允許客戶端對 Internet 的正常訪問(如 Web 瀏覽),同時阻止與這些訪問無關的數據包被傳送到網路堆疊。為了打開特定連線埠(創建靜態過濾器)以便能在防火牆之後運行服務(比如 Web 伺服器),該策略也確保用戶可以對這些規則進行修改。
除安全策略外,ICF 還會對 TCP 數據包執行結構上的檢查。這些檢查包括快速丟棄具有不可能的標記組合的數據包(比如在單個數據包中同時設定有 SYN 和 FIN 標記),以及實施 TCP 三路握手以打開連線埠。前者在面對基於大量隨機數據包的攻擊時能極大地降低處理開銷,而後者可以防範各種掃描技術。