徐雅斌,賈珊珊(北京信息科技大學網絡文化與數字傳播北京市重點實驗室,北京100101)(北京信息科技大學計算機學院,北京100101)
E-mail:xyb@bistu.edu.cn
軟件定義網絡(Software Defined Networking,SDN)目前已在數據中心網絡[1,2]、網絡虛擬化[3]、云計算[4]、流媒體[5]等領域得到廣泛的應用.它是一種將傳統封閉的網絡體系解耦為數據平面、控制平面和應用平面,在邏輯上實現網絡集中控制的新型網絡架構.其數據平面主要由SDN交換機組成,實現的主要功能是處理傳入網絡的數據包;控制器組成了控制平面,實現的主要功能是維護網絡的拓撲信息和交換機的狀態信息等,并且在兩層之間采用開放的統一接口(如:Openflow協議)進行交互;應用平面包括各種不同的業務和應用,為網絡管理應用程序提供開放的接口.
這種開放的、集中式的、可編程的體系結構不僅同樣面臨安全威脅,而且更容易遭受攻擊.如攻擊者通過南向接口或北向接口進入控制器后,通過修改流表的方式就可以控制整個網絡的數據轉發;也可以通過SDN交換機向控制器發送大量虛假請求包而發起分布式拒絕服務DDOS(Distributed Denial of Service)攻擊,從而使整個網絡陷入癱瘓,等等.
傳統的網絡攻擊檢測工具往往針對性很強、但功能單一,為此需要我們在網絡中安裝和部署多種這樣的工具,如DDOS攻擊檢測工具、ARP(Address Resolution Protocol)欺騙攻擊檢測工具等,這樣必將嚴重耗費系統資源,并影響網絡性能,甚至還時常出現相互沖突的情況.而且在發生APT(Advanced Persistent Threat,高級可持續性威脅)等潛伏在內部的復雜攻擊時,往往無能為力,更無法全面反映整個網絡的安全狀態.目前,在傳統網絡領域,已經有研究專門針對其安全要是感知,但是針對SDN,目前尚缺少這方面的研究,更沒有相應的產品.因此,非常有必要研究和設計一種針對SDN網絡的安全態勢進行感知的方法,綜合SDN中數據平面、控制平面和應用平面的各種不安全因素,從不同角度對SDN網絡面臨的攻擊和威脅進行有效的評估,從而一方面從整體上提高SDN的攻擊檢測能力,另一方面,使網絡具有綜合的安全感知能力,有效識別SDN面臨的風險,為SDN提供安全保障,推動SDN網絡向前發展和獲得更廣泛的應用.
網絡中的一些安全設備只針對網絡中單一方面的安全,不能實時反映網絡的整體安全狀態,網絡安全態勢感知針對這一缺點,通過獲取大量的網絡信息,然后進行綜合判斷,從而實時監測網絡中可能的攻擊行為,提高網絡的安全性.但是,目前針對SDN的網絡安全態勢感知的研究還非常少,而且主要集中在分析特定的網絡攻擊行為.但是傳統網絡中的攻擊檢測指標和方法對SDN的安全態勢感知具有一定的借鑒和參考意義.下面將對傳統網絡和SDN有關的攻擊檢測指標和方法進行介紹.
交換機在傳統網絡中經常遭受不同類型的攻擊,如DDoS 攻擊[7]、ARP 攻擊[8]等.對于 DDOS 攻擊,文獻[9,10]分別提出了輕量級的DDoS攻擊檢測方法以及DDoS攻擊檢測的六元組,包括:流平均包數、流平均字節數、流平均持續時間、配對流的百分比、單流增長率、不同端口增長率;Niyaz Quamar等人[10]開發了基于深度學習的多向量DDoS檢測系統,使用自動編碼器從DDoS攻擊中提取TCP、UDP和ICMP協議的68個特征.對于交換機攻擊,文獻[11]分析了交換機被攻擊后的危害,如修改流表、劫持控制信道、重新配置不同控制器、竊聽控制平面通信、欺騙拓撲等.對于ARP攻擊,文獻[12]提出了一種基于貝葉斯的ARP攻擊檢測算法來計算某主機成為被攻擊者的概率.
但是由于SDN交換機不同于傳統的交換機,不再具有獨立的控制功能,只是被動的接受控制器下發的流表,并據此進行轉發.因此,針對傳統交換機的某些攻擊將轉換為針對控制器的攻擊.
控制器是SDN中最核心和最重要的部分,攻擊者若能夠攻破控制器,就可對整個網絡進行全面控制.一方面攻擊者可以使用應用平面或控制器本身的漏洞對控制器進行非法控制.另一方面,攻擊者還可以利用交換機或OpenFlow協議的漏洞發動拒絕服務攻擊.為保證控制器正常工作,菲利浦等人[13]在Floodlight控制器中增加了安全應用管理功能,包括認證服務、基于角色的授權,流規則沖突解決和安全審計服務.文獻[14]提出了一種控制器上的緩解機制來控制資源分配和防御由資源消耗引起的DoS/DDoS攻擊.另外,在控制器上進行訪問控制[15-17]也有助于提高控制平面的安全性.
由于SDN是通過北向接口對用戶完全開放的,SDN的開放性會帶來很大的安全問題,如通過安裝惡意應用,攻擊者就會利用開放的接口實施對控制器的攻擊;同時也存在不同用戶的應用產生沖突、網絡面臨整體不一致的問題.文獻[17]通過在控制器上部署訪問控制模式來限制網絡用戶和應用程序對網絡組件的訪問.文獻[19]提出一種SDN控制器規則沖突解決方案,通過在控制器中添加端到端路徑的控制器規則沖突發現機制,從而解決控制器的規則沖突問題.
針對以上不同平面的攻擊行為,文獻[20]提出基于貝葉斯的SDN網絡安全態勢評估方法.首先控制器對數據平面的網絡信息進行快速直接的收集,然后利用貝葉斯理論對信息進行量化得出各類攻擊的信任值,并由此計算出網絡的安全態勢;文獻[21]提出基于 HMM(Hidden Markov Model,HMM)的安全態勢評估方法.該方法基于控制平面和數據平面出現的網絡掃描攻擊、OpenFlow泛洪攻擊、交換機入侵攻擊和ARP攻擊的特點,利用隱馬爾可夫模型來量化網絡狀態并得到安全態勢評估值.
從以上文獻可以看出,現有的面向SDN的網絡安全態勢評估方法在提取態勢指標時存在提取不全面的問題,多數僅集中在某一平面上.并且評估模型在一定程度上不具有自學習能力,初始值依賴專家經驗,造成評估準確性較低,難以有效分析態勢指標對網絡運行狀態的影響.
鑒此,本文提出了一種基于優化的 RBF神經網絡的SDN網絡安全態勢感知方法.首先,從SDN的不同層面提取攻擊行為的典型特征,彌補了安全態勢指標提取不全面的問題.然后,在態勢指標提取基礎上建立具有較高的學習速度和函數逼近能力的優化RBF神經網絡模型,實現態勢感知過程中有監督的學習.
網絡安全態勢指標提取是網絡態勢感知的前提.控制器作為網絡的控制中心,已為整個網絡建立了全局視圖,能夠實時獲取全網的各種狀態信息.因此,相較于傳統網絡來說,部分安全態勢指標信息可以從控制器中直接獲取,提取更加快捷、便利.本文依據SDN架構,分別從數據平面、控制層面、應用層面提取可能會發生的攻擊的特征來量化網絡安全態勢值.
3.1.1 端口掃描
端口掃描是攻擊者找到他們感興趣的目標并實施進一步攻擊的基礎.主要目的是為了收集、歸納與攻擊目標相關的資源,針對發現的漏洞和信息等準備惡意軟件或木馬等其他滲透工具,為進一步實施入侵做好準備,因此提取SDN交換機流表中的端口掃描特征是態勢感知中不可缺少的一部分.
針對SDN交換機的流表端口掃描,可提取的特征如下:
1)目的端口數目:發動端口掃描的攻擊者通常從一個源IP地址發送數據包到不同的目的端口.因此,當遭受端口掃描攻擊時,不同目的端口數迅速增加,但是大多數端口不可用.目的端口數目可通過公式(1)進行計算:
a=count({obj.dst_port!=ref.dst_port AND obj.dst_addr=ref.network_addr}) (1)
其中,obj是全局流集合{f}中的任意一條流,ref是{f}中任意一條參考流.
2)失敗連接比例:因為攻擊者將發送大量的流來檢查端口的狀態,所以大多數流將無法成功地建立連接.不成功的連接流的比例可以通過公式(2)進行計算:
u=count(obj.dst_addr=ref.dst_addr AND((obj.pkg_count < 3 AND obj.protocol=TCP)or obj.pkg_count < 2 AND obj.protocol=UDP)))/count(obj.dst_addr=ref.network_addr) (2)
3.1.2 交換機DDoS攻擊
DDoS攻擊主要是指攻擊者通過大量傀儡主機消耗SDN控制器的計算資源,阻止為合法用戶提供服務.對與SDN網絡來說,由于SDN交換機對控制器下發的規則是完全信任的,因而攻擊者可以通過使控制器持續產生大量的Packet_out/Fow_mod消息,填滿交換機的流表,最終導致合法的流量被拋棄.
基于流量統計特征來檢測DDoS攻擊是SDN中常用的方法.因此,我們參照Braga等人[8]總結的DDoS攻擊六元組作為DDoS攻擊的特征,DDoS攻擊六元組如下:
流平均包數(APf):對每個流的數據包數順序排列后取中位數,其中X表示流的包數,n表示流的數目.

