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