葉鑫豪 周純杰 朱美潘 楊健暉
(華中科技大學人工智能與自動化學院 武漢 430074)(806212938@qq.com)
隨著信息技術的高速發展,工業控制系統(industrial control system, ICS)的安全隱患已經成為影響國家關鍵基礎設施穩定運行的重要因素[1-2].目前,ICS信息安全防護方法主要分為靜態安全防護和動態安全防護[3-6].動態安全防護以防御者可控的方式持續、動態地改變網絡配置,大幅增加攻擊難度和成本,降低系統安全風險[7-9].軟件定義網絡(software-defined network, SDN)與ICS的結合為工控網絡管理帶來了許多優勢,同時,由于SDN的集中管控機制使得SDN環境下ICS網絡易受到DDoS攻擊[10].攻擊者用數據包發送大量的packet_in消息到控制器,使SDN控制器過載,流表項溢出,造成整個SDN網絡癱瘓[11-12].同時SDN交換機作為SDN控制器命令接收與執行者,在SDN網絡中同樣十分重要,攻擊者針對SDN交換機中流表空間的限制進行流表過載攻擊[13],破壞交換機正常通信功能.目前對DDoS攻擊的檢測方式主要分為機器學習攻擊檢測以及統計方法[14],現有的DDoS攻擊防護方法主要有緩解策略、負載均衡算法以及端址跳變[15-18].隨著云計算、SDN等技術在ICS中的廣泛應用,目前針對如何利用云計算的資源優勢,并基于SDN技術對邊緣端ICS網絡進行協同安全防護的研究尚少.因此本文充分利用云端的資源優勢,基于SDN技術,并結合端址跳變和負載均衡算法提出了一種ICS邊云協同信息安全防護方法,有效防御DDoS攻擊,保障邊緣端ICS網絡的正常通信.
本文提出的ICS邊云協同信息安全防護框架如圖1所示,該框架利用SDN結合邊云協同思想對受到DDoS攻擊的ICS通信網絡進行實時安全協同防護,分為2層:邊緣層和云層.邊緣層由現場層、轉發層、控制層以及應用層組成,云層由應用層組成.
邊緣端現場層是由傳感器、控制器、執行器、操作員站組成的工業控制系統;轉發層由SDN交換機組成,主要用于數據的通信;控制層由本地SDN控制器組成,包含多個本地SDN控制器構成的控制器集群,是SDN網絡的核心,用于收集網絡信息,生成流表控制網絡中數據的轉發;應用層包括DDoS攻擊檢測模塊和DDoS攻擊響應模塊,其中DDoS攻擊檢測模塊包括基于流表特征的DDoS攻擊檢測模塊、SDN交換機流表過載攻擊檢測模塊以及本地SDN控制器過載攻擊檢測模塊;DDoS攻擊響應模塊包括基于端址跳變的移動目標防御模塊、流表過載攻擊防護模塊以及本地SDN控制器過載攻擊防護模塊.本地SDN控制器收集其網絡域內交換機中的流表信息并由應用層進行DDoS攻擊檢測,將SDN網絡全局流表信息上傳至云端進行全局檢測并生成安全策略,同時DDoS攻擊響應模塊執行端址跳變進行動態安全防護.執行端址跳變后網絡中仍然可能存在大量攻擊流量,流表過載攻擊防護模塊能夠使交換機中流表不過載,保證網絡的正常通信.在保證交換機不過載基礎上執行本地SDN控制器過載攻擊檢測與防護模塊,進一步提高整個SDN網絡的通信質量.
云端應用層包括基于流表特征的DDoS攻擊檢測模塊以及針對DDoS攻擊流的策略決策模塊.前者能夠收集邊緣端SDN控制器集群的全局流表信息,從而更加準確地檢測DDoS攻擊;后者能夠根據檢測結果生成安全策略來指導網絡流量的執行動作,動作包括轉發正常流量和丟棄攻擊流量.將生成的安全策略下發至對應的本地SDN控制器,最終由本地SDN控制器對交換機中的流表進行更新.同時,為了充分利用云端資源優勢,基于流表特征的DDoS攻擊檢測模型也放在云端進行訓練,然后將訓練好的模型參數下發至邊緣端,更新其應用層中的檢測模型,使其具有檢測新型DDoS攻擊的能力.
DDoS攻擊下,攻擊源發送的數據分組本身可能是正常的業務數據分組,使其很難通過分組檢測的方式進行檢測.反向傳播神經網絡(back-propagation neural network, BPNN)非線性分類和自我學習能力較強,能很好地處理線性不可分的問題,作為分類器,已經被廣泛地應用在入侵檢測系統中[19],BPNN結構如圖2所示.

