高 超
(中國(guó)人民解放軍91336部隊(duì) 秦皇島 066000)
SDN技術(shù)起源于斯坦福大學(xué)的校園網(wǎng)絡(luò),其目的在于解決傳統(tǒng)網(wǎng)絡(luò)存在的臃腫、低效等問(wèn)題,以可編程的形式對(duì)外提供接口[1~4]。伴隨SDN的高速發(fā)展及商業(yè)化推進(jìn),來(lái)自安全層面的威脅日益增多,拓?fù)湮廴竟糇鳛樽钗kU(xiǎn)的攻擊類(lèi)型之一[5],通過(guò)篡改拓?fù)湟晥D影響SDN控制器的核心服務(wù)、上層應(yīng)用程序,從而給用戶(hù)帶來(lái)嚴(yán)重?fù)p失。
現(xiàn)階段針對(duì)SDN拓?fù)浒l(fā)現(xiàn)機(jī)制安全方面的研究工作主要從三個(gè)方面入手,包括設(shè)計(jì)安全框架[6~8]、新協(xié)議[9~11]及加密認(rèn)證。文獻(xiàn)[12]主要用于檢測(cè)SDN網(wǎng)絡(luò)拓?fù)湟晥D攻擊,但無(wú)法檢測(cè)基于交換機(jī)的鏈路偽造攻擊,易導(dǎo)致方案失效。文獻(xiàn)[8]提出基于網(wǎng)絡(luò)延遲信息熵判斷鏈路狀態(tài)的解決方案,延時(shí)較低時(shí)通過(guò)與閾值的大小來(lái)區(qū)分攻擊,延時(shí)較高時(shí)通過(guò)定義安全端口阻止非法鏈路;其缺點(diǎn)在于延遲狀態(tài)僅依靠相鄰熵值的線(xiàn)性關(guān)系判斷,安全端口的定義也會(huì)為網(wǎng)絡(luò)帶來(lái)進(jìn)一步的負(fù)擔(dān),為此提出一種基于香農(nóng)熵的中繼攻擊檢測(cè)方法。文獻(xiàn)[13]的基于統(tǒng)計(jì)分析鏈路延遲的防御方案雖然能夠檢測(cè)中繼型鏈路偽造攻擊,但可以通過(guò)修改LLDP幀的時(shí)間戳繞過(guò)。sOFTDP[14]通過(guò)構(gòu)造新協(xié)議從而實(shí)現(xiàn)對(duì)拓?fù)浒l(fā)現(xiàn)方法的增強(qiáng),然而新協(xié)議的推廣也將為現(xiàn)有網(wǎng)絡(luò)部署、應(yīng)用和標(biāo)準(zhǔn)化帶來(lái)一定影響。
目前SDN拓?fù)浒踩I(lǐng)域的研究工作已經(jīng)取得了一定成果,但多數(shù)研究工作針對(duì)某一類(lèi)安全威脅,缺乏體系化的防御手段;部分安全方案需要修改或增加現(xiàn)有的機(jī)制,在部署時(shí)需要修改現(xiàn)有機(jī)制,系統(tǒng)集成難度較大;針對(duì)中繼型拓?fù)涔舻姆烙椒ㄟ^(guò)于依賴(lài)數(shù)據(jù)幀延時(shí)閾值,在網(wǎng)絡(luò)延時(shí)較高的情況易造成閾值失效問(wèn)題。
本文在現(xiàn)有的研究基礎(chǔ)上,針對(duì)SDN在拓?fù)浒l(fā)現(xiàn)過(guò)程中出現(xiàn)的安全問(wèn)題,設(shè)計(jì)了一套安全解決方案DefenseTopo,通過(guò)構(gòu)造主機(jī)遷移的合法條件發(fā)現(xiàn)面向主機(jī)劫持的拓?fù)涔?,?duì)進(jìn)行LLDP來(lái)源和完整性的校驗(yàn)保障鏈路安全,提出了一種基于熵值計(jì)算的中繼型鏈路偽造攻擊檢測(cè)方法,構(gòu)造數(shù)據(jù)幀傳輸閾值和熵閾值實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)異常的檢測(cè)。最后通過(guò)Mininet仿真器和Floodlight控制器搭建SDN仿真環(huán)境設(shè)計(jì)實(shí)驗(yàn),驗(yàn)證了DefenseTopo能夠檢測(cè)主流拓?fù)涔簟?/p>
本文提出了一種SDN安全拓?fù)浞烙P虳efenseTopo,為此本文根據(jù)不同類(lèi)型攻擊構(gòu)造安全策略,提高安全機(jī)制靈活性和擴(kuò)展性,下面分別從不同的拓?fù)涔暨M(jìn)行闡述。
主機(jī)位置劫持攻擊的問(wèn)題在于,主機(jī)跟蹤服務(wù)不能為主機(jī)移動(dòng)提供實(shí)時(shí)校驗(yàn),導(dǎo)致SDN控制器無(wú)法驗(yàn)證主機(jī)位置信息的合法性,因此關(guān)鍵防御措施在于驗(yàn)證主機(jī)遷移的合法性,DefenseTopo通過(guò)記錄主機(jī)與其直連的交換機(jī)端口,并阻止端口復(fù)用實(shí)現(xiàn)。
通過(guò)分析SDN網(wǎng)絡(luò)的主機(jī)遷移過(guò)程可知,主機(jī)發(fā)生遷移時(shí)會(huì)產(chǎn)生先后兩個(gè)條件:第一,主機(jī)遷移前數(shù)據(jù)平面會(huì)向控制器發(fā)送Port-Down消息;第二,主機(jī)遷移后將無(wú)法再訪(fǎng)問(wèn)之前的位置,Defense-Topo基于這兩個(gè)條件驗(yàn)證主機(jī)遷移的合法性。為方便驗(yàn)證DefenseTopo維護(hù)一張主機(jī)映射表,該表綁定主機(jī)位置信息和交換機(jī)端口信息,一方面可用于檢查端口復(fù)用情況,同時(shí)也可為主機(jī)映射表設(shè)置修改權(quán)限從而阻止非法主機(jī)遷移。
鏈路偽造攻擊產(chǎn)生的原因包括LLDP幀的完整性被破壞,LLDP來(lái)源被污染,LLDP LLDP幀的傳播路徑被篡改,討論以下防御策略。
為保證LLDP幀的完整性,DefenseTopo通過(guò)對(duì)LLDP幀添加TLV字段校驗(yàn)完整性實(shí)現(xiàn)防御,利用LLDP幀的DPID、端口號(hào)、發(fā)送時(shí)間計(jì)算摘要,并將計(jì)算結(jié)果填入校驗(yàn)字段值,保證數(shù)據(jù)包的不可偽造性和完整性。擴(kuò)展后的幀格式如圖1所示,其中Verificaiton字段用完整性校驗(yàn);為保證LLDP幀的來(lái)源,DefenseTopo檢查交換機(jī)接收LLDP幀的端口是否直連主機(jī),這是考慮在SDN鏈路發(fā)現(xiàn)過(guò)程中主機(jī)通常默認(rèn)不轉(zhuǎn)發(fā)LLDP幀,一旦LLDP幀來(lái)自直連主機(jī)的交換機(jī)端口,則確定對(duì)應(yīng)LLDP幀已經(jīng)出現(xiàn)中繼轉(zhuǎn)發(fā),因此本文檢查交換機(jī)連接的端口是否為主機(jī)進(jìn)而判斷LLDP幀的合法性。
圖1 擴(kuò)展的LLDP幀格式
針對(duì)攻擊方可以干預(yù)LLDP傳播路徑這一問(wèn)題,現(xiàn)有的研究主要通過(guò)判斷鏈路延時(shí)實(shí)現(xiàn)檢測(cè),為解決中繼型鏈路偽造攻擊,現(xiàn)有的研究通常是引入網(wǎng)絡(luò)延時(shí)判斷鏈路延時(shí)的高低,然而鏈路延時(shí)通常是可變的,為進(jìn)一步降低誤差,本文在閾值的基礎(chǔ)上引入信息熵檢查SDN網(wǎng)絡(luò)內(nèi)數(shù)據(jù)幀中目的IP地址的分布情況。
攻擊方通過(guò)中繼LLDP幀為SDN網(wǎng)絡(luò)構(gòu)造虛假鏈路主要產(chǎn)生兩方面的影響,一方面,中繼會(huì)造成對(duì)應(yīng)LLDP幀傳輸延時(shí)的增加,另一方面,中繼生成的虛假鏈路會(huì)導(dǎo)致一定范圍內(nèi)受害主機(jī)的IP地址出現(xiàn)頻率增多,針對(duì)前者本文構(gòu)造延時(shí)閾值σ'進(jìn)行檢測(cè),對(duì)后者本文計(jì)算目的IP的信息熵并依據(jù)熵值閾值檢測(cè)中繼攻擊。
DefenseTopo為L(zhǎng)LDP幀設(shè)置傳輸延時(shí)閾值σ'如下:
其中,Tmax是現(xiàn)有傳輸延時(shí)中的最大值,Tmin是現(xiàn)有傳輸延時(shí)中的最小值,考慮網(wǎng)絡(luò)波動(dòng)和網(wǎng)絡(luò)延遲去掉兩個(gè)最值,求平均后擴(kuò)大兩倍作為閾值,W為預(yù)先設(shè)定的窗口大小。
熵最初用于描述物理系統(tǒng)的無(wú)序性,1948年Shannon將熵的概念引入信息論中,后開(kāi)始描述對(duì)隨機(jī)變量自身隨機(jī)性的度量,本文統(tǒng)計(jì)所有流表項(xiàng)內(nèi)目的IP的出現(xiàn)頻率,將目的IP記為X,出現(xiàn)次數(shù)記為xi,出現(xiàn)概率為pi,則在W窗口內(nèi)所有流表統(tǒng)計(jì)項(xiàng)中目的IP的熵值計(jì)算公式如下:
根據(jù)上式,本文每隔W個(gè)數(shù)據(jù)包進(jìn)行一次熵值計(jì)算,若W取值較高,熵值計(jì)算次數(shù)降低,單次計(jì)算時(shí)間增加;若W取值較低,單次熵值計(jì)算時(shí)間降低,而更新次數(shù)增加,在文獻(xiàn)[15]的研究基礎(chǔ)上,本文將W取值設(shè)為50。根據(jù)統(tǒng)計(jì)分析可知,當(dāng)網(wǎng)絡(luò)中數(shù)據(jù)包發(fā)送的目的地址相對(duì)集中時(shí),對(duì)應(yīng)事件發(fā)生的概率更大隨機(jī)性更小,對(duì)應(yīng)熵值變??;當(dāng)網(wǎng)絡(luò)中數(shù)據(jù)包發(fā)送的目的地址相對(duì)平均時(shí),所有事件發(fā)生的概率接近隨機(jī)性更大,熵值更大,因此通過(guò)計(jì)算對(duì)應(yīng)熵值并與攻擊閾值相比較,可以實(shí)現(xiàn)對(duì)中繼型攻擊的檢測(cè)。本文使用基于95%的置信水平計(jì)算熵閾值,計(jì)算公式如下:
其中,a、b分別代表置信區(qū)間的最大值和最小值,xˉ代表目的IP地址出現(xiàn)次數(shù)平均值,s代表目的IP出現(xiàn)次數(shù)的方差,z為在95%置信水平下對(duì)應(yīng)的統(tǒng)計(jì)量,經(jīng)查表可知z為1.96。代表未發(fā)生中繼攻擊的網(wǎng)絡(luò)內(nèi)目的IP的置信上限,代表未發(fā)生中繼攻擊的網(wǎng)絡(luò)內(nèi)目的IP的置信下限,代表發(fā)生中繼攻擊的網(wǎng)絡(luò)內(nèi)目的IP的置信上限,代表發(fā)生中繼攻擊的網(wǎng)絡(luò)內(nèi)目的IP出現(xiàn)的置信下限,代表發(fā)生中繼攻擊的網(wǎng)絡(luò)內(nèi)目的IP的平均熵值,代表發(fā)生中繼攻擊的網(wǎng)絡(luò)內(nèi)目的IP的最大熵值。此外為避免由單一熵值造成的誤判(如熱點(diǎn)訪(fǎng)問(wèn)、主機(jī)入網(wǎng)等),本文引入隊(duì)列計(jì)數(shù)器Cθ用于統(tǒng)計(jì)異常熵值,當(dāng)出現(xiàn)θ個(gè)連續(xù)窗口的熵值低于熵閾值時(shí),則判定為發(fā)生中繼型鏈路偽造攻擊。
DefenseTopo作為安全模塊內(nèi)嵌在SDN控制器中,架構(gòu)如圖2所示,DefenseTopo包括主機(jī)驗(yàn)證模塊和鏈路驗(yàn)證模塊,其中,主機(jī)驗(yàn)證模塊用于檢測(cè)主機(jī)劫持攻擊,鏈路驗(yàn)證模塊用于檢測(cè)鏈路偽造攻擊,下面分別進(jìn)行描述。
圖2 DefenseTopo架構(gòu)示意圖
主機(jī)驗(yàn)證模塊保存一張主機(jī)與交換機(jī)的映射表,通過(guò)綁定主機(jī)及其直連的交換機(jī)信息實(shí)現(xiàn)快速檢索,該表結(jié)構(gòu)為哈希表。由于鏈路驗(yàn)證模塊驗(yàn)證LLDP幀來(lái)源同樣需要檢索交換機(jī)與主機(jī)的連接信息,但此時(shí)是通過(guò)查找交換機(jī)信息判斷主機(jī),而主機(jī)驗(yàn)證模塊則通過(guò)查找主機(jī)確認(rèn)交換機(jī)信息,造成使用key-value結(jié)構(gòu)的哈希表查詢(xún)時(shí)會(huì)出現(xiàn)兩種時(shí)間復(fù)雜度,分別為O(1)和O(n)。一些研究成果選擇再增加一張交換機(jī)映射表Ls[18],然而兩個(gè)模塊各自維護(hù)一張信息表將帶來(lái)更嚴(yán)重的一致性問(wèn)題,極易造成網(wǎng)絡(luò)錯(cuò)誤。為此,本文僅構(gòu)造一張主機(jī)映射表Lh保存交換機(jī)與主機(jī)的連接信息,以交換機(jī)標(biāo)識(shí)DPID和端口號(hào)作為key值,以主機(jī)MAC地址作為映射表的Value值,Lh結(jié)構(gòu)如表1所示。
表1 映射表結(jié)構(gòu)
對(duì)映射表Lh的操作包括添加、修改、刪除三種行為,當(dāng)有新的主機(jī)加入網(wǎng)絡(luò)時(shí),構(gòu)造一條新紀(jì)錄添加到Lh;當(dāng)主機(jī)發(fā)生遷移時(shí),根據(jù)交換機(jī)生成的Port-Status消息發(fā)查找并修改Lh;當(dāng)主機(jī)或交換機(jī)離開(kāi)網(wǎng)絡(luò)時(shí),根據(jù)交換機(jī)生成Port-Status消息查找并刪除Lh內(nèi)的相關(guān)記錄。
在主機(jī)劫持攻擊中,當(dāng)控制器收到數(shù)據(jù)平面發(fā)送的Packet-In消息時(shí),主機(jī)驗(yàn)證模塊提取消息內(nèi)的主機(jī)位置信息與Lh進(jìn)行匹配,包括以下三種匹配結(jié)果。
1)主機(jī)MAC地址與所連交換機(jī)信息匹配,則該消息合法;
2)主機(jī)MAC地址匹配,但連接的交換機(jī)不匹配,則調(diào)用控制器內(nèi)的主機(jī)探測(cè)功能,檢查L(zhǎng)h記錄的交換機(jī)與主機(jī)是否可達(dá),若可達(dá)則證明該條消息非法,否則為合法并修改Lh內(nèi)的記錄項(xiàng);
3)主機(jī)MAC地址與Lh內(nèi)所有交換機(jī)均匹配失敗,則可進(jìn)一步聯(lián)動(dòng)控制器內(nèi)的其他安全模塊(安全策略)檢查該主機(jī)合法性。
鏈路驗(yàn)證模塊主要包括三種功能,包括校驗(yàn)LLDP幀的完整性、驗(yàn)證LLDP幀來(lái)源以及判斷是否發(fā)生中繼型鏈路偽造攻擊。在完整性校驗(yàn)中,DefenseTopo在LLDP幀格式中增加發(fā)送時(shí)間戳和校驗(yàn)字段,其中,校驗(yàn)字段是利用md5算法,基于發(fā)送LLDP幀的交換機(jī)DPID、端口號(hào)以及發(fā)送時(shí)間戳計(jì)算獲得。在來(lái)源校驗(yàn)中,通過(guò)在主機(jī)位置映射表Lh內(nèi)查找LLDP幀的源地址是否為交換機(jī),若為交換機(jī),則當(dāng)前幀來(lái)源合法;否則丟棄該幀并產(chǎn)生警告。此外,鏈路驗(yàn)證模塊還存儲(chǔ)一張哈希表L、隊(duì)列計(jì)數(shù)器Cθ以及隊(duì)列計(jì)數(shù)器閾值θ,哈希表用于記錄網(wǎng)絡(luò)中目的IP的出現(xiàn)次數(shù),隊(duì)列計(jì)數(shù)器用于統(tǒng)計(jì)異常熵值出現(xiàn)次數(shù),流程概括為如下步驟。
1)數(shù)據(jù)包到達(dá)交換機(jī)后,首先進(jìn)行流表匹配,若成功匹配則根據(jù)預(yù)設(shè)流規(guī)則完成轉(zhuǎn)發(fā);否則發(fā)送packet_in數(shù)據(jù)包給控制器。
2)控制器調(diào)用鏈路驗(yàn)證模塊提取數(shù)據(jù)包幀的目的IP并記為X,檢查X是否存在哈希表L中,若不在,則加入哈希表,并將其出現(xiàn)次數(shù)xi記為1,否則,修改出現(xiàn)次數(shù)為xi+1;檢查哈希表L中的數(shù)據(jù)包總數(shù)是否已經(jīng)滿(mǎn)足窗口W,若滿(mǎn)足,則根據(jù)哈希表內(nèi)目的IP地址的出現(xiàn)次數(shù),進(jìn)行熵值H()x計(jì)算,否則直接執(zhí)行下一步。
3)鏈路驗(yàn)證模塊檢查數(shù)據(jù)包是否為L(zhǎng)LDP幀,若不是則由控制器調(diào)用其他模塊完成后續(xù)處理;否則鏈路驗(yàn)證模塊對(duì)LLDP幀執(zhí)行校驗(yàn)。首先校驗(yàn)完整性,利用LLDP幀的DPID、端口號(hào)以及時(shí)間戳計(jì)算得到簽名TLV,并將計(jì)算結(jié)果與校驗(yàn)字段值進(jìn)行比較,若不同則為非法LLDP幀,鏈路驗(yàn)證模塊丟棄該LLDP幀并執(zhí)行步驟6),否則執(zhí)行下一步校驗(yàn)。
4)其次校驗(yàn)來(lái)源,提取LLDP幀的DPID和端口號(hào)記錄匹配Lh,若成功匹配則判定LLDP幀來(lái)自主機(jī),是非法數(shù)據(jù)包,鏈路驗(yàn)證模塊丟棄該LLDP幀并執(zhí)行步驟6),否則執(zhí)行下一步校驗(yàn)。
5)最后校驗(yàn)LLDP傳播路徑是否被人為干預(yù),首先比較LLDP幀傳輸延時(shí)與延時(shí)閾值σ'的大小,若小于σ'則證明LLDP幀未被中繼,否則檢查步驟2)計(jì)算的熵值與熵閾值σ的關(guān)系,若大于σ則繼續(xù)等待下一個(gè)數(shù)據(jù)包的到來(lái),否則將隊(duì)列計(jì)數(shù)器Cθ加1,反之清零,若Cθ已經(jīng)達(dá)到閾值θ,則判定已經(jīng)發(fā)生中繼攻擊,執(zhí)行步驟6)完成異常節(jié)點(diǎn)定位和處理,否則繼續(xù)執(zhí)行SDN其他功能模塊;
6)當(dāng)發(fā)現(xiàn)LLDP幀非法時(shí),通過(guò)提取非法數(shù)據(jù)包的DPID和端口號(hào)定位異常發(fā)生節(jié)點(diǎn),為了避免進(jìn)一步發(fā)展成為泛洪攻擊,控制器生成相關(guān)流規(guī)則減少一定時(shí)間內(nèi)非法的Packet-I包的數(shù)量。
本文的搭建環(huán)境選擇Floodlight作為SDN控制器,DefenseTopo安裝在控制層,數(shù)據(jù)層使用Mininet模擬網(wǎng)絡(luò)環(huán)境,交換機(jī)使用虛擬機(jī)交換機(jī)OVS,硬件環(huán)境為處理器i7-4720HQCPU@2.6GHZ(8核),內(nèi)存大小16G,操作系統(tǒng)Ubuntu16.04.05 LTS,使用scapy構(gòu)造數(shù)據(jù)包,測(cè)試環(huán)境如下。
圖3 實(shí)驗(yàn)環(huán)境結(jié)構(gòu)圖
在主機(jī)劫持攻擊實(shí)驗(yàn)中,主機(jī)h4為受感染主機(jī),攻擊方首先通過(guò)ARP請(qǐng)求的方式獲得主機(jī)h1的IP地址和MAC地址,然后使用scapy構(gòu)造一個(gè)源地址是主機(jī)h1的數(shù)據(jù)包,利用主機(jī)h4發(fā)送至交換機(jī)s2,從而模擬攻擊方通過(guò)更改主機(jī)h1位置造成的主機(jī)劫持攻擊,檢測(cè)結(jié)果如下所示,此次遷移不滿(mǎn)足主機(jī)遷移的前置條件,數(shù)據(jù)包中的主機(jī)位置信息不匹配主機(jī)映射表,因此主機(jī)遷移失敗。
圖4 評(píng)估測(cè)試環(huán)境
圖5 主機(jī)劫持攻擊檢測(cè)結(jié)果
在偽造型鏈路偽造攻擊實(shí)驗(yàn)中,主機(jī)h4為受感染主機(jī),攻擊方截獲并學(xué)習(xí)目標(biāo)交換機(jī)s1發(fā)出的數(shù)據(jù)幀,偽造交換機(jī)s1從SDN控制器接收的LLDP幀,并通過(guò)受感染主機(jī)h4將其發(fā)送至交換機(jī)s2,交換機(jī)s2則根據(jù)默認(rèn)流規(guī)則將數(shù)據(jù)幀轉(zhuǎn)發(fā)給控制器,檢測(cè)結(jié)果如下,數(shù)據(jù)幀完整性校驗(yàn)成功,而來(lái)源校驗(yàn)失敗,因此丟棄該幀。
圖6 偽造型鏈路偽造攻擊檢測(cè)結(jié)果
為解決SDN控制器內(nèi)全局拓?fù)湟晥D易被攻擊者篡改的安全問(wèn)題,設(shè)計(jì)并提出了一套安全解決方案DefenseTopo,首先分析了現(xiàn)有的拓?fù)涔粼砗屯{模型,其次構(gòu)造主機(jī)遷移的合法條件檢測(cè)實(shí)現(xiàn)面向主機(jī)劫持攻擊的防御,并對(duì)LLDP校驗(yàn)來(lái)源和完整性驗(yàn)證保障拓?fù)涞逆溌钒踩酉聛?lái)定義了一種基于熵值計(jì)算的中繼型鏈路偽造攻擊檢測(cè)方法,通過(guò)數(shù)據(jù)幀傳輸閾值和熵閾值實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)異常的檢測(cè),并給出閾值的計(jì)算方法,最后通過(guò)Mininet仿真器和Floodlight控制器搭建SDN仿真環(huán)境,最后通過(guò)實(shí)驗(yàn)測(cè)試,結(jié)果證實(shí)DefenseTopo能夠檢測(cè)主流拓?fù)湮廴竟簟?/p>