相關(guān)鏈接: 中國安全網(wǎng) 中國質(zhì)量網(wǎng) 中國論文網(wǎng) 中國資訊網(wǎng)
孫鵬
(中國電子科技集團(tuán)公司電子科學(xué)研究院,北京100041)
摘要:當(dāng)前互聯(lián)網(wǎng)上出現(xiàn)越來越多的基于源地址欺騙的網(wǎng)絡(luò)攻擊,這類攻擊很難被追查,對網(wǎng)絡(luò)安全造成巨大威脅。在傳統(tǒng)網(wǎng)絡(luò)條件的限制下,實現(xiàn)源地址驗證會遇到很多困難。得益于軟件定義網(wǎng)絡(luò)( SDN)帶來的網(wǎng)絡(luò)革新,網(wǎng)絡(luò)控制變得更加便捷。面向SDN架構(gòu),利用可編程控制器對源地址驗證方法進(jìn)行重新設(shè)計和實現(xiàn),提出兩種面向SDN的源地址驗證方法:一種是將無狀態(tài)的lP地址與底層不可變標(biāo)記如MAC地址、端口號綁定起來,在交換機(jī)中形成(MAC地址,端口號,源lP地址)三元組流表的過濾規(guī)則;另一種是利用最短路徑算法計算路由路徑,向路徑上交換機(jī)下發(fā)(源lP地址,目的lP地址,入端口,出端口)四元組流表作為過濾準(zhǔn)則。最后進(jìn)行仿真實驗,比較兩種方案的實驗結(jié)果。
0 引言
軟件定義網(wǎng)絡(luò)( Software-Defined Networking,SDN)誕生于美國斯坦福大學(xué)的Clean Slate項目,以MICKE-OWN N教授為首的團(tuán)隊提出OpenFlow概念…用于校園網(wǎng)的試驗創(chuàng)新,將傳統(tǒng)的控制平面和轉(zhuǎn)發(fā)平面相分離,以網(wǎng)絡(luò)操作系統(tǒng)的形式和自由可編程的方法統(tǒng)一管理網(wǎng)絡(luò)設(shè)備,提高網(wǎng)絡(luò)控制靈活性、開放性,符合未來互聯(lián)網(wǎng)的發(fā)展需求,使其一經(jīng)提出便成為學(xué)術(shù)界和產(chǎn)業(yè)界的熱點概念。
傳統(tǒng)網(wǎng)絡(luò)轉(zhuǎn)發(fā)基于TCP/IP協(xié)議棧,源主機(jī)將自己的源地址填入報文首部,路由器只根據(jù)目的地址進(jìn)行轉(zhuǎn)發(fā)而不對源地址的真實性做出檢查。這使得攻擊者很容易假冒他人身份,向報文中填人虛假的源地址,發(fā)動諸如DDoS攻擊、IP地址欺騙、TCP SYN flood攻擊等網(wǎng)絡(luò)攻擊,源地址驗證技術(shù)便是解決這個問題的方法之一。
在此背景下,研究SDN工作機(jī)制,將SDN與現(xiàn)有技術(shù)結(jié)合是發(fā)展SDN的一個重要方向,將源地址驗證技術(shù)在SDN上實現(xiàn),對于SDN的推廣和網(wǎng)絡(luò)安全具有積極意義。
1 源地址驗證相關(guān)技術(shù)
目前學(xué)術(shù)界已提出多種源地址驗證技術(shù),依據(jù)設(shè)計方法和工作思路的不同,主要分為源地址端到端驗證機(jī)制、源地址路徑過濾驗證機(jī)制和事后追蹤機(jī)制。
1.1 源地址端到端驗證機(jī)制
此類驗證機(jī)制主要是在端節(jié)點處對源地址進(jìn)行驗證工作,使得報文接收端在接收報文時就能驗證源地址的真實性,可以通過在報文的發(fā)送端添加簽名,在接收端根據(jù)簽名驗證報文源地址真實性。典型的代表技術(shù)有IPSec,APPA和SPM等。
1.2源地址路徑過濾驗證機(jī)制
此類驗證機(jī)制主要是在數(shù)據(jù)包轉(zhuǎn)發(fā)路徑上依據(jù)不同的準(zhǔn)則進(jìn)行驗證工作,轉(zhuǎn)發(fā)路徑上的中間節(jié)點如路由器、交換機(jī)等具有源地址驗證、過濾的功能,在接收端未受到傷害時將攻擊報文清除。典型的代表方法有Ingress Filter,uRPF( unicast Reverse Path Forward-ing) ,DPF( Route-Based Packet Filter), HCF'7]( HopCounter Filter)和SAVA( Source Address ValidationArchitecture)等。
1.3事后追蹤機(jī)制
此類機(jī)制無法保護(hù)終端不受網(wǎng)絡(luò)攻擊,但在攻擊后,可以對攻擊包的源頭進(jìn)行溯源,定位攻擊報文的真實源頭,主要采用報文標(biāo)記、路由器H志等方式找到攻擊報文源頭,典型代表有PI,PPM和DPM等。
1.4本文用到的驗證方法
本文使用的兩種方法均屬于源地址路徑過濾驗證機(jī)制,基于域內(nèi)源地址驗證架構(gòu),在自治域內(nèi),在報文傳播路徑上用不同的過濾規(guī)則對報文進(jìn)行過濾,以達(dá)到源地址驗證目的,兩種方案如下。
方案1綁定MAC地址和IP地址。
如今比較流行的聯(lián)網(wǎng)方式是把主機(jī)通過局域網(wǎng)組織在一起,然后通過交換機(jī)、路由器和Internet相連,這樣就出現(xiàn)了如何識別用戶、防止盜用的問題。由于IP地址只是邏輯上的標(biāo)識,可以隨意修改,不能用來標(biāo)識用戶;而MAC地址是物理上的標(biāo)識,固化在網(wǎng)卡里,是
很難被冒用的。針對IP地址時常被盜用和偽造的問題,將IP和MAC地址綁定起來便是解決的辦法之一,事先獲得主機(jī)的IP地址、MAC地址和路由器接口信息,將無狀態(tài)的IP地址和底層的MAC地址、交換機(jī)Port綁定起來,形成(MAC地址,Port,IP地址的)過濾表項,根據(jù)過濾表對偽造IP源地址報文進(jìn)行過濾。其中Port為交換機(jī)端口,即使有人盜用了IP地址和MAC地址,他也不可能擁有真實的路由連接端口,從而在物理通道上隔離盜用者。
如圖1所示,交換機(jī)事先獲得主機(jī)A的源地址IP-src,MAC地址以及主機(jī)與交換機(jī)相連的端口Portl,在交換機(jī)中添加一個( MAC1,Portl,IPsrc)過濾表項,當(dāng)真實源地址的報文到達(dá)交換機(jī)時,檢查過濾規(guī)則,驗證源地址為真實,通過報文并轉(zhuǎn)發(fā);當(dāng)偽造源地址報文到達(dá)交換機(jī)時,與過濾表項規(guī)則不匹配,驗證失敗,丟棄不匹配的報文。
將MAC地址和IP地址綁定,實現(xiàn)起來很簡單,配置容易,不過當(dāng)一臺主機(jī)重新申請IP地址,或者設(shè)備更換網(wǎng)卡,造成IP地址和MAC地址變動時,需要向網(wǎng)絡(luò)管理員提交更改后的地址,網(wǎng)絡(luò)管理員做好登記,再手動進(jìn)行更改綁定表,耗時且步驟繁瑣,F(xiàn)有網(wǎng)絡(luò)體系下,很難自動快速地更新( MAC,Port,IP)綁定表,這是該方案的不足之處。
方案2計算路徑過濾。
在域內(nèi)收斂的情況下,從某個源主機(jī)發(fā)往某目的主機(jī)的報文所走的路由路徑是一定的,通過獲取路由接口信息和鄰居互聯(lián)信息,進(jìn)行路由計算,事先計算出域內(nèi)某一臺主機(jī)到另一臺主機(jī)的路徑,而偽造源地址的報文所走路徑與事先計算的路徑并不相符。如圖2所示,從主機(jī)A發(fā)往主機(jī)B的數(shù)據(jù)包,計算出其所走的路由路徑為:主機(jī)A→交換機(jī)1→交換機(jī)2→交換機(jī)3→主機(jī)B,當(dāng)主機(jī)C偽造主機(jī)A的IP地址向主機(jī)B發(fā)送數(shù)據(jù)包,所走實際路由路徑為:主機(jī)C→交換機(jī)4→交換機(jī)2→交換機(jī)3→主機(jī)B。對比可以發(fā)現(xiàn),偽造源地址數(shù)據(jù)包所走路徑和計算好的正確路徑并不相符,因此在轉(zhuǎn)發(fā)路徑上可以用某種過濾規(guī)則過濾掉。
這是一個輕量級且效果顯著的方案,過濾報文所增加的工作僅僅是在路由器中增加一條過濾規(guī)則和多進(jìn)行一次或者兩次路由表查找。如果僅僅是在單個路由器部署,過濾效果會很有限,因為一個路由器連接的鏈路有限,如果在域內(nèi)多個路由器部署,對于抵抗DDoS攻擊,效果將會十分明顯,在自治域內(nèi)17%交換機(jī)部署這個方案,可有效過濾80%的源IP地址偽造數(shù)據(jù)包。
在現(xiàn)有的網(wǎng)絡(luò)體系架構(gòu)下實現(xiàn)這個方案還面臨著諸多困難。計算路徑所需要的全局拓?fù)湫畔、鏈路狀態(tài)信息、路由過濾表等,由于各個廠商的路由信息管理庫規(guī)范不統(tǒng)一,從現(xiàn)有路由器上獲取這些信息變得十分困難;計算路徑后,配置路由表規(guī)則需要人工手動遠(yuǎn)程登錄路由器,用命令行的方式配置路由表,效率低下且易出錯;當(dāng)域內(nèi)主機(jī)或者交換機(jī)發(fā)生變化時,也缺乏一個及時有效的自動更新路由表的機(jī)制。因此,在現(xiàn)有的網(wǎng)絡(luò)體系架構(gòu)下,計算路徑過濾方案實現(xiàn)起來難度很大。
2 SDN特點及兩個方案的闡述
2.1 SDN的特點
SDN將網(wǎng)絡(luò)設(shè)備的控制面和轉(zhuǎn)發(fā)面分離,控制面獨立出來成為單獨的網(wǎng)絡(luò)控制器,其上運行網(wǎng)絡(luò)操作系統(tǒng),向上為應(yīng)用層提供可編程接口API,從而構(gòu)建開放的可編程網(wǎng)絡(luò)環(huán)境;向下通過南向接口和虛擬化技術(shù),統(tǒng)一管理網(wǎng)絡(luò)設(shè)備。圖3所示的SDN架構(gòu)圖中,交換機(jī)利用基于安全連接的OpenFlow協(xié)議與遠(yuǎn)程控制器通信。
基于OpenFlow的交換機(jī)需要維護(hù)流表這樣一個重要的部件,其功能是進(jìn)行數(shù)據(jù)包快速匹配和轉(zhuǎn)發(fā),相當(dāng)于傳統(tǒng)交換機(jī)的路由表。流表有包頭、計數(shù)器、動作、優(yōu)先級、超時等規(guī)則,包頭進(jìn)行相關(guān)的規(guī)則匹配,包括人端口、IP地址、MAC地址、以太網(wǎng)類型、VLAN ID和TCP端門號等,計數(shù)器進(jìn)行字節(jié)統(tǒng)計工作,動作則包括丟棄、轉(zhuǎn)發(fā)、排隊和設(shè)置域等?刂破魃线\行網(wǎng)絡(luò)操作系統(tǒng),常見的控制器有NOX,POX,Beacon,F(xiàn)loodlight等(下文以POX為例進(jìn)行講解)。
SDN這種全新的網(wǎng)絡(luò)架構(gòu),如何實現(xiàn)上述兩種源地址驗證方案,能否克服兩方案的不足,又能帶來哪些優(yōu)勢呢?
2.2方案1:綁定MAC地址和IP地址
1)要進(jìn)行MAC地址和lP地址綁定,首先要獲取各個主機(jī)MAC地址、IP地址和交換機(jī)接口Port信息。SDN -大優(yōu)勢就是擁有全局視圖能力,POX控制器通過監(jiān)聽Link_Event,Host_Event,Connection_Up,Connec-tion_Down事件,進(jìn)行鏈路探測,發(fā)送LLDP報文,獲取鏈路連接信息,保存各個主機(jī)和交換機(jī)相連的Port信息保存;通過ARP洪范機(jī)制進(jìn)行MAC地址自學(xué)習(xí),獲取各個主機(jī)MAC地址;通過數(shù)據(jù)包第一次到達(dá)交換機(jī)的Packet_in消息,記錄下各個主機(jī)的IP地址。
2)在POX控制器獲取了以上信息后,用元組形式的數(shù)據(jù)結(jié)構(gòu)在控制器中記錄下每臺主機(jī)的MAC,IP,Port信息,從而以Flow_mod的形式下發(fā)形式為( MAC,IP,Port)的三元組流表至交換機(jī)。
3)當(dāng)同主機(jī)數(shù)據(jù)包再次到達(dá)交換機(jī),進(jìn)行流表查找和匹配工作,如果與( MAC,Port.,IP)形式的流表不匹配,則丟棄報文,若匹配則進(jìn)行轉(zhuǎn)發(fā)。方案1流程如圖4所示。
在SDN架構(gòu)下,該方案實現(xiàn)簡單,最大的優(yōu)勢是POX控制器可以監(jiān)聽鏈路狀況,在有主機(jī)加入,lP地址變更、MAC地址變更和交換機(jī)變更等情況時,通過監(jiān)聽的Link_Event,Host_Event,Connection_Down等事件可以得到及時上報,并在控制器中自動更新( MAC,Port,IP)表。
2.3方案2:計算路徑過濾
這個方案主要包含路由計算和流表生成兩個部分。POX控制器通過監(jiān)聽事件Link _Fvent,Host_Event,Con-nection_Up,Connection_Down,獲取域內(nèi)整個拓?fù)渎酚善鬣従踊ヂ?lián)信息,記錄每個交換機(jī)、相鄰交換機(jī)及相鄰交換機(jī)對應(yīng)的連接端口;以最短路徑算法為基礎(chǔ),計算出自治域內(nèi)任意兩個主機(jī)之間的路由路徑,并給出該路徑上經(jīng)過每個交換機(jī)入口及對應(yīng)的出口,形式為:host→( port,switch,port)→…→host。其中,host為主機(jī),port為交換機(jī)端口,switch為交換機(jī),向路徑上的交換機(jī)下發(fā)形式為( IPsrc,IPdst,In_Port,Out_Port)的四元組流表,以此作為過濾規(guī)則,過濾偽造源地址報文。
路由計算采用最短路徑Floyd算法,算法過程如下。
1)將拓?fù)渲懈鹘粨Q機(jī)依次編號為1,2,3,…,n,計算鄰接矩陣Do,其中,dij代表交換機(jī)i到交換機(jī)j的距離,如果兩交換機(jī)之間沒有鏈路相連通,則令doij=∞。
2)對于每一對交換機(jī)i和j,看看是否存在一個節(jié)點m使得從i到m再到j(luò)比已知路徑dm-1ij更短,如果有則更新它,將最短路徑記為dmij,相應(yīng)遞推式為
每當(dāng)計算一個節(jié)點,就記下它所走的路徑,當(dāng)算法結(jié)束時,矩陣Dn元素dij表示交換機(jī)i到交換機(jī)j的最短距離。
Floyd算法計算核心代碼如下所示。
代碼中:“d[i][j]”代表交換機(jī)i到交換機(jī)j的距離;“switchs”為路由器頂點列表;“path”為路徑矩陣。
其中,對于矩陣D1,D2,…,Dn,對角線的元素都無需計算,并且,對所有的i=1,2,…,n,dm-1im=dmim,dmmi=dm-1mi,所以在矩陣D的計算中,第k行和第k列均無需計算,在矩陣Dm中,不僅是對角線元素?zé)o需計算,第m行和第m列也無需計算,所以總共僅需計算(m-1)×(n-2)個元素。
Floyd算法必須計算,n個矩陣D1,D2,…,Dn,其中每個矩陣包含n2個元素,因此總共要計算N3個元素,并且每一次計算都要做一次加法運算和一次取較小值運算,所以算法時間復(fù)雜度為0(2n~3),計算初始化路徑矩陣“path[][]”時間復(fù)雜度為O(n~2),算法空間
復(fù)雜度為O(n~2),F(xiàn)loyd算法可以用迭代Ⅳ次的Dijk-stra算法來代替,但Floyd算法實現(xiàn)起來代碼比Dijkstra算法精簡一些。
3)流表生成和下發(fā)。根據(jù)源地址和目的地址計算出路徑,向路徑上的交換機(jī)下發(fā)( IPsrc,IPdst,In_Port,Out_Port)形式的流表。
方案2不僅計算路由還生成流表,將兩者結(jié)合起來,一步到位,生成的流表不僅可以實現(xiàn)路由轉(zhuǎn)發(fā),功能還可以驗證過濾源地址。相比于方案1,能進(jìn)行路由選路算法,功能更加完備。
3 實驗和結(jié)果分析
本文針對這兩個源地址驗證方案,進(jìn)行仿真實驗,實驗環(huán)境如下:PC為13 M330@2.13 CHz CPU,內(nèi)存2G;操作系統(tǒng)為Ubuntu 12. 04 LTS;Python 2.7,POX 0.2carp,Mininet 2.1.0。
本文使用虛擬化網(wǎng)絡(luò)仿真平臺Mininet,它可虛擬數(shù)百個節(jié)點的虛擬網(wǎng)絡(luò),節(jié)點類型和拓?fù)浣Y(jié)構(gòu)可以自定義,并且支持OpenFlow協(xié)議,具體網(wǎng)絡(luò)拓?fù)淙鐖D5所示。
在POX控制器上運行針對兩個方案編寫的Py-thon代碼,以發(fā)包腳本和Mininet自帶發(fā)包機(jī)制為輸入,進(jìn)行3種測試:1)各主機(jī)之間正常發(fā)送IP包;2)偽造拓?fù)鋬?nèi)主機(jī)源地址發(fā)送IP包;3)隨機(jī)偽造源地址發(fā)送IP包。將測試的10次數(shù)據(jù)取平均值。
表1所示為兩個方案在數(shù)據(jù)包初次到達(dá)和數(shù)據(jù)包正常轉(zhuǎn)發(fā)的時延情況,從表1中可知,兩方案在數(shù)據(jù)包初次到達(dá)比正常轉(zhuǎn)發(fā)延時分別長1. 001 ms和3.215ms,其原因為初始時交換機(jī)沒有流表,需要將數(shù)據(jù)包以Packet_in的形式提交至控制器,控制器依據(jù)相應(yīng)策略生成流表,之后數(shù)據(jù)包正常轉(zhuǎn)發(fā);數(shù)據(jù)包初次到達(dá),方案2比方案1時延長2. 542 ms,由于方案2數(shù)據(jù)包初次到達(dá)交換機(jī),被移交至控制器,控制器解析數(shù)據(jù)包包頭,提取源目的地址,進(jìn)行Floyd選路算法,而方案1控制器中只需進(jìn)行統(tǒng)計、生成流表,無需進(jìn)行路由選路,所以時延稍小。
比較兩種方案生成流表數(shù)目,如圖6所示,從圖中可以看出,方案2比方案l生成流表數(shù)目多,是因為方案l流表數(shù)目和主機(jī)數(shù)目相關(guān),本實驗拓?fù)渲鳈C(jī)數(shù)目較少,但當(dāng)整個域內(nèi)主機(jī)數(shù)目增加時,流表數(shù)目將會相應(yīng)地增加;方案2流表數(shù)目在各交換機(jī)之間相差大,交換機(jī)S2,S3相比于交換機(jī)Sl,S5更多,是由于選路算法導(dǎo)致,居中的交換機(jī)在多條路由路徑上,并且還要生成反向流表,因此流表數(shù)目較多;在域內(nèi)主機(jī)數(shù)目逐漸變大時,方案1流表數(shù)目將會超過方案2。
4結(jié)束語
本文利用現(xiàn)有的兩種源地址驗證方法,在SDN架構(gòu)下進(jìn)行重新設(shè)計和實現(xiàn),利用可編程控制器POX和虛擬化實驗平臺Mininet進(jìn)行驗證,根據(jù)實驗結(jié)果對兩種方案進(jìn)行對比。方案1,在域內(nèi)主機(jī)數(shù)量增多時流表數(shù)目會明顯增大,需要設(shè)計新的流表下發(fā)策略,在關(guān)鍵節(jié)點下發(fā),減少流表規(guī)模;方案2,在網(wǎng)絡(luò)節(jié)點復(fù)雜時可能出現(xiàn)誤判、漏判等,需要優(yōu)化選路算法,這些將是后續(xù)工作的重點。
SDN還處于發(fā)展初期,架構(gòu)、協(xié)議、接口、應(yīng)用等都處在研究階段,本文將傳統(tǒng)源地址驗證技術(shù)與SDN相結(jié)合,在SDN架構(gòu)上實現(xiàn)源地址驗證,以期為SDN的發(fā)展做一點有益的探索。
上一篇:機(jī)載高速互連網(wǎng)絡(luò)適航審定要求分析
下一篇:返回列表