圖2 BPNN模型結構
本文在邊緣端采用BPNN神經網絡模型進行DDoS攻擊檢測,其過程如圖3所示.考慮到邊緣資源受限導致檢測結果可能產生誤差,將全局流表信息上傳至云端進行全局檢測.為了充分利用云端的資源優勢,BPNN檢測模型的訓練放在云端進行,并將訓練好的模型參數下發至邊緣端,動態更新邊緣端BPNN檢測模型,使邊緣端具有檢測新型DDoS攻擊的能力.本文采用文獻[20]中的方法對BPNN模型進行訓練以及對DDoS攻擊進行檢測,并通過實驗證明本文提出的邊云協同檢測方法能夠有效提高DDoS攻擊檢測精度.

圖3 DDoS攻擊檢測過程
邊緣端各本地SDN控制器只能收集其域內局部流表信息,導致檢測產生誤差.云端具有全局視角和強大的計算存儲能力,能夠收集各SDN控制器域內的流表信息,進行快速地模型訓練和攻擊檢測,從而實現快速安全策略決策.
云端通過訓練好的BPNN檢測模型識別出正常或攻擊流量,生成安全策略對正常流量進行正常轉發以及對攻擊流量進行丟棄.每一類數據包都對應一條流表項:對正常流量的轉發是通過流表項ACTION中的Output將數據包轉發到指定的OpenFlow Ports;對攻擊流量進行丟棄是通過流表項ACTION中的Drop將數據包丟棄.將安全策略下發至對應的本地SDN控制器后,由本地SDN控制器生成相應的流表對交換機中的流表進行更新.
邊緣端檢測到DDoS攻擊后立即啟動基于端址跳變的移動目標防御模塊,由于邊緣端本地SDN控制器僅收集其域內局部流表信息,導致檢測結果產生誤差,同時,云端安全策略下發具有一定的延遲,導致整個SDN網絡內仍然存在大量DDoS攻擊流量.針對上述問題,邊緣端采用端址跳變和負載均衡算法,同時接收云端下發的安全策略進行協同安全防護.
基于端址跳變的移動目標防御模塊的端址跳變功能是基于OpenFlow的流表機制實現的,OpenFlow的流表項ACTION中的Modify-field具有對轉發的報文的IP地址和端口號進行修改的功能.端址跳變示意圖如圖4所示:

圖4 端址跳變示意圖
首先本地SDN控制器維護一張端址映射表{(rIP,rPort):(vIPs,vPorts)},其中(rIP,rPort)為真實源目的端址對,(vIPs,vPorts)為鏈路上所有虛擬端址對組成的有序集合,一組真實源目的端址對對應多組虛擬端址對集合.邊緣端在檢測到DDoS攻擊時,控制器通過輪詢端址映射表,選擇下一組虛擬端址對集合并下發流表到跳變路徑上的所有交換機中,實現傳輸過程中的端址跳變,從源頭上阻斷DDoS攻擊.
本文提出的負載均衡算法包括基于負載均衡樹的交換機負載均衡以及基于交換機遷移的控制器負載均衡.前者用來防護交換機流表過載攻擊,這里交換機負載指交換機的流表空間,并將其分為已用流表空間和剩余可用流表空間.基于交換機剩余可用流表空間建立負載均衡樹,如圖5所示,該負載均衡樹為這樣一棵二叉樹:若左節點不為空,則所有左節點的值比根節點大,若右節點不為空,則所有右節點的值比根節點小.其數值表示交換機中剩余可用流表空間.依據左-根-右即中序遍歷思想選擇合適的交換機,并通過流量引導模塊引導流量轉移到該交換機中,由該交換機對數據包進行處理,使交換機負載均衡.

