李國(guó)芳
(廣州衛(wèi)生學(xué)校,廣東廣州,510450)
計(jì)算機(jī)安全是全球網(wǎng)絡(luò)中最重要的課題,計(jì)算機(jī)安全與管理,特別是關(guān)系國(guó)計(jì)民生的項(xiàng)目,例如銀行、航空、電網(wǎng)、科研等都是計(jì)算機(jī)安全維護(hù)的核心和重點(diǎn)。當(dāng)前影響到計(jì)算機(jī)網(wǎng)絡(luò)的因素有很多,不少因素有可能是有意、也可能是人為造成的,因此研究網(wǎng)絡(luò)安全造成的因素有很現(xiàn)實(shí)的意義。
防火墻(英文:firewall)是一項(xiàng)協(xié)助確保信息安全的設(shè)備,會(huì)依照特定的規(guī)則,允許或是限制傳輸?shù)臄?shù)據(jù)通過(guò)。其主要指的是一個(gè)由軟件和硬件設(shè)備組合而成、在內(nèi)部網(wǎng)和外部網(wǎng)之間、專(zhuān)用網(wǎng)與公共網(wǎng)之間的界面上構(gòu)造的保護(hù)屏障。
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,防火墻的技術(shù)也在不斷更新?lián)Q代,當(dāng)前防火墻的分類(lèi)和功能已經(jīng)有了明顯的提升,從其功能而言,我們可以直接劃分為兩大類(lèi):包過(guò)濾防火墻和應(yīng)用級(jí)防火墻。
又叫網(wǎng)絡(luò)級(jí)防火墻,因?yàn)樗恼麄€(gè)檢測(cè)工作主要是在網(wǎng)絡(luò)層運(yùn)行的。其主要是通過(guò)檢測(cè)網(wǎng)絡(luò)中收發(fā)的包地址、協(xié)議、端口等信息,通過(guò)判斷該包是否符合發(fā)放要求來(lái)決定該包是否能夠通過(guò)。一般而言,路由器中就包含著這樣的網(wǎng)絡(luò)級(jí)防火墻。
應(yīng)用級(jí)防火墻主要的工作內(nèi)容是檢測(cè)進(jìn)入的數(shù)據(jù)包,通過(guò)網(wǎng)關(guān)復(fù)制傳遞數(shù)據(jù),防止受信主機(jī)與非受信主機(jī)間直接建立聯(lián)系。
應(yīng)用級(jí)防火墻在實(shí)際使用中,由于在網(wǎng)絡(luò)中通過(guò)防火墻訪問(wèn)Internet,,因此一旦網(wǎng)絡(luò)不穩(wěn)定或者網(wǎng)絡(luò)存在故障時(shí),可能會(huì)出現(xiàn)多次登錄、數(shù)據(jù)延遲等問(wèn)題。因此可知,使用應(yīng)用級(jí)防火墻的協(xié)議代理軟件,其效率遠(yuǎn)遠(yuǎn)不及網(wǎng)絡(luò)防火墻。
包過(guò)濾防火墻和應(yīng)用級(jí)防火墻是網(wǎng)絡(luò)防火墻中最常見(jiàn)的兩種防毒方式,它們都是通過(guò)分析數(shù)據(jù)包、根據(jù)規(guī)則解析數(shù)據(jù)包,并將數(shù)據(jù)包再次傳遞,從而有效的方式病毒的侵入,維護(hù)網(wǎng)絡(luò)安全。
當(dāng)前市面上的防火墻主要有如下幾種功能來(lái)確保網(wǎng)絡(luò)安全:
包過(guò)濾是防火墻所要實(shí)現(xiàn)的最基本功能,現(xiàn)在的防火墻已經(jīng)由最初的地址、端口判定控制,發(fā)展到判斷通信報(bào)文協(xié)議頭的各部分,以及通信協(xié)議的應(yīng)用層命令、內(nèi)容、用戶(hù)認(rèn)證、用戶(hù)規(guī)則甚至狀態(tài)檢測(cè)等等。
在防火墻結(jié)合網(wǎng)絡(luò)配置和安全策略對(duì)相關(guān)數(shù)據(jù)分析完成以后,就要作出接受、拒絕、丟棄或加密等決定(target)。如果某個(gè)訪問(wèn)違反安全規(guī)定,審計(jì)和報(bào)警機(jī)制開(kāi)始起作用,并作記錄,報(bào)告等等。
防火墻管理界面一般是對(duì)防火墻進(jìn)行配置、管理和監(jiān)控、查閱當(dāng)前狀態(tài)等。防火墻管理界面設(shè)計(jì)直接關(guān)系到防火墻的使用方便性和安全性。
網(wǎng)絡(luò)地址轉(zhuǎn)換似乎已經(jīng)成了防火墻的“標(biāo)配”,絕大多數(shù)防火墻都加入了該功能。 目前防火墻一般采用雙向NAT:SNAT和DNAT。SNAT用于對(duì)內(nèi)部網(wǎng)絡(luò)地址進(jìn)行轉(zhuǎn)換,對(duì)外部網(wǎng)絡(luò)隱藏起內(nèi)部網(wǎng)絡(luò)的結(jié)構(gòu),使得對(duì)內(nèi)部的攻擊更加困難;并可以節(jié)省IP資源,有利于降低成本。DNAT主要實(shí)現(xiàn)用于外網(wǎng)主機(jī)對(duì)內(nèi)網(wǎng)和DMZ區(qū)主機(jī)的訪問(wèn)。
流量控制對(duì)于防火墻技術(shù)而言是較為簡(jiǎn)單的統(tǒng)計(jì)功能,其主要可以分為基于單個(gè)IP地址控制或者基于用戶(hù)控制。基于IP地址控制是對(duì)整個(gè)防火墻的網(wǎng)絡(luò)接口流量進(jìn)行統(tǒng)一的控制,而基于用戶(hù)控制是通過(guò)判斷用戶(hù)登錄的用戶(hù)名進(jìn)行分析每個(gè)用戶(hù)的使用流量,從而有效的方式某些應(yīng)用程序或者用戶(hù)占用資源過(guò)多而造成資源的浪費(fèi)。
為了能夠更清晰的闡述防火墻在防毒過(guò)程中的變化,本文就有狀態(tài)防火墻的算法進(jìn)行了闡述,當(dāng)然防火墻的實(shí)際算法不止這一種,但是基于此算法我們還能夠看出防火墻的整個(gè)工作狀態(tài)。
整個(gè)包過(guò)濾防火墻在收集到數(shù)據(jù)包頭信息之后,會(huì)對(duì)其進(jìn)行數(shù)據(jù)解析,通過(guò)與規(guī)則庫(kù)中的安全規(guī)則進(jìn)行匹配之后,確認(rèn)該數(shù)據(jù)包是否需要丟棄或者放行,因此,在此一過(guò)程中,CheckPoint首先提出了一種新的防火模式——有狀態(tài)防火墻。其主要基于一個(gè)基本事實(shí),即網(wǎng)絡(luò)中大部分?jǐn)?shù)據(jù)都是通過(guò)面向連接的TCP協(xié)議進(jìn)行傳輸,只要控制整個(gè)連接過(guò)程就可以認(rèn)為該信息通信過(guò)程是可信的,有狀態(tài)防火墻的數(shù)據(jù)處理流程如下圖1所示。
本文主要是以對(duì)象的方式和管理連接整個(gè)實(shí)體,每個(gè)實(shí)體是一個(gè)對(duì)象,對(duì)象都是有生命周期、屬性和實(shí)現(xiàn)方法。
實(shí)體的產(chǎn)生過(guò)程:每個(gè)Client和Server之間連接的三次握手過(guò)程,構(gòu)成一個(gè)實(shí)體的產(chǎn)生,這是一個(gè)臨時(shí)過(guò)程,一旦連接成功,防火墻將會(huì)生成一個(gè)完整的實(shí)體,連接失敗,防火墻將會(huì)釋放奔馳連接所占用的資源。
實(shí)體的狀態(tài):實(shí)體之間的記錄連接記錄著當(dāng)前實(shí)體的狀態(tài)(例如:雙方連接序號(hào)、確認(rèn)數(shù)據(jù)狀態(tài)、連接信息狀態(tài)等),隨著通信環(huán)節(jié)的反復(fù),不斷更新實(shí)體狀態(tài)。
實(shí)體的運(yùn)行方法:對(duì)于非連接請(qǐng)求的數(shù)據(jù)包,如果它不屬于任何一個(gè)實(shí)體裝填,則被直接丟棄,對(duì)于某一實(shí)體的數(shù)據(jù)包,實(shí)體大都會(huì)檢測(cè)符合TCP/IP協(xié)議的狀態(tài)轉(zhuǎn)換規(guī)格。
這樣,實(shí)體的功能決定了防火墻過(guò)濾功能的強(qiáng)度,匹配算法的效率決定了防火墻的整體效率。下面對(duì)算法的實(shí)現(xiàn)和性能做進(jìn)一步的分析。
防火墻效率的關(guān)鍵在于規(guī)則庫(kù)的匹配而有狀態(tài)防火墻把主要負(fù)載從規(guī)則庫(kù)匹配轉(zhuǎn)移到了連接實(shí)體在實(shí)體集的匹配文中提出了基于哈希表的實(shí)體管理機(jī)制分析表明算法空間復(fù)雜性為O(n)時(shí)間復(fù)雜性為O(1)可以作為防火墻比較理想的算法
1)算法
設(shè)哈希函數(shù)的輸入為Packet Key (或Entity Key)按如下規(guī)則構(gòu)造哈希函數(shù)Hash():
(1)Addr =sa+da,記為 Addr[ 0..32 ],33bit
(2)Port =sp+dp 記為 Port[ 0..16 ], 17bit
(3)構(gòu)造位數(shù)組 Key[ 0..59 ]= [ Addr[ 0..32 ],0*0,Port[ 0..16 ]]
(4)對(duì)Key[ 0..59 ]分三段進(jìn)行折疊異或運(yùn)算,取結(jié)果為Result[ 0..19 ],20bit等效運(yùn)算如圖4 所示:2)算法實(shí)現(xiàn)
綜合以上論述下面給出算法實(shí)現(xiàn)的主體框架
int Process struct Packet packet
{
if packet (3way hand shake packet)
return EntityBuildProc(packet); // 判斷為3 次握手?jǐn)?shù)據(jù)轉(zhuǎn)對(duì)應(yīng)處理程序
if EntitySet[Hash(packet)]== NULL
return 1 // 在哈希表中匹配實(shí)體失敗丟棄數(shù)據(jù)包
if (entity = GetEntity(EntitySet[Hash(packet),packet])== NULL
return 1 // 在沖突鏈表中匹配實(shí)體失敗丟棄數(shù)據(jù)包
if entity.CheckState (Packet)== OK // 檢查實(shí)體當(dāng)前狀態(tài)
{
entity.ChangeState (Packet)// 修改實(shí)體當(dāng)前狀態(tài)
return 0 // 接受合法數(shù)據(jù)包
}
return 1
}
int CheckState (Packet)
{
check TCP flag consistency
check Sequence Number
check Acknowledgment Number
extended check behavior // 擴(kuò)展功能例如基于內(nèi)容的過(guò)濾
}
防火墻技術(shù)從總體而言還處于一個(gè)發(fā)展階段。要真正的實(shí)現(xiàn)其主動(dòng)、自動(dòng)抵御外來(lái)侵入,還需要對(duì)網(wǎng)絡(luò)進(jìn)行更多的設(shè)置和保護(hù)。因此,密切關(guān)注防火墻的最新發(fā)展,對(duì)推動(dòng)lntemet在我國(guó)的健康發(fā)展有著重要的意義。
[1]張鳴,高楊.計(jì)算機(jī)網(wǎng)絡(luò)安全與防火墻技術(shù)研究.河南:黃河水利職業(yè)技術(shù)學(xué)院學(xué)報(bào),2011
[2]曹進(jìn),張平.現(xiàn)代網(wǎng)絡(luò)安全與防火墻研究.北京:中國(guó)科技信息,2006
[3]趙新亭.計(jì)算機(jī)網(wǎng)絡(luò)防火墻技術(shù)研究.北京:中國(guó)新技術(shù)新產(chǎn)品,2008
[4]胡道元,閔京華.網(wǎng)絡(luò)安全技術(shù)[M].北京:清華大學(xué)出版社,2004
[5]王竹林,張勝.網(wǎng)絡(luò)安全實(shí)踐[M].西安:電子科技大學(xué)出版社,2004
[6]袁家政.計(jì)算機(jī)網(wǎng)絡(luò)安全與應(yīng)用技術(shù).北京:清華大學(xué)出版社,2005
[7]常紅.網(wǎng)絡(luò)安全技術(shù)與反黑客.北京:冶金工業(yè)出版社,2004