流平均字節數(ABf):對每個流的字節數順序排列后取中位數,計算公式等同公式(3),其中X表示流的字節數,n表示流的數目.
流平均持續時間(ADf):同樣的對每道流的持續時間排列后取中位數,計算公式同公式(3).
配對流的百分比(PPf):計算具有相同通信協議,且源IP、目的IP地址具有交互性的配對流的比例.Num_Pair_flows表示配對流的數目,Num_flows表示流的總數.計算方法如下:

單流的增長率(GSf):在統計時間窗口W內,源IP地址、目的IP地址沒有交互性的單流增長率.

不同端口增長率(GDp):在統計時間窗口W內,交換機不同端口增長率.

其中,Num_ports表示交換機不同端口數目.
3.2.1 控制器 DDoS攻擊
在新的流到達交換機之后,若交換機上沒有與之匹配的流表項,則交換機通過PACK_IN消息將數據包轉發給控制器處理;若匹配任一條流表項,則根據actions字段中的動作對包進行處理.根據此處理流程,攻擊者有2種攻擊方式對控制器實施DDoS攻擊,如圖1所示.

圖1 控制器的DDoS攻擊方式Fig.1 DDoS attack mode of the controller
第一種方式,攻擊者通過隨機偽造源IP地址使得數據包無法匹配交換機中的流表,觸發交換機向控制器發送Pack_in消息.
第二種方式,攻擊者攻擊交換機,修改流表中各表項的actions字段,將其設置為CONTROLLER,使交換機將所有數據包發送給控制器;或者通過截獲控制器向交換機下發的配置命令,將actions字段修改為CONTROLLER.
Pack_in消息會因查找、計算流路徑消耗控制器的計算資源.根據H3C實踐數據指出:計算資源消耗正比于控制器接收的PACK_IN消息數[23].在這里,可通過計算控制器每秒處理PACK_IN消息的數目來評估控制器是否存在DDOS攻擊.
3.2.2 ARP 攻擊
ARP地址解析協議是通過IP地址找到對應的MAC地址,并將解析結果存儲在IP-MAC對形式的ARP高速緩存中,用來加快網絡通信速度.ARP幀分為請求幀和響應幀,請求幀包含請求者的MAC地址和IP地址以及希望解析的IP地址;響應幀包含請求者的MAC地址和IP地址以及響應者的MAC地址和IP地址.
SDN的ARP攻擊可以分為兩種情況.第一種情況是ARP泛洪攻擊.攻擊者偽造合法主機的IP地址或者MAC地址,欺騙控制器將MAC-IP映射關系更新錯誤,從而產生大量導致網絡擁塞的ARP數據包;第二種情況是ARP緩存攻擊[22],攻擊者發送偽造的ARP響應包,不斷的改變ARP高速緩存中的IP-MAC對,從而導致主機的接入位置信息錯誤.考慮到ARP通信過程和攻擊模式,我們提取以下兩個與ARP攻擊相關的特征如下:
響應幀和請求幀的比率:當ARP攻擊發生時,源主機發送的ARP幀的數量比接收的多.如果響應幀和請求幀的比率小于閾值,則ARP攻擊的概率很大.通過計算ARP數據包和分析包中的字段,可以得到請求幀和響應幀的數目.若要使用pkt_arp=pkt.get_protocol(arp.arp)得到 ARP 數據包,則請求幀為:pkt_arp.opcode= =arp_ARP_REQUEST,響應幀為:pkt_arp.opcode= =arp_ARP_REPLY.
IP-MAC映射對:在正常條件下,ARP高速緩存中 IPMAC映射為1-1模式,如果ARP緩存中的IP-MAC映射為1-N或N-1的模式,說明網絡就可能遭受了ARP緩存攻擊.歷史的IP和MAC地址可以從OpenFlow的匹配字段獲取,ARP_spa是源IP地址,ARP_tpa是目的IP地址,ARP_sha是源MAC地址,ARP_tha是目的MAC地址.新的IP地址和MAC地址可以通過監控Openflow消息獲取.
3.2.3 控制器過載
控制器是控制平面的核心組件,通過控制器可以集中控制交換機,實現數據的快速轉發、便捷安全的管理網絡,提升網絡的整體性能.因此判斷控制器是否過載是衡量SDN網絡性能的重要因素.本文通過以下2個因素衡量控制器性能.
控制器計算流路徑時間T:計算流路徑是控制器最基本的功能,然而計算時間的長短則是判斷控制器是否過載,或是否遭受攻擊的重要因素.
設:交換機上傳Pack_in消息的時間為t1;控制器下發flow_mod消息的時間為t2;Pack_in消息數量為N,則:

被動流表下發率R:流表是交換機處理傳入網絡的數據包的依據,正常時由控制器根據網絡信息,進行流表的下發,如果控制器負載過重或遭受攻擊,將不能正常下發流表,造成數據平面不能實現數據轉發.因此判斷被動流表下發率也是衡量SDN網絡安全的重要因素.
設:數量為N的Pack_in消息上傳至控制器,控制器下發的flow_mod的數量M,則:

控制器將SDN的應用策略轉變為流表規則下發到底層交換機上,交換機嚴格按照策略對應的流表進行匹配.由于目前SDN架構缺乏對各種應用策略的沖突檢測機制,導致應用平面會出現策略沖突問題,或者存在惡意應用破壞已有的安全防護策略問題,從而給SDN帶來難以預估的危害,也是影響SDN安全的重要因素.本文通過借鑒文獻[18]中的實時動態策略檢測機制來檢測是否存在策略沖突,作為網絡安全態勢感知指標之一,算法步驟如下:
1)從交換機流表和網絡拓撲信息中查找流路徑flowpath;
2)首先設置flowpath為空,并將交換機流表中第一個流表項的源地址、源端口號設置為flowpath的源地址和源端口號;
3)設置一個空的交換機鏈接列表switch_liked_list;
4)設置變量 nexthop=switch_liked_list.next();
5)當nexthop不為空時,通過端口號循環獲取流表中每一個流表項所指向的下一個交換機;
6)如果獲取的交換機不為空,則向flowpath和switch_liked_list中添加獲取的交換機;
7)將最后一個流表項的目的地址和目的端口設置為flowpath的目的地址和端口號,此時循環結束;
8)得到完整的流路徑flowpath.
通過分析可知,此算法步驟主要包含兩個循環,首先獲取switch_linked_list這個列表的nexthop,在nexthop不為null的情況下,循環獲取每一個交換機流表指向的下一個交換機,因此,算法的復雜度為O(n2).
RBF(Radical Basis Function,徑向基函數)神經網絡具有自學習、自組織、自適應功能.它對非線性函數具有一致逼近性,并且可以并行高速的融合大范圍的數據,具有較快的學習速度.目前已在模式識別、圖像處理、數據分類、自然語言分析等領域得到廣泛的應用.通過前面的分析和指標提取可知,網絡安全態勢感知涉及的指標很多,有些指標是非線性的,且缺少一致性.因此,進行網絡安全態勢感知非常適合采用RBF神經網絡.
RBF是一種具有單隱含層的前向神經網絡,采用徑向基函數作為局部激活函數,第三層是線性函數.RBF神經網絡結構如圖2所示.
xi∈R,i=1,2,…,n 作為第 i個學習樣本,RBF 中的學習樣本都是N維的,所以網絡輸出可以用公式(9)和公式(10)表示:

在公式(9)和公式(10)中,w表示各個層連接的權值,‖·‖表示兩個點的歐氏距離,σk表示第k個徑向基函數的寬度,ck表示第k個隱含層節點的徑向基函數的中心;yi代表第i個學習樣本的實際輸出;k代表高斯基函數;其重點是確定徑向基函數中心和各層連接權值的大小,以便減小誤差.

圖2 RBF神經網絡結構Fig.2 RBF neural network structure
RBF神經網絡在確定徑向基函數中心時,最常用的方法是先采用k-means算法確定聚類中心,由各個聚類中心之間的距離得出RBF的寬度,最后采用LS來得到連接的權值.然而,K-means聚類方法隨機選取初始聚類中心,造成對初始中心依賴性強,容易得到局部最優解[24],并且在計算網絡權值時使用最小二乘法不具有自適應調整能力.因此,本文使用K-means和PSO算法來優化上述問題,使RBF能夠更加準確的進行網絡安全態勢感知.
4.2.1 k-means聚類過程的優化
本文使用K-means算法實現k-means聚類過程的優化,解決k-means對初始中心依賴性強的缺陷.
K-means算法指導思想是使其聚類中心互相離得越遠越好.假設已經選取了n個初始聚類中心,則第n+1個聚類中心選擇距離當前n個聚類中心最遠的點.使用K-means優化后的k-means聚類步驟如下:
1)確定初始聚類中心c1:從當前的數據集中隨機選擇一個樣本,即為初始聚類中心;
2)確定初始聚類中心c1:從當前的數據集中隨機選擇一個樣本,即為初始聚類中心;并計算每個樣本被選為下一個聚類中心的概率,最后按照輪盤法選擇出下一個聚類中心;
3)重復Step2直到選擇出K個聚類中心Si;
4)求所有點到這K個聚類中心的距離:

假如點Pi離質心Si最近,那么Pi屬于Si簇;
5)接下來,移動質心到屬于他的“簇”的中心.對每個簇,計算簇中所有點的均值,并將均值作為質心;

6)然后重復第4)和第5)步,直到質點不再移動.
4.2.2 基于PSO的網絡權值優化
在PSO(Particle Swarm Optimization,粒子群優化算法)中,最優解是利用群體中每個個體之間的協作以及信息共享得到,在這個過程中,需要調整參數較少,易于實現,具有更強的全局優化能力.
該算法首先初始化一個隨機的粒子群(m維),其中包含n個粒子,則第i個粒子對應于m維空間中的位置為:Xi=[Xi,1,Xi,2,…,Xi,m],設該粒子的飛行速度是 Vi=[Vi,1,Vi,2,…,Vi,m],設置兩個最優位置 pbest和 gbest,分別代表某個粒子經過的最優位置和該粒子群中所有粒子經過的最優位置.以上過程不斷進行迭代,第k+1時,利用公式(11)來更新自己的速度,利用公式(12)來更新自己的位置:

其中c1和c2為加速因子,r1和r2是在[0,1]范圍內的兩個隨機數.
則使用PSO確定網絡權值的步驟為:
1)利用上述優化后的K-means方法得出RBF的所有參數,將這些參數范圍較小,將其作為PSO的初始粒子群,由此基于PSO算法機型權值優化時,穩定性好并且收斂速度更快;
2)評價每個微粒的適應度:

