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