圖5 基于負載均衡樹的流表過載攻擊防護
本地SDN控制器以T1為周期獲取交換機的流表空間狀態,流表過載攻擊檢測模塊檢測交換機流表空間是否過載,在這里預先設置流表空間過載閾值為LT.若檢測到有交換機過載,則啟用流表過載攻擊防護模塊,刪除已過載交換機防止網絡通信中斷,也可以加入新的交換機并放置在樹中正確位置.該方法能夠保障在遍歷負載均衡樹時不會存在過載交換機,解決了由于交換機過載而導致的網絡無法正常通信問題.
本地SDN控制器過載攻擊防護模塊采用基于交換機遷移的控制器負載均衡算法防止控制器過載.當前控制器負載均衡方法通常使用交換機遷移,根據控制器負載動態調整交換機和控制器之間的映射[21].本文基于交換機遷移的SDN控制器過載攻擊防護流程如圖6所示.

圖6 基于交換機遷移的控制器過載攻擊防護流程
3.3.1 負載信息采集
負載信息收集模塊每隔T1時間收集狀態屬性信息,包含控制器所連接的交換機信息以及控制器負載,其負載為單位時間內接收到的packet_in消息數量.然后由控制器過載攻擊檢測模塊判斷是否過載,這里預先設置控制器過載閾值,該值可以由實驗測試得出.當負載超過閾值時即認為控制器過載并由過載攻擊響應模塊對過載控制器進行過載防護.
3.3.2 遷移域及遷移交換機選擇
遷移域包括遷出域和遷入域,遷出域的選擇依據為:按負載從大到小的順序排列各本地過載SDN控制器,每次從中選擇負載最大的過載SDN控制器作為遷出域控制器;遷入域的選擇依據包括以下2點:
1) 遷入域SDN控制器在加入遷移的交換機之后不過載;
2) 選擇γi最小的控制器作為遷入域SDN控制器;γi計算方式為
γi=λAi+(1-λ)Di,
(1)
(2)
式(2)中,Ldi表示控制器i在單位時間內接收到的packet_in消息數量,Pi表示控制器i在單位時間內處理packet_in數據包的最大值,因此Ai越小表示控制器處理遷移交換機中的packet_in消息的能力越強;式(1)中Di表示待遷移交換機與遷入域控制器的距離,即遷移距離.最終選擇滿足以上2點的控制器作為遷入域控制器.
遷移交換機選擇的依據為:選擇過載控制器所連接所有交換機中packet_in消息平均請求速率最高的交換機進行遷移,其計算方式為
Vi=Msgpacket_in,
(3)
其中,Vi表示交換機在單位時間內產生的packet_in消息的數量.
3.3.3 交換機遷移
交換機遷移是通過消息的傳遞來完成遷出域控制器和遷入域控制器的角色變換,其過程如下:
本文選取實驗室雙容水箱控制系統實驗平臺作為實驗測試環境,同時為了模擬真實SDN控制器集群,基于Ubuntu16.04 Linux操作系統,采用Mininet+RYU對SDN網絡進行仿真,圖7為基于雙容水箱控制系統搭建的實體仿真環境.實驗平臺的物理對象為3個水箱,儲水箱的水在水泵的作用下輸送到1#水箱,再流到2#水箱,通過閥門的調節實現1#及2#水箱水位的控制.控制層由3個西門子S7-300PLC構成,分別對3個水箱進行控制.監控層由人機界面和操作員站構成,實現對控制系統的在線監控.企業層由Web服務器和數據庫服務器構成,經由防火墻和路由對外提供服務.

