葉鑫豪 周純杰 朱美潘 楊健暉
(華中科技大學(xué)人工智能與自動(dòng)化學(xué)院 武漢 430074)(806212938@qq.com)
隨著信息技術(shù)的高速發(fā)展,工業(yè)控制系統(tǒng)(industrial control system, ICS)的安全隱患已經(jīng)成為影響國(guó)家關(guān)鍵基礎(chǔ)設(shè)施穩(wěn)定運(yùn)行的重要因素[1-2].目前,ICS信息安全防護(hù)方法主要分為靜態(tài)安全防護(hù)和動(dòng)態(tài)安全防護(hù)[3-6].動(dòng)態(tài)安全防護(hù)以防御者可控的方式持續(xù)、動(dòng)態(tài)地改變網(wǎng)絡(luò)配置,大幅增加攻擊難度和成本,降低系統(tǒng)安全風(fēng)險(xiǎn)[7-9].軟件定義網(wǎng)絡(luò)(software-defined network, SDN)與ICS的結(jié)合為工控網(wǎng)絡(luò)管理帶來了許多優(yōu)勢(shì),同時(shí),由于SDN的集中管控機(jī)制使得SDN環(huán)境下ICS網(wǎng)絡(luò)易受到DDoS攻擊[10].攻擊者用數(shù)據(jù)包發(fā)送大量的packet_in消息到控制器,使SDN控制器過載,流表項(xiàng)溢出,造成整個(gè)SDN網(wǎng)絡(luò)癱瘓[11-12].同時(shí)SDN交換機(jī)作為SDN控制器命令接收與執(zhí)行者,在SDN網(wǎng)絡(luò)中同樣十分重要,攻擊者針對(duì)SDN交換機(jī)中流表空間的限制進(jìn)行流表過載攻擊[13],破壞交換機(jī)正常通信功能.目前對(duì)DDoS攻擊的檢測(cè)方式主要分為機(jī)器學(xué)習(xí)攻擊檢測(cè)以及統(tǒng)計(jì)方法[14],現(xiàn)有的DDoS攻擊防護(hù)方法主要有緩解策略、負(fù)載均衡算法以及端址跳變[15-18].隨著云計(jì)算、SDN等技術(shù)在ICS中的廣泛應(yīng)用,目前針對(duì)如何利用云計(jì)算的資源優(yōu)勢(shì),并基于SDN技術(shù)對(duì)邊緣端ICS網(wǎng)絡(luò)進(jìn)行協(xié)同安全防護(hù)的研究尚少.因此本文充分利用云端的資源優(yōu)勢(shì),基于SDN技術(shù),并結(jié)合端址跳變和負(fù)載均衡算法提出了一種ICS邊云協(xié)同信息安全防護(hù)方法,有效防御DDoS攻擊,保障邊緣端ICS網(wǎng)絡(luò)的正常通信.
本文提出的ICS邊云協(xié)同信息安全防護(hù)框架如圖1所示,該框架利用SDN結(jié)合邊云協(xié)同思想對(duì)受到DDoS攻擊的ICS通信網(wǎng)絡(luò)進(jìn)行實(shí)時(shí)安全協(xié)同防護(hù),分為2層:邊緣層和云層.邊緣層由現(xiàn)場(chǎng)層、轉(zhuǎn)發(fā)層、控制層以及應(yīng)用層組成,云層由應(yīng)用層組成.
邊緣端現(xiàn)場(chǎng)層是由傳感器、控制器、執(zhí)行器、操作員站組成的工業(yè)控制系統(tǒng);轉(zhuǎn)發(fā)層由SDN交換機(jī)組成,主要用于數(shù)據(jù)的通信;控制層由本地SDN控制器組成,包含多個(gè)本地SDN控制器構(gòu)成的控制器集群,是SDN網(wǎng)絡(luò)的核心,用于收集網(wǎng)絡(luò)信息,生成流表控制網(wǎng)絡(luò)中數(shù)據(jù)的轉(zhuǎn)發(fā);應(yīng)用層包括DDoS攻擊檢測(cè)模塊和DDoS攻擊響應(yīng)模塊,其中DDoS攻擊檢測(cè)模塊包括基于流表特征的DDoS攻擊檢測(cè)模塊、SDN交換機(jī)流表過載攻擊檢測(cè)模塊以及本地SDN控制器過載攻擊檢測(cè)模塊;DDoS攻擊響應(yīng)模塊包括基于端址跳變的移動(dòng)目標(biāo)防御模塊、流表過載攻擊防護(hù)模塊以及本地SDN控制器過載攻擊防護(hù)模塊.本地SDN控制器收集其網(wǎng)絡(luò)域內(nèi)交換機(jī)中的流表信息并由應(yīng)用層進(jìn)行DDoS攻擊檢測(cè),將SDN網(wǎng)絡(luò)全局流表信息上傳至云端進(jìn)行全局檢測(cè)并生成安全策略,同時(shí)DDoS攻擊響應(yīng)模塊執(zhí)行端址跳變進(jìn)行動(dòng)態(tài)安全防護(hù).執(zhí)行端址跳變后網(wǎng)絡(luò)中仍然可能存在大量攻擊流量,流表過載攻擊防護(hù)模塊能夠使交換機(jī)中流表不過載,保證網(wǎng)絡(luò)的正常通信.在保證交換機(jī)不過載基礎(chǔ)上執(zhí)行本地SDN控制器過載攻擊檢測(cè)與防護(hù)模塊,進(jìn)一步提高整個(gè)SDN網(wǎng)絡(luò)的通信質(zhì)量.
云端應(yīng)用層包括基于流表特征的DDoS攻擊檢測(cè)模塊以及針對(duì)DDoS攻擊流的策略決策模塊.前者能夠收集邊緣端SDN控制器集群的全局流表信息,從而更加準(zhǔn)確地檢測(cè)DDoS攻擊;后者能夠根據(jù)檢測(cè)結(jié)果生成安全策略來指導(dǎo)網(wǎng)絡(luò)流量的執(zhí)行動(dòng)作,動(dòng)作包括轉(zhuǎn)發(fā)正常流量和丟棄攻擊流量.將生成的安全策略下發(fā)至對(duì)應(yīng)的本地SDN控制器,最終由本地SDN控制器對(duì)交換機(jī)中的流表進(jìn)行更新.同時(shí),為了充分利用云端資源優(yōu)勢(shì),基于流表特征的DDoS攻擊檢測(cè)模型也放在云端進(jìn)行訓(xùn)練,然后將訓(xùn)練好的模型參數(shù)下發(fā)至邊緣端,更新其應(yīng)用層中的檢測(cè)模型,使其具有檢測(cè)新型DDoS攻擊的能力.
DDoS攻擊下,攻擊源發(fā)送的數(shù)據(jù)分組本身可能是正常的業(yè)務(wù)數(shù)據(jù)分組,使其很難通過分組檢測(cè)的方式進(jìn)行檢測(cè).反向傳播神經(jīng)網(wǎng)絡(luò)(back-propagation neural network, BPNN)非線性分類和自我學(xué)習(xí)能力較強(qiáng),能很好地處理線性不可分的問題,作為分類器,已經(jīng)被廣泛地應(yīng)用在入侵檢測(cè)系統(tǒng)中[19],BPNN結(jié)構(gòu)如圖2所示.
圖2 BPNN模型結(jié)構(gòu)
本文在邊緣端采用BPNN神經(jīng)網(wǎng)絡(luò)模型進(jìn)行DDoS攻擊檢測(cè),其過程如圖3所示.考慮到邊緣資源受限導(dǎo)致檢測(cè)結(jié)果可能產(chǎn)生誤差,將全局流表信息上傳至云端進(jìn)行全局檢測(cè).為了充分利用云端的資源優(yōu)勢(shì),BPNN檢測(cè)模型的訓(xùn)練放在云端進(jìn)行,并將訓(xùn)練好的模型參數(shù)下發(fā)至邊緣端,動(dòng)態(tài)更新邊緣端BPNN檢測(cè)模型,使邊緣端具有檢測(cè)新型DDoS攻擊的能力.本文采用文獻(xiàn)[20]中的方法對(duì)BPNN模型進(jìn)行訓(xùn)練以及對(duì)DDoS攻擊進(jìn)行檢測(cè),并通過實(shí)驗(yàn)證明本文提出的邊云協(xié)同檢測(cè)方法能夠有效提高DDoS攻擊檢測(cè)精度.
圖3 DDoS攻擊檢測(cè)過程
邊緣端各本地SDN控制器只能收集其域內(nèi)局部流表信息,導(dǎo)致檢測(cè)產(chǎn)生誤差.云端具有全局視角和強(qiáng)大的計(jì)算存儲(chǔ)能力,能夠收集各SDN控制器域內(nèi)的流表信息,進(jìn)行快速地模型訓(xùn)練和攻擊檢測(cè),從而實(shí)現(xiàn)快速安全策略決策.
云端通過訓(xùn)練好的BPNN檢測(cè)模型識(shí)別出正?;蚬袅髁浚砂踩呗詫?duì)正常流量進(jìn)行正常轉(zhuǎn)發(fā)以及對(duì)攻擊流量進(jìn)行丟棄.每一類數(shù)據(jù)包都對(duì)應(yīng)一條流表項(xiàng):對(duì)正常流量的轉(zhuǎn)發(fā)是通過流表項(xiàng)ACTION中的Output將數(shù)據(jù)包轉(zhuǎn)發(fā)到指定的OpenFlow Ports;對(duì)攻擊流量進(jìn)行丟棄是通過流表項(xiàng)ACTION中的Drop將數(shù)據(jù)包丟棄.將安全策略下發(fā)至對(duì)應(yīng)的本地SDN控制器后,由本地SDN控制器生成相應(yīng)的流表對(duì)交換機(jī)中的流表進(jìn)行更新.
邊緣端檢測(cè)到DDoS攻擊后立即啟動(dòng)基于端址跳變的移動(dòng)目標(biāo)防御模塊,由于邊緣端本地SDN控制器僅收集其域內(nèi)局部流表信息,導(dǎo)致檢測(cè)結(jié)果產(chǎn)生誤差,同時(shí),云端安全策略下發(fā)具有一定的延遲,導(dǎo)致整個(gè)SDN網(wǎng)絡(luò)內(nèi)仍然存在大量DDoS攻擊流量.針對(duì)上述問題,邊緣端采用端址跳變和負(fù)載均衡算法,同時(shí)接收云端下發(fā)的安全策略進(jìn)行協(xié)同安全防護(hù).
基于端址跳變的移動(dòng)目標(biāo)防御模塊的端址跳變功能是基于OpenFlow的流表機(jī)制實(shí)現(xiàn)的,OpenFlow的流表項(xiàng)ACTION中的Modify-field具有對(duì)轉(zhuǎn)發(fā)的報(bào)文的IP地址和端口號(hào)進(jìn)行修改的功能.端址跳變示意圖如圖4所示:
圖4 端址跳變示意圖
首先本地SDN控制器維護(hù)一張端址映射表{(rIP,rPort):(vIPs,vPorts)},其中(rIP,rPort)為真實(shí)源目的端址對(duì),(vIPs,vPorts)為鏈路上所有虛擬端址對(duì)組成的有序集合,一組真實(shí)源目的端址對(duì)對(duì)應(yīng)多組虛擬端址對(duì)集合.邊緣端在檢測(cè)到DDoS攻擊時(shí),控制器通過輪詢端址映射表,選擇下一組虛擬端址對(duì)集合并下發(fā)流表到跳變路徑上的所有交換機(jī)中,實(shí)現(xiàn)傳輸過程中的端址跳變,從源頭上阻斷DDoS攻擊.
本文提出的負(fù)載均衡算法包括基于負(fù)載均衡樹的交換機(jī)負(fù)載均衡以及基于交換機(jī)遷移的控制器負(fù)載均衡.前者用來防護(hù)交換機(jī)流表過載攻擊,這里交換機(jī)負(fù)載指交換機(jī)的流表空間,并將其分為已用流表空間和剩余可用流表空間.基于交換機(jī)剩余可用流表空間建立負(fù)載均衡樹,如圖5所示,該負(fù)載均衡樹為這樣一棵二叉樹:若左節(jié)點(diǎn)不為空,則所有左節(jié)點(diǎn)的值比根節(jié)點(diǎn)大,若右節(jié)點(diǎn)不為空,則所有右節(jié)點(diǎn)的值比根節(jié)點(diǎn)小.其數(shù)值表示交換機(jī)中剩余可用流表空間.依據(jù)左-根-右即中序遍歷思想選擇合適的交換機(jī),并通過流量引導(dǎo)模塊引導(dǎo)流量轉(zhuǎn)移到該交換機(jī)中,由該交換機(jī)對(duì)數(shù)據(jù)包進(jìn)行處理,使交換機(jī)負(fù)載均衡.
圖5 基于負(fù)載均衡樹的流表過載攻擊防護(hù)
本地SDN控制器以T1為周期獲取交換機(jī)的流表空間狀態(tài),流表過載攻擊檢測(cè)模塊檢測(cè)交換機(jī)流表空間是否過載,在這里預(yù)先設(shè)置流表空間過載閾值為L(zhǎng)T.若檢測(cè)到有交換機(jī)過載,則啟用流表過載攻擊防護(hù)模塊,刪除已過載交換機(jī)防止網(wǎng)絡(luò)通信中斷,也可以加入新的交換機(jī)并放置在樹中正確位置.該方法能夠保障在遍歷負(fù)載均衡樹時(shí)不會(huì)存在過載交換機(jī),解決了由于交換機(jī)過載而導(dǎo)致的網(wǎng)絡(luò)無法正常通信問題.
本地SDN控制器過載攻擊防護(hù)模塊采用基于交換機(jī)遷移的控制器負(fù)載均衡算法防止控制器過載.當(dāng)前控制器負(fù)載均衡方法通常使用交換機(jī)遷移,根據(jù)控制器負(fù)載動(dòng)態(tài)調(diào)整交換機(jī)和控制器之間的映射[21].本文基于交換機(jī)遷移的SDN控制器過載攻擊防護(hù)流程如圖6所示.
圖6 基于交換機(jī)遷移的控制器過載攻擊防護(hù)流程
3.3.1 負(fù)載信息采集
負(fù)載信息收集模塊每隔T1時(shí)間收集狀態(tài)屬性信息,包含控制器所連接的交換機(jī)信息以及控制器負(fù)載,其負(fù)載為單位時(shí)間內(nèi)接收到的packet_in消息數(shù)量.然后由控制器過載攻擊檢測(cè)模塊判斷是否過載,這里預(yù)先設(shè)置控制器過載閾值,該值可以由實(shí)驗(yàn)測(cè)試得出.當(dāng)負(fù)載超過閾值時(shí)即認(rèn)為控制器過載并由過載攻擊響應(yīng)模塊對(duì)過載控制器進(jìn)行過載防護(hù).
3.3.2 遷移域及遷移交換機(jī)選擇
遷移域包括遷出域和遷入域,遷出域的選擇依據(jù)為:按負(fù)載從大到小的順序排列各本地過載SDN控制器,每次從中選擇負(fù)載最大的過載SDN控制器作為遷出域控制器;遷入域的選擇依據(jù)包括以下2點(diǎn):
1) 遷入域SDN控制器在加入遷移的交換機(jī)之后不過載;
2) 選擇γi最小的控制器作為遷入域SDN控制器;γi計(jì)算方式為
γi=λAi+(1-λ)Di,
(1)
(2)
式(2)中,Ldi表示控制器i在單位時(shí)間內(nèi)接收到的packet_in消息數(shù)量,Pi表示控制器i在單位時(shí)間內(nèi)處理packet_in數(shù)據(jù)包的最大值,因此Ai越小表示控制器處理遷移交換機(jī)中的packet_in消息的能力越強(qiáng);式(1)中Di表示待遷移交換機(jī)與遷入域控制器的距離,即遷移距離.最終選擇滿足以上2點(diǎn)的控制器作為遷入域控制器.
遷移交換機(jī)選擇的依據(jù)為:選擇過載控制器所連接所有交換機(jī)中packet_in消息平均請(qǐng)求速率最高的交換機(jī)進(jìn)行遷移,其計(jì)算方式為
Vi=Msgpacket_in,
(3)
其中,Vi表示交換機(jī)在單位時(shí)間內(nèi)產(chǎn)生的packet_in消息的數(shù)量.
3.3.3 交換機(jī)遷移
交換機(jī)遷移是通過消息的傳遞來完成遷出域控制器和遷入域控制器的角色變換,其過程如下:
本文選取實(shí)驗(yàn)室雙容水箱控制系統(tǒng)實(shí)驗(yàn)平臺(tái)作為實(shí)驗(yàn)測(cè)試環(huán)境,同時(shí)為了模擬真實(shí)SDN控制器集群,基于Ubuntu16.04 Linux操作系統(tǒng),采用Mininet+RYU對(duì)SDN網(wǎng)絡(luò)進(jìn)行仿真,圖7為基于雙容水箱控制系統(tǒng)搭建的實(shí)體仿真環(huán)境.實(shí)驗(yàn)平臺(tái)的物理對(duì)象為3個(gè)水箱,儲(chǔ)水箱的水在水泵的作用下輸送到1#水箱,再流到2#水箱,通過閥門的調(diào)節(jié)實(shí)現(xiàn)1#及2#水箱水位的控制.控制層由3個(gè)西門子S7-300PLC構(gòu)成,分別對(duì)3個(gè)水箱進(jìn)行控制.監(jiān)控層由人機(jī)界面和操作員站構(gòu)成,實(shí)現(xiàn)對(duì)控制系統(tǒng)的在線監(jiān)控.企業(yè)層由Web服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器構(gòu)成,經(jīng)由防火墻和路由對(duì)外提供服務(wù).
圖7 實(shí)驗(yàn)平臺(tái)示意圖
利用BPNN模型檢測(cè)DDoS攻擊,多次實(shí)驗(yàn)選擇模型最優(yōu)訓(xùn)練參數(shù),BPNN模型在不同參數(shù)下的訓(xùn)練結(jié)果如圖8所示.經(jīng)分析,在學(xué)習(xí)率為0.01、隱含層神經(jīng)元個(gè)數(shù)為64、batch_size=128時(shí)效果達(dá)到最佳,因此設(shè)置BPNN模型參數(shù)如表1所示.
表1 BPNN模型訓(xùn)練參數(shù)設(shè)置
圖8 BPNN模型訓(xùn)練結(jié)果
實(shí)驗(yàn)中,使用hping3工具發(fā)送DDoS攻擊流量模擬雙容水箱控制系統(tǒng)受到DDoS攻擊,正常訪問時(shí)發(fā)送的數(shù)據(jù)包作為正常流量,對(duì)本文提出的邊云協(xié)同檢測(cè)效果進(jìn)行記錄并評(píng)估,圖9表示云端訓(xùn)練模型并更新邊緣端模型之后邊緣端檢測(cè)精度的變化.
圖9 邊緣端檢測(cè)精度變化
可以看出,云端對(duì)邊緣端模型動(dòng)態(tài)更新的過程逐漸提高了邊緣端檢測(cè)精度,邊緣端在檢測(cè)新型DDoS攻擊時(shí),初始階段可能會(huì)產(chǎn)生較大的檢測(cè)誤差,但隨著模型的逐漸更新,后續(xù)對(duì)該類DDoS攻擊方式的檢測(cè)精度逐漸提高.表2給出了本文最終檢測(cè)結(jié)果與其他文獻(xiàn)中的檢測(cè)結(jié)果對(duì)比,可以看出本文提出的方法較其他方法檢測(cè)效果更佳.
表2 DDoS攻擊檢測(cè)結(jié)果對(duì)比 %
為了驗(yàn)證本文提出的防護(hù)方法能夠有效防御DDoS攻擊,本文對(duì)DDoS攻擊和DDoS攻擊下采取防護(hù)方法后的響應(yīng)時(shí)間進(jìn)行了實(shí)驗(yàn)并記錄,結(jié)果如圖10所示.
圖10 未采取與采取防護(hù)方法響應(yīng)時(shí)間比較
從圖10可以看出,隨著DDoS攻擊速率的增大,響應(yīng)時(shí)間也隨之增大,表明在DDoS攻擊下其響應(yīng)時(shí)間很容易受到影響,而在該方案的保護(hù)下,攻擊速率越大響應(yīng)時(shí)間的下降幅度越明顯,此時(shí)網(wǎng)絡(luò)中可以承受更多攻擊流量的攻擊,因此可有效提高節(jié)點(diǎn)間通信的安全性和可靠性.
為了驗(yàn)證邊緣端各種安全策略響應(yīng)后的防護(hù)效果,針對(duì)圖7所示Mininet中搭建的SDN網(wǎng)絡(luò)拓?fù)?,假設(shè)存在1條DDoS攻擊路徑經(jīng)過交換機(jī)S2和S3,且交換機(jī)S1所連接的設(shè)備正常訪問交換機(jī)S3所連接的設(shè)備,按照本文提出的端址跳變思想,設(shè)置交換機(jī)S1,S2與S3中的流表項(xiàng)Match和Actions字段如表3所示:
表3 S1,S2與S3中流表項(xiàng)設(shè)置
設(shè)計(jì)實(shí)驗(yàn)并對(duì)DDoS攻擊、邊緣端僅執(zhí)行端址跳變、邊緣端執(zhí)行端址跳變和負(fù)載均衡以及最后云端安全策略下發(fā)執(zhí)行后的響應(yīng)時(shí)間進(jìn)行比較,結(jié)果如圖11所示.
圖11 不同攻擊速率下響應(yīng)時(shí)間
圖11中當(dāng)攻擊速率低于1 Mbps時(shí),4種情況下的響應(yīng)時(shí)間相差不大,該結(jié)果表明攻擊速率較低時(shí),SDN網(wǎng)絡(luò)中攻擊流量非常少,對(duì)網(wǎng)絡(luò)造成的影響很小,所以此時(shí)邊緣端采取防護(hù)措施后并未給網(wǎng)絡(luò)性能帶來明顯的改善.當(dāng)攻擊速率逐漸增大時(shí),由于邊緣端檢測(cè)誤差以及云端安全策略下發(fā)延遲,導(dǎo)致執(zhí)行端址跳變后的網(wǎng)絡(luò)中仍然存在大量攻擊流量,此時(shí)在邊緣端執(zhí)行負(fù)載均衡算法和云端下發(fā)的安全策略明顯減小了響應(yīng)時(shí)間.因此本文提出的基于SDN的邊云協(xié)同信息安全防護(hù)方法能夠有效檢測(cè)和防御DDoS攻擊.
本文提出了一種ICS邊云協(xié)同信息安全防護(hù)方法,該方法采用了云端訓(xùn)練檢測(cè)模型并對(duì)邊緣端模型進(jìn)行動(dòng)態(tài)更新思想,提高了邊緣端檢測(cè)精度并使邊緣端具有檢測(cè)新型DDoS攻擊的能力.邊緣端檢測(cè)到DDoS攻擊時(shí),采用端址跳變動(dòng)態(tài)防護(hù)DDoS攻擊,同時(shí)針對(duì)邊緣端檢測(cè)產(chǎn)生誤差以及云端決策下發(fā)延遲而導(dǎo)致網(wǎng)絡(luò)中仍然存在大量DDoS攻擊流量的問題,邊緣端采取負(fù)載均衡算法減小通信雙方響應(yīng)時(shí)間.最后由云端下發(fā)的安全策略與邊緣端策略協(xié)同下對(duì)整個(gè)網(wǎng)絡(luò)進(jìn)行安全防護(hù),保證整個(gè)SDN網(wǎng)絡(luò)安全可靠通信.