Dn為期望輸出,Yn為優化輸出.
3)對于每一個微粒,比較它的適應度和pbest,如果適應度更好,則將其作為新的pbest;
4)對于每一個微粒,比較它的適應度和gbest,如果適應度更好,則將其作為新的gbest;
5)根據公式(11)和公式(12)來不斷調整微粒的速度和位置;
6)結束迭代過程,但是如果還沒有達到相應的結束條件,則返回步驟2),重新評價每個微粒的適應度.
為了驗證本文提出的評估網絡安全態勢感知方法的準確性,我們在 Ubuntu14.04 LTS下使用 Floodlight1.2 master作為SDN的控制器,Mininet2.3.1作為網絡模擬器,OpenVswitch(OVS)2.3.2作為Openflow交換機搭建測試環境,網絡拓撲如圖3所示.

圖3 SDN實驗網絡拓撲圖Fig.3 SDN experimental network topology
本文主要進行了2類實驗,分別測試該方法的準確性和性能.首先,在SDN測試環境中獲取3種介紹的網絡安全態勢指標信息,并結合專家經驗給出對應的網絡安全態勢值組成數據集.該數據集分為三類(1,2,3),每一類的前90%作為樣本用于訓練,剩下的10%用于測試.
根據3確定的安全態勢感知指標如表1所示.

表1 安全態勢感知指標集Table 1 Security situational awareness indicator set
5.2.1 準確性測試
為了確定本文優化算法對SDN網絡安全態勢感知的準確性,我們利用已經訓練好的本文算法、K-means+LS算法和K-means+PSO算法[26]對其中一組測試數據進行網絡安全態勢感知計算,得到的結果如圖4所示.

圖4 幾種RBF算法的網絡安全態勢感知結果對比Fig.4 Comparison of network security situation perception results of several RBF algorithms
由圖4可看出,相比于其它2種算法,本文使用的優化RBF神經網絡對網絡安全態勢感知的結果與實際值最為接近,且與實際值的大小基本吻合.
此外,取10組測試數據,計算幾種算法的平均正確率以及平均誤差,得到結果如表2所示.
由表2可看出,相比于其他2種算法,本文使用的優化RBF神經網絡對網絡安全態勢感知的結果正確率最高,誤差最小.
5.2.2 性能評估
在本節中,我們測試了控制器不運行任何感知算法和運行三個不同的感知算法時在CPU開銷上的差異,并且比較了三個算法的運行時間.為了避免實驗過程中出現的偶然,保證實驗結果的客觀性,以上兩個實驗均重復進行五次,取每次的最高值,并將平均值最為最后的結果.控制器的CPU開銷結果如表3所示,三個算法的運行時間如圖5所示.

表2 幾種RBF算法正確率和平均誤差的比較Table 2 Comparison of accuracy and average error of several RBF algorithms

表3 CPU性能測試結果Table 3 CPU performance test results
由表3可知,在交換機數目相同的情況下,相較于其他方法,本文使用的方法在CPU開銷上與原始Floodlight的差異較小,能夠在最大程度上減少占用SDN控制器的CPU資源.由圖5可知,本文優化算法的運行時間比其他2種算法要短.由此證明本算法在運行性能上占據優勢.

圖5 幾種優化算法運行時間比較Fig.5 Comparison of running time of several optimization algorithms
為了準確評估SDN網絡的安全狀況,本文提出一種面向SDN的網絡安全態勢感知方法.在提取態勢指標上,分別從SDN的數據平面、控制平面、應用平面提取攻擊行為的典型特征,彌補了安全態勢指標提取不全面的問題.在評估模型上使用改進的K-means和PSO優化RBF神經網絡的基函數中心確定過程和權值優化過程,大幅度的提高了網絡安全態勢感知的準確性和性能.但是限于SDN實驗環境和檢測條件,本文在態勢指標的提取上還存在一定的局限性,面對復雜多樣的攻擊行為,我們接下來將通過改善實驗環境和檢測條件,從而更加全面、精準的感知SDN網絡的安全態勢.