防火墻的基本分類
1.包過濾防火墻
第一代防火墻和最基本形式防火墻檢查每一個通過的網(wǎng)絡(luò)包,或者丟棄,或者放行,取決于所建立的一套規(guī)則。這稱為包過濾防火墻。
本質(zhì)上,包過濾防火墻是多址的,表明它有兩個或兩個以上網(wǎng)絡(luò)適配器或接口。例如,作為防火墻的設(shè)備可能有兩塊網(wǎng)卡(NIC),一塊連到內(nèi)部網(wǎng)絡(luò),一塊連到公共的Internet。防火墻的任務(wù),就是作為“通信警察”,指引包和截住那些有危害的包。
包過濾防火墻檢查每一個傳入包,查看包中可用的基本信息(源地址和目的地址、端口號、協(xié)議等)。然后,將這些信息與設(shè)立的規(guī)則相比較。如果已經(jīng)設(shè)立了阻斷telnet連接,而包的目的端口是23的話,那么該包就會被丟棄。如果允許傳入Web連接,而目的端口為80,則包就會被放行。
多個復(fù)雜規(guī)則的組合也是可行的。如果允許Web連接,但只針對特定的服務(wù)器,目的端口和目的地址二者必須與規(guī)則相匹配,才可以讓該包通過。
最后,可以確定當一個包到達時,如果對該包沒有規(guī)則被定義,接下來將會發(fā)生什么事情了。通常,為了安全起見,與傳入規(guī)則不匹配的包就被丟棄了。如果有理由讓該包通過,就要建立規(guī)則來處理它。
建立包過濾防火墻規(guī)則的例子如下:
對來自專用網(wǎng)絡(luò)的包,只允許來自內(nèi)部地址的包通過,因為其他包包含不正確的包頭部信息。這條規(guī)則可以防止網(wǎng)絡(luò)內(nèi)部的任何人通過欺騙性的源地址發(fā)起攻擊。而且,如果黑客對專用網(wǎng)絡(luò)內(nèi)部的機器具有了不知從何得來的訪問權(quán),這種過濾方式可以阻止黑客從網(wǎng)絡(luò)內(nèi)部發(fā)起攻擊。
在公共網(wǎng)絡(luò),只允許目的地址為80端口的包通過。這條規(guī)則只允許傳入的連接為Web連接。這條規(guī)則也允許與Web連接使用相同端口的連接,所以它并不是十分安全。
丟棄從公共網(wǎng)絡(luò)傳入的包,而這些包都有你的網(wǎng)絡(luò)內(nèi)的源地址,從而減少IP欺騙性的攻擊。丟棄包含源路由信息的包,以減少源路由攻擊。要記住,在源路由攻擊中,傳入的包包含路由信息,它覆蓋了包通過網(wǎng)絡(luò)應(yīng)采取得正常路由,可能會繞過已有的安全程序。通過忽略源路由信息,防火墻可以減少這種方式的攻擊。
2.狀態(tài)/動態(tài)檢測防火墻
狀態(tài)/動態(tài)檢測防火墻,試圖跟蹤通過防火墻的網(wǎng)絡(luò)連接和包,這樣防火墻就可以使用一組附加的標準,以確定是否允許和拒絕通信。它是在使用了基本包過濾防火墻的通信上應(yīng)用一些技術(shù)來做到這點的。
當包過濾防火墻見到一個網(wǎng)絡(luò)包,包是孤立存在的。它沒有防火墻所關(guān)心的歷史或未來。允許和拒絕包的決定完全取決于包自身所包含的信息,如源地址、目的地址、端口號等。包中沒有包含任何描述它在信息流中的位置的信息,則該包被認為是無狀態(tài)的;它僅是存在而已。
一個有狀態(tài)包檢查防火墻跟蹤的不僅是包中包含的信息。為了跟蹤包的狀態(tài),防火墻還記錄有用的信息以幫助識別包,例如已有的網(wǎng)絡(luò)連接、數(shù)據(jù)的傳出請求等。
例如,如果傳入的包包含視頻數(shù)據(jù)流,而防火墻可能已經(jīng)記錄了有關(guān)信息,是關(guān)于位于特定IP地址的應(yīng)用程序最近向發(fā)出包的源地址請求視頻信號的信息。如果傳入的包是要傳給發(fā)出請求的相同系統(tǒng),防火墻進行匹配,包就可以被允許通過。
一個狀態(tài)/動態(tài)檢測防火墻可截斷所有傳入的通信,而允許所有傳出的通信。因為防火墻跟蹤內(nèi)部出去的請求,所有按要求傳入的數(shù)據(jù)被允許通過,直到連接被關(guān)閉為止。只有未被請求的傳入通信被截斷。
如果在防火墻內(nèi)正運行一臺服務(wù)器,配置就會變得稍微復(fù)雜一些,但狀態(tài)包檢查是很有力和適應(yīng)性的技術(shù)。例如,可以將防火墻配置成只允許從特定端口進入的通信,只可傳到特定服務(wù)器。如果正在運行Web服務(wù)器,防火墻只將80端口傳入的通信發(fā)到指定的Web服務(wù)器。
狀態(tài)/動態(tài)檢測防火墻可提供的其他一些額外的服務(wù)有:
將某些類型的連接重定向到審核服務(wù)中去。例如,到專用Web服務(wù)器的連接,在Web服務(wù)器連接被允許之前,可能被發(fā)到SecutID服務(wù)器(用一次性口令來使用)。
拒絕攜帶某些數(shù)據(jù)的網(wǎng)絡(luò)通信,如帶有附加可執(zhí)行程序的傳入電子消息,或包含ActiveX程序的Web頁面。
跟蹤連接狀態(tài)的方式取決于包通過防火墻的類型:
TCP包。當建立起一個TCP連接時,通過的第一個包被標有包的SYN標志。通常情況下,防火墻丟棄所有外部的連接企圖,除非已經(jīng)建立起某條特定規(guī)則來處理它們。對內(nèi)部的連接試圖連到外部主機,防火墻注明連接包,允許響應(yīng)及隨后再兩個系統(tǒng)之間的包,直到連接結(jié)束為止。在這種方式下,傳入的包只有在它是響應(yīng)一個已建立的連接時,才會被允許通過。
UDP包。UDP包比TCP包簡單,因為它們不包含任何連接或序列信息。它們只包含源地址、目的地址、校驗和攜帶的數(shù)據(jù)。這種信息的缺乏使得防火墻確定包的合法性很困難,因為沒有打開的連接可利用,以測試傳入的包是否應(yīng)被允許通過??墒?,如果防火墻跟蹤包的狀態(tài),就可以確定。對傳入的包,若它所使用的地址和UDP包攜帶的協(xié)議與傳出的連接請求匹配,該包就被允許通過。和TCP包一樣,沒有傳入的UDP包會被允許通過,除非它是響應(yīng)傳出的請求或已經(jīng)建立了指定的規(guī)則來處理它。對其他種類的包,情況和UDP包類似。防火墻仔細地跟蹤傳出的請求,記錄下所使用的地址、協(xié)議和包的類型,然后對照保存過的信息核對傳入的包,以確保這些包是被請求的。
3.應(yīng)用程序代理防火墻
應(yīng)用程序代理防火墻實際上并不允許在它連接的網(wǎng)絡(luò)之間直接通信。相反,它是接受來自內(nèi)部網(wǎng)絡(luò)特定用戶應(yīng)用程序的通信,然后建立于公共網(wǎng)絡(luò)服務(wù)器單獨的連接。網(wǎng)絡(luò)內(nèi)部的用戶不直接與外部的服務(wù)器通信,所以服務(wù)器不能直接訪問內(nèi)部網(wǎng)的任何一部分。
另外,如果不為特定的應(yīng)用程序安裝代理程序代碼,這種服務(wù)是不會被支持的,不能建立任何連接。這種建立方式拒絕任何沒有明確配置的連接,從而提供了額外的安全性和控制性。
例如,一個用戶的Web瀏覽器可能在80端口,但也經(jīng)常可能是在1080端口,連接到了內(nèi)部網(wǎng)絡(luò)的HTTP代理防火墻。防火墻然后會接受這個連接請求,并把它轉(zhuǎn)到所請求的Web服務(wù)器。