IPv6防火墻設(shè)計技術(shù)介紹
1 引言
“流過濾”技術(shù)融合了包過濾和應(yīng)用代理安全性和優(yōu)點,克服了包過濾和應(yīng)用代理的諸多缺陷,代表了一種全新的防火墻技術(shù)結(jié)構(gòu)。在大家紛紛開始關(guān)注應(yīng)用層安全的今天,“流過濾”技術(shù)架構(gòu)更加顯示了其前瞻性和先進(jìn)性。經(jīng)過近幾年的不斷完善和實際使用中的磨合,新產(chǎn)品的“流過濾”引擎已經(jīng)相當(dāng)成熟和完善,在性能和穩(wěn)定性方面得到了大幅度的提升,使其能夠滿足關(guān)鍵業(yè)務(wù)領(lǐng)域的長期穩(wěn)定運(yùn)行的要求。但這都是針對IPv4防火墻的,隨著IPv6網(wǎng)絡(luò)[1]的普及,對基于流過濾技術(shù)的IPv6防火墻設(shè)計和分析則是一個新的研究熱點。
2 流過濾技術(shù)研究
“流過濾”技術(shù)[2]是以狀態(tài)檢測包過濾的形態(tài)實現(xiàn)對應(yīng)用層保護(hù)的一種防火墻過濾技術(shù),基本原理是在狀態(tài)檢測包過濾的基礎(chǔ)上,針對具體應(yīng)用層協(xié)議采用專門設(shè)計的TCP/IP協(xié)議棧實現(xiàn)對鏈路層數(shù)據(jù)流在應(yīng)用層重組并在此基礎(chǔ)上進(jìn)行過濾,以包過濾的形態(tài)提供應(yīng)用層保護(hù)能力,使得規(guī)則匹配在防火墻內(nèi)部由數(shù)據(jù)鏈路層直達(dá)應(yīng)用層。
2.1 流過濾處理策略
在流過濾報文處理策略中,要對不同報文區(qū)別對待,一部分類型的報文使用流過濾技術(shù),其它類型的報文使用包過濾技術(shù),比如說ARP報文、UDP報文、非用來傳輸數(shù)據(jù)的TCP報文都使用包過濾技術(shù),這些報文可根據(jù)MAC首部、IP首部、TCP首部進(jìn)行判斷。但判斷用來傳輸數(shù)據(jù)的TCP報文中哪些使用流過濾技術(shù)哪些使用包過濾技術(shù)的判定依據(jù)是TCP報文中的首部端口號、某些標(biāo)志字段及應(yīng)用層協(xié)議首部某些字段。使用流過濾技術(shù)的報文稱為關(guān)鍵報文,而其它的報文統(tǒng)稱為非關(guān)鍵報文。
2.2 流過濾的處理步驟
當(dāng)對關(guān)鍵報文應(yīng)用流過濾技術(shù)處理時,流過濾技術(shù)邏輯上斷開數(shù)據(jù)發(fā)送端與數(shù)據(jù)接受端之間的直接網(wǎng)絡(luò)連接,即發(fā)送端與接受端之間在傳輸數(shù)據(jù)之前建立的網(wǎng)絡(luò)連接仍然存在,但發(fā)送端與接受端之間的數(shù)據(jù)傳輸必須通過使用流過濾技術(shù)的防火墻中轉(zhuǎn)。如圖1所示。
圖1 防火墻利用流過濾技術(shù)對關(guān)鍵報文進(jìn)行處理的過程,按照時間先后順序可分為三個步驟:
(1)對發(fā)送端發(fā)送應(yīng)答報文,并將同一會話中的全部關(guān)鍵報文在應(yīng)用層數(shù)據(jù)重組。
?。?)按照流過濾規(guī)則對重組后的完整數(shù)據(jù)進(jìn)行合法性檢查,并做相應(yīng)處理。
(3)對通過合法性檢查的數(shù)據(jù)發(fā)送給接受端,并處理接受端發(fā)出的應(yīng)答報文。
2.3 流過濾實現(xiàn)要點
(1)報文分類:首先利用報文信息判斷第一個報文是否為關(guān)鍵報文,若是,記錄下IPv6基本報頭的流標(biāo)識字段值。對于收到的第二個報文,先與第一個比較流標(biāo)識字段值,若相等,則說明它們屬于同一個會話,第二個報文也為關(guān)鍵報文;否則再利用報文信息判斷是否為關(guān)鍵報文,若是,記錄下流標(biāo)識字段值。
?。?)發(fā)送應(yīng)答報文:關(guān)鍵在于應(yīng)答報文中IP首部標(biāo)識字段、TCP首部確認(rèn)序號及IP首部、TCP首部校驗和的計算。
?。?)判斷同一會話關(guān)鍵報文是否傳輸完畢:在同一會話中收到TCP首部FIN標(biāo)志位為1的報文,即可確定傳送傳輸完畢。
?。?)重組關(guān)鍵報文:通過報文中TCP首部序號字段的值及應(yīng)用數(shù)據(jù)的長度發(fā)現(xiàn)重復(fù)報文,并根據(jù)后發(fā)送報文的TCP首部序字段的值等于先發(fā)送報文TCP首部序號值加上應(yīng)用層數(shù)據(jù)長度加1這條規(guī)則,排列好同一會話的所有報文。
?。?)發(fā)送合法數(shù)據(jù):需要發(fā)送數(shù)據(jù)時把原始報文按順序發(fā)送給接受端。
3 IPv6防火墻系統(tǒng)的設(shè)計
3.1 體系結(jié)構(gòu)
在IPv6網(wǎng)絡(luò)通信中,數(shù)據(jù)流是以密文的形式在網(wǎng)絡(luò)中傳輸,IPv6報文都是加密的,防火墻無法獲得相關(guān)信息進(jìn)行過濾,要么全部阻攔數(shù)據(jù)包則網(wǎng)絡(luò)將不能進(jìn)行通信,要么全部放行則容易受到攻擊。為解決這一問題,本文將采用屏蔽子網(wǎng)防火墻系統(tǒng)結(jié)構(gòu)[4],在此系統(tǒng)中的堡壘主機(jī)上實現(xiàn)流過濾技術(shù)。如圖2所示。
圖2 IPV6防火墻體系結(jié)構(gòu)圖
該系統(tǒng)層次結(jié)構(gòu)示意圖如圖3所示。
圖3 IPv6防火墻系統(tǒng)層次結(jié)構(gòu)示意圖 [!--empirenews.page--]
3.2 運(yùn)行平臺及開發(fā)工具
Linux作為開放源代碼的操作系統(tǒng)[5],性能穩(wěn)定且安全性較高,有著廣泛的應(yīng)用。自2.4內(nèi)核以來的版本不僅支持IPv6協(xié)議棧,而且所采用的Netifilter/Iptables框架引入了模塊化的構(gòu)建方式,可以方便地實現(xiàn)IPv6防火墻。并且還得利用MySql數(shù)據(jù)庫來保存信息。開發(fā)工具為C語言。
3.3 基于流過濾技術(shù)的IPv6防火墻系統(tǒng)設(shè)計
3.3.1 防火墻設(shè)計圖
圖4 IPv6防火墻設(shè)計圖
3.3.2 本文設(shè)計各模塊實現(xiàn)的功能
數(shù)據(jù)包捕獲模塊:實現(xiàn)對IPv6數(shù)據(jù)包的捕獲,并進(jìn)行報文分類。
包過濾模塊:實現(xiàn)對非關(guān)鍵報文的過濾。
流過濾模塊:實現(xiàn)對關(guān)鍵報文的重組過濾。
控管規(guī)則模塊:負(fù)責(zé)對過濾規(guī)則進(jìn)行控制和管理。
報警信息記錄模塊:負(fù)責(zé)將報警信息記錄進(jìn)日志數(shù)據(jù)庫,并將報警信息交給客戶端處理。
客戶端模塊:查詢數(shù)據(jù)庫和查看報警信息。
3.4 實現(xiàn)過程
本文主要是利用Linux內(nèi)核防火墻底層結(jié)構(gòu)netfilter的高度可擴(kuò)展性,對其功能進(jìn)行擴(kuò)展。Nefilter針對IPv6定義了若干個鉤子(HOOK),每個鉤子都是處理函數(shù)掛載點。當(dāng)IPv6的數(shù)據(jù)包將按照一定的規(guī)則通過若干個鉤子時,就會觸發(fā)這些函數(shù)進(jìn)行相關(guān)處理。本防火墻主要是數(shù)據(jù)經(jīng)過鉤子NF_IP6_FORWARD即數(shù)據(jù)包轉(zhuǎn)發(fā)時,對數(shù)據(jù)進(jìn)行處理和控制,所以本防火墻的程序主要掛載在這個鉤子上。
4 實驗及結(jié)論
經(jīng)測試本文設(shè)計的防火墻系統(tǒng)在IPv6網(wǎng)路環(huán)境中能夠獲得嚴(yán)格的IPv6訪問控制策略,實現(xiàn)對IPv6數(shù)據(jù)包的控制訪問;并且在流量大于100Mbps的千兆網(wǎng)卡上,丟包率小于萬分之(如表1所示),性能達(dá)到了防火墻行業(yè)的性能標(biāo)準(zhǔn)。
千兆網(wǎng)卡80%負(fù)載丟包率
5 結(jié)束語
本文在采用屏蔽子網(wǎng)防火墻體系結(jié)構(gòu)基礎(chǔ)上,設(shè)計并實現(xiàn)了基于流過濾技術(shù)的IPv6防火墻系統(tǒng),經(jīng)實驗測試達(dá)到了防火墻行業(yè)的性能標(biāo)準(zhǔn)。但該系統(tǒng)卻打破了IPv6的端到端模式,在IPv6網(wǎng)絡(luò)中,端對端的通信是一種重要的通信方式也是IPv6的一個重要的優(yōu)點。如何實現(xiàn)基于流過濾技術(shù)的IPv6端對端的防火墻系統(tǒng)將是本文下一步研究的重點。