涂 德李 偉
(1.武漢郵電科學(xué)研究院 武漢 430074)(2.武漢烽火立云網(wǎng)絡(luò)科技有限公司 武漢 430074)
近年來不斷有大型網(wǎng)絡(luò)安全事件發(fā)生,人們已經(jīng)意識(shí)到傳統(tǒng)的網(wǎng)絡(luò)安全防御技術(shù)已經(jīng)越來越難以應(yīng)對(duì)層出不窮的網(wǎng)絡(luò)攻擊。突破傳統(tǒng)網(wǎng)絡(luò)防御應(yīng)對(duì)網(wǎng)絡(luò)攻擊時(shí)的靜態(tài)、被動(dòng)式的防御體系,已經(jīng)成為網(wǎng)絡(luò)安全領(lǐng)域的重要研究方向。在此背景下,移動(dòng)目標(biāo)防御(MTD)[1]技術(shù)應(yīng)運(yùn)而生。移動(dòng)目標(biāo)防御的防御思路完全不同于傳統(tǒng)的網(wǎng)絡(luò)防御,它并不是要建立一套毫無破綻的系統(tǒng)來應(yīng)對(duì)攻擊,相反,它是要構(gòu)造一個(gè)具有彈性的防御系統(tǒng),在此防御系統(tǒng)中,系統(tǒng)的屬性能夠自動(dòng)改變、不斷變化,從而使系統(tǒng)對(duì)攻擊者來說是不可預(yù)測(cè)的。
地址跳變技術(shù)[2~3]是移動(dòng)目標(biāo)防御網(wǎng)絡(luò)的一個(gè)典型技術(shù),地址跳變是指通信雙方在數(shù)據(jù)傳輸?shù)倪^程中按照一定規(guī)則偽隨機(jī)的改變地址信息,極大地增長攻擊者的攻擊難度和代價(jià),從而實(shí)現(xiàn)主動(dòng)網(wǎng)絡(luò)防御。在傳統(tǒng)的網(wǎng)絡(luò)結(jié)構(gòu)中實(shí)現(xiàn)地址跳變會(huì)有以下困難:一是地址隨機(jī)變化將使其他與之通信的節(jié)點(diǎn)無法及時(shí)感知,容易造成會(huì)話中斷;二是終端主機(jī)地址隨機(jī)變化往往需要改變終端主機(jī)配置,限制了地址跳變的頻率。
軟件定義網(wǎng)絡(luò)(Software Defined Network,SDN)[4~6]是近幾年來提出的一種新型網(wǎng)絡(luò)架構(gòu),是對(duì)傳統(tǒng)網(wǎng)絡(luò)的一次革新,OpenFlow[7~8]作為其核心技術(shù),將控制平面從網(wǎng)絡(luò)交換機(jī)和路由器中的數(shù)據(jù)平面分離出來,為網(wǎng)絡(luò)虛擬化帶來了極大的靈活性。在SDN架構(gòu)下,網(wǎng)絡(luò)的管理是由控制器來集中控制的,所以可以讓跳變控制器控制數(shù)據(jù)傳輸路徑上的交換機(jī),使其對(duì)成功匹配的數(shù)據(jù)包進(jìn)行地址的改寫。因此,地址跳變?cè)赟DN網(wǎng)絡(luò)架構(gòu)下的實(shí)現(xiàn)變得切實(shí)可行。
本文將混沌序列[9~13]引入 SDN 網(wǎng)絡(luò)地址跳變中,以混沌序列作為地址跳變圖案生成的基礎(chǔ),解決了靜態(tài)跳變規(guī)則容易破解的問題,最后用Mini?net仿真[14~15]驗(yàn)證了方案的有效性。
混沌序列是一種偽隨機(jī)序列,其結(jié)構(gòu)復(fù)雜,具有很好的隨機(jī)性,難以分析和預(yù)測(cè)。由于計(jì)算機(jī)系統(tǒng)的精度是有限的,所以當(dāng)用有限精度的計(jì)算機(jī)系統(tǒng)實(shí)現(xiàn)無限精度的混沌系統(tǒng)時(shí),不可避免地會(huì)使混沌系統(tǒng)的動(dòng)力學(xué)特性產(chǎn)生退化,因此解決此問題成為混沌序列能否運(yùn)用于實(shí)際的關(guān)鍵,許多研究人員為此做了大量的研究工作。
本文采用基于擾動(dòng)的雙Logistic映射耦合算法[16]生成所需的混沌序列,一個(gè)映射作為擾動(dòng)參數(shù)發(fā)生器,另一個(gè)作為混沌序列發(fā)生器。使用擾動(dòng)參數(shù)發(fā)生器產(chǎn)生的擾動(dòng)參數(shù),去更新混沌序列發(fā)生器的控制參數(shù),既可以延長混沌序列輸出軌道的長度,也能使輸出序列分布的均勻性加強(qiáng)。
生成該混沌序列的算法為
其中,xn為混沌序列發(fā)生器的反饋輸入值,bm為混沌序列發(fā)生器的混沌序列控制參數(shù),xn+1為混沌序列輸出值;為擾動(dòng)參數(shù)發(fā)生器的反饋輸入值,b′為擾動(dòng)參數(shù)發(fā)生器的擾動(dòng)控制參數(shù),為擾動(dòng)輸出值。 xn,∈(0,1)。cnt為式(1)上一次更新后的迭代次數(shù),為保證混沌特性這里規(guī)定bm,b′∈(3.57,4)。
本算法為式(1)~(6)的組合。式(1)和式(2)是兩個(gè)獨(dú)立的Logistic映射混沌系統(tǒng)。式(2)的輸出在滿足 0.357≤≤0.4并且 cnt≥100條件時(shí),由10取代式(1)的控制參數(shù)bm。在更新控制參數(shù)的同時(shí),對(duì)式(2)中的變量加入一個(gè)擾動(dòng),這個(gè)擾動(dòng)是通過式(1)和式(2)的輸出 xn+1和相加的和取尾數(shù)反饋給或?qū)⒅苯臃答伣o,如式(5)。每次迭代后xn+1直接反饋給xn。
當(dāng)然,按照上述算法所產(chǎn)生的混沌序列的值都是大于0小于1的,要想使用這些序列,還需要對(duì)混沌序列的值進(jìn)行歸一化。因?yàn)檫@里是要將混沌序列的值用作地址跳變的IP地址,所以要將混沌序列的值歸一化為1~254之間的值。本文采用的歸一化方法是,對(duì)每個(gè)混沌序列的值取其小數(shù)點(diǎn)后第4位到第6位的值,并將其對(duì)254取余,然后再加上1,這樣就可以得到1~254之間的值,即完成歸一化。
根據(jù)上述混沌算法和歸一化方法,在Matlab中用代碼實(shí)現(xiàn),其中混沌算法的初始值分別設(shè)置為x0=0.5361089,=0.9157241,bm=3.9814902,b′=4,M=130生成序列后,在Matlab中繪出的點(diǎn)圖如下圖1所示。
圖1 歸一化后的序列
在得到歸一化之后的混沌序列后,要將歸一化后的混沌序列轉(zhuǎn)化為所對(duì)應(yīng)的IP地址,首先得到服務(wù)器所處的網(wǎng)段,然后依次取得序列的值,將序列的值作為IP地址的最后一段,即得到了地址跳變的圖案。
跳變圖案示例如表1所示。
表1 跳變圖案示例
系統(tǒng)的架構(gòu)模型如圖2所示。
圖2 系統(tǒng)架構(gòu)模型
在圖2所示的系統(tǒng)架構(gòu)模型中,客戶端和服務(wù)器分別與OpenFlow交換機(jī)相連,即數(shù)據(jù)通過Open?Flow交換機(jī)進(jìn)行轉(zhuǎn)發(fā),同時(shí)OpenFlow交換機(jī)又通過安全數(shù)據(jù)通道與SDN控制器相連,SDN控制器可以獲得整個(gè)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu),下發(fā)控制命令給各OpenFlow交換機(jī),從而達(dá)到控制和管理整個(gè)網(wǎng)絡(luò)的目的。
就地址跳變的角度而言,SDN控制器負(fù)責(zé)跳變圖案的生成,跳變圖案是基于混沌序列生成的,跳變圖案生成后,由SDN控制器以O(shè)penFlow流表的形式下發(fā)給各OpenFlow交換機(jī),OpenFlow交換機(jī)在收到控制器下發(fā)的流表后,會(huì)根據(jù)流表中所定義的規(guī)則,對(duì)數(shù)據(jù)包進(jìn)行處理。
由于SDN的邏輯集中控制,地址跳變的實(shí)現(xiàn)完全由跳變控制器和跳變交換機(jī)完成,地址的跳變對(duì)通信雙方來說是透明的,所以通信雙方只需要根據(jù)正常流程通信即可。
通信雙方地址跳變示意圖如圖3所示。
其中rIPa為客戶端a的真實(shí)IP地址,rIPb為服務(wù)器b的真實(shí)IP地址,vIPb為服務(wù)器在網(wǎng)絡(luò)中傳輸時(shí)特定時(shí)隙的虛假IP地址。
在Tn時(shí)刻,當(dāng)客戶端a給服務(wù)器b發(fā)送消息時(shí),整個(gè)處理流程如下:
1)客戶端a發(fā)送數(shù)據(jù)包到OpenFlow交換機(jī)S1;2)OpenFlow交換機(jī)S1按照流表中定義的規(guī)則進(jìn)行處理,數(shù)據(jù)包的目的IP被修改為vIPb,這里的vIPb為Tn時(shí)刻地址跳變?cè)O(shè)備根據(jù)SDN控制器下發(fā)的流表進(jìn)行數(shù)據(jù)包匹配時(shí),目的IP所需要被改成的值;
3)數(shù)據(jù)包經(jīng)由網(wǎng)絡(luò)到達(dá)OpenFlow交換機(jī)S2;
4)OpenFlow交換機(jī)S2按照流表中定義的規(guī)則進(jìn)行處理,數(shù)據(jù)包的目的IP被修改為rIPb;
5)OpenFlow交換機(jī)S2將數(shù)據(jù)包發(fā)送給服務(wù)器b。
圖3 地址跳變示意圖
在Tn+1時(shí)刻,當(dāng)客戶端a再給服務(wù)器b發(fā)送消息時(shí),整個(gè)處理流程和Tn時(shí)發(fā)送消息一樣,只是此時(shí)的vIPb不再是Tn時(shí)刻的vIPb了,控制器會(huì)根據(jù)跳變圖案定時(shí)的下發(fā)新的流表給OpenFlow交換機(jī),所以此時(shí)的vIPb是Tn+1時(shí)刻所對(duì)應(yīng)的vIPb。
為了驗(yàn)證本文提出的地址跳變方案,采用了網(wǎng)絡(luò)仿真工具M(jìn)ininet搭建SDN網(wǎng)絡(luò)。Mininet是目前應(yīng)用比較廣泛的研究SDN網(wǎng)絡(luò)的平臺(tái),可以通過命令讓Mininet生成所需要的網(wǎng)絡(luò)拓?fù)?,且命令中還提供了選項(xiàng)以用來設(shè)定網(wǎng)絡(luò)中的參數(shù),如交換機(jī)的dpid、主機(jī)的Mac地址等。本文采用POX作為SDN控制器來實(shí)現(xiàn)相應(yīng)的地址跳變功能。首先啟動(dòng)Mininet,通過命令讓Mininet生成一個(gè)包含兩臺(tái)交換機(jī)與兩臺(tái)主機(jī)的網(wǎng)絡(luò)拓?fù)?,并連接POX控制器,搭建的SDN網(wǎng)絡(luò)結(jié)構(gòu)拓?fù)鋱D與圖2結(jié)構(gòu)類似。
Tn時(shí)刻,在Mininet中用主機(jī)h1去ping主機(jī)h2(Mininet中默認(rèn)生成的h1和h2的IP地址分別為10.0.0.1和10.0.0.2),然后通過wireshark對(duì)控制器端口進(jìn)行抓包,通過分析,發(fā)現(xiàn)有2條OpenFlow協(xié)議的流表下發(fā)過程,表2為Tn到Tn+1間某時(shí)刻SDN控制器下發(fā)的流表信息。
在Tn+1時(shí)刻,再用主機(jī)h1去ping主機(jī)h2,同時(shí)wireshark繼續(xù)抓包,可以發(fā)現(xiàn)又有兩條OpenFlow協(xié)議的流表下發(fā),表3為Tn+1到Tn+2間某時(shí)刻SDN控制器下發(fā)的流表信息。
表2 Tn到Tn+1間某時(shí)刻SDN控制器下發(fā)流表信息
表3 Tn+1到Tn+2間某時(shí)刻SDN控制器下發(fā)流表信息
從表2可以看出,交換機(jī)Switch1(第一跳交換機(jī))的流表操作是匹配源目的IP地址10.0.0.2,然后執(zhí)行更改目的IP地址為跳變圖案中的IP地址152.0.0.43,交換機(jī)Switch2(最后一跳交換機(jī))的流表操作是匹配跳變圖案所指的目的IP地址152.0.0.43,然后執(zhí)行更改目的IP地址為源目的IP地址10.0.0.2,并從指定端口轉(zhuǎn)發(fā)。
對(duì)比表3和表2可以發(fā)現(xiàn),流表項(xiàng)中的匹配項(xiàng)或者執(zhí)行動(dòng)作有所改變,代表SDN控制器根據(jù)跳變圖案下發(fā)了新的流表。所以在通信過程中,由于SDN控制器根據(jù)基于混沌序列生成的跳變圖案下發(fā)流表給各OpenFlow交換機(jī),然后通過首尾交換機(jī)的地址跳變,使服務(wù)器端的IP地址偽隨機(jī)的不斷變化,極大地增加了攻擊的難度和代價(jià)。
本文在SDN地址跳變技術(shù)的現(xiàn)有成果的研究基礎(chǔ)上,創(chuàng)造性的提出了基于混沌序列的地址跳變方案,將混沌序列運(yùn)用到地址跳變技術(shù)中,使地址跳變結(jié)合了混沌序列的隨機(jī)性和不可預(yù)測(cè)性,解決了靜態(tài)跳變規(guī)則容易被破解的問題,增加了網(wǎng)絡(luò)攻擊的難度,增強(qiáng)了網(wǎng)絡(luò)的防御能力。
在下一步的研究中,準(zhǔn)備將混沌序列引入到端口跳變中,使得端口跳變也擁有混沌序列所帶來的隨機(jī)性和不可預(yù)測(cè)性,利用同樣的原理增強(qiáng)網(wǎng)絡(luò)的防御能力。