一 前言
此文著重闡述linux下的防火牆的不同實現之間的區別,以ipchains, iptables, checkpoint FW1為例。
二 基本概念
2.0
在進入正題之前,我將花少許篇幅闡述一些基本概念。儘管防火牆的術語這些年基本上沒有太大的變化,但是如果你以前只看過90年代初的一些文獻的話,有些概念仍然會讓你混淆。此處只列出一些最實用的,它們不是準確的定義,我只是儘可能的讓它們便於理解而已。
2.1 包過濾:
防火牆的一類。80年代便有論文來描述這種系統。傳統的包過濾功能在路由器上常可看到,而專門的防火牆系統一般在此之上加了功能的擴充,如狀態檢測等。它通過檢查單個包的地址,協議,連接埠等資訊來決定是否允許此資料包通過。
2.2 代理:
防火牆的一類。工作在應用程式層,特點是兩次串連(browser與proxy之間,proxy與web server之間)。如果對原理尚有疑惑,建議用sniffer抓一下包。代理不在此文的討論範圍之內。
2.3 狀態檢測:
又稱動態包過濾,是在傳統包過濾上的功能擴充,最早由checkpoint提出。傳統的包過濾在遇到利用動態連接埠的協議時會發生困難,如ftp。你事先無法知道哪些連接埠需要開啟,而如果採用原始的靜態包過濾,又希望用到的此服務的話,就需要實現將所有可能用到的連接埠開啟,而這往往是個非常大的範圍,會給安全帶來不必要的隱患。而狀態檢測通過檢查應用程式資訊(如ftp的PORT和PASS命令),來判斷此連接埠是否允許需要臨時開啟,而當傳輸結束時,連接埠又馬上恢複為關閉狀態。
2.4 DMZ非軍事化區:
為了組態管理方便,內部網中需要向外提供服務的伺服器往往放在一個單獨的網段,這個網段便是非軍事化區。防火牆一般配備三塊網卡,在配置時一般分別分別串連內部網,internet和DMZ。
2.5
由於防火牆地理位置的優越(往往處於網路的關鍵出口上),防火牆一般附加了NAT,地址偽裝和VPN等功能,這些不在本文的討論範圍。
三 檢測點
3.0 綜述
包過濾需要檢查IP包,因此它工作在網路層,截獲IP包,並與使用者定義的規則做比較。
3.1 ipchains
摘自【3】
----------------------------------------------------------------
| ACCEPT/ lo interface |
v REDIRECT _______ |
--> C --> S --> ______ --> D --> ~~~~~~~~ -->|forward|----> _______ -->
h a |input | e {Routing } |Chain | |output |ACCEPT