圖7 實驗平臺示意圖
利用BPNN模型檢測DDoS攻擊,多次實驗選擇模型最優訓練參數,BPNN模型在不同參數下的訓練結果如圖8所示.經分析,在學習率為0.01、隱含層神經元個數為64、batch_size=128時效果達到最佳,因此設置BPNN模型參數如表1所示.

表1 BPNN模型訓練參數設置

圖8 BPNN模型訓練結果
實驗中,使用hping3工具發送DDoS攻擊流量模擬雙容水箱控制系統受到DDoS攻擊,正常訪問時發送的數據包作為正常流量,對本文提出的邊云協同檢測效果進行記錄并評估,圖9表示云端訓練模型并更新邊緣端模型之后邊緣端檢測精度的變化.

圖9 邊緣端檢測精度變化
可以看出,云端對邊緣端模型動態更新的過程逐漸提高了邊緣端檢測精度,邊緣端在檢測新型DDoS攻擊時,初始階段可能會產生較大的檢測誤差,但隨著模型的逐漸更新,后續對該類DDoS攻擊方式的檢測精度逐漸提高.表2給出了本文最終檢測結果與其他文獻中的檢測結果對比,可以看出本文提出的方法較其他方法檢測效果更佳.

表2 DDoS攻擊檢測結果對比 %
為了驗證本文提出的防護方法能夠有效防御DDoS攻擊,本文對DDoS攻擊和DDoS攻擊下采取防護方法后的響應時間進行了實驗并記錄,結果如圖10所示.

圖10 未采取與采取防護方法響應時間比較
從圖10可以看出,隨著DDoS攻擊速率的增大,響應時間也隨之增大,表明在DDoS攻擊下其響應時間很容易受到影響,而在該方案的保護下,攻擊速率越大響應時間的下降幅度越明顯,此時網絡中可以承受更多攻擊流量的攻擊,因此可有效提高節點間通信的安全性和可靠性.
為了驗證邊緣端各種安全策略響應后的防護效果,針對圖7所示Mininet中搭建的SDN網絡拓撲,假設存在1條DDoS攻擊路徑經過交換機S2和S3,且交換機S1所連接的設備正常訪問交換機S3所連接的設備,按照本文提出的端址跳變思想,設置交換機S1,S2與S3中的流表項Match和Actions字段如表3所示:

表3 S1,S2與S3中流表項設置
設計實驗并對DDoS攻擊、邊緣端僅執行端址跳變、邊緣端執行端址跳變和負載均衡以及最后云端安全策略下發執行后的響應時間進行比較,結果如圖11所示.

圖11 不同攻擊速率下響應時間
圖11中當攻擊速率低于1 Mbps時,4種情況下的響應時間相差不大,該結果表明攻擊速率較低時,SDN網絡中攻擊流量非常少,對網絡造成的影響很小,所以此時邊緣端采取防護措施后并未給網絡性能帶來明顯的改善.當攻擊速率逐漸增大時,由于邊緣端檢測誤差以及云端安全策略下發延遲,導致執行端址跳變后的網絡中仍然存在大量攻擊流量,此時在邊緣端執行負載均衡算法和云端下發的安全策略明顯減小了響應時間.因此本文提出的基于SDN的邊云協同信息安全防護方法能夠有效檢測和防御DDoS攻擊.
本文提出了一種ICS邊云協同信息安全防護方法,該方法采用了云端訓練檢測模型并對邊緣端模型進行動態更新思想,提高了邊緣端檢測精度并使邊緣端具有檢測新型DDoS攻擊的能力.邊緣端檢測到DDoS攻擊時,采用端址跳變動態防護DDoS攻擊,同時針對邊緣端檢測產生誤差以及云端決策下發延遲而導致網絡中仍然存在大量DDoS攻擊流量的問題,邊緣端采取負載均衡算法減小通信雙方響應時間.最后由云端下發的安全策略與邊緣端策略協同下對整個網絡進行安全防護,保證整個SDN網絡安全可靠通信.