徐海洲,周純杰
(華中科技大學 人工智能與自動化學院,武漢 430074)
隨著工業(yè)4.0、《中國制造2025》戰(zhàn)略不斷推動工業(yè)控制系統(tǒng)向網(wǎng)絡(luò)化、智能化升級,許多新興網(wǎng)絡(luò)技術(shù)逐漸應(yīng)用到工業(yè)控制系統(tǒng)中,工業(yè)控制系統(tǒng)從封閉走向互聯(lián),也引入了很多的安全問題。從2010年伊朗核電站遭受震網(wǎng)病毒攻擊,再到2018年臺積電感染勒索病毒損失17億,2019年3月委內(nèi)瑞拉遭受網(wǎng)絡(luò)攻擊全國停電,工業(yè)控制系統(tǒng)的信息安全問題日益突出,成為不可回避的關(guān)鍵問題[1]。SDN(軟件定義網(wǎng)絡(luò))作為一項網(wǎng)絡(luò)架構(gòu),由應(yīng)用層、控制層和轉(zhuǎn)發(fā)層構(gòu)成,其核心在于控制與轉(zhuǎn)發(fā)的分離,以其靈活性、開放性、實時性、高效集中管控的特點得到了廣泛應(yīng)用[2]。隨著技術(shù)的發(fā)展,SDN技術(shù)也逐漸應(yīng)用到工業(yè)控制系統(tǒng)中,實現(xiàn)生產(chǎn)線的動態(tài)重構(gòu)等功能[3]。
本文深度結(jié)合工業(yè)控制系統(tǒng)防護特點和需求,提出一種基于SDN的工控信息安全防護系統(tǒng)架構(gòu),通過軟件定義網(wǎng)絡(luò)建立工控系統(tǒng)信息安全防護框架,形成入侵檢測到安全響應(yīng)閉環(huán),實現(xiàn)工控系統(tǒng)的動態(tài)安全防護。本文的剩余內(nèi)容組織如下:第一節(jié)分析了工控系統(tǒng)信息安全防護的特點和需求;第二節(jié),基于軟件定義網(wǎng)絡(luò)設(shè)計了工控系統(tǒng)的動態(tài)安全防護架構(gòu);第三節(jié),利用Mininet仿真環(huán)境對防護系統(tǒng)的性能進行了測試,并基于雙容水箱實驗平臺進行攻防實驗,驗證了防護框架的有效性;第四節(jié)對全文的研究成果進行了總結(jié),并對后續(xù)可能的研究方向進行了分析。
工控系統(tǒng)信息安全防護最初沿用IT領(lǐng)域的防護思想,采用基于分區(qū)、分域、隔離的靜態(tài)防護技術(shù)[4,5],通過漏洞掃描[6]特征匹配等方法對系統(tǒng)進行識別、保護和評測。然而,這種靜態(tài)防護具有滯后性,無法應(yīng)對層出不窮的未知攻擊。針對工控系統(tǒng)的攻擊,一旦突破到系統(tǒng)現(xiàn)場層,輕則引起產(chǎn)品的減產(chǎn)降質(zhì),重則造成重特大安全事故,引起人員傷亡、環(huán)境污染,危及公共生活乃至國家安全[7]。工業(yè)過程系統(tǒng)的信息安全防護的核心和焦點是保證過程系統(tǒng)的安全運行,它的防護必須是深度結(jié)合系統(tǒng)運行特點,在傳統(tǒng)的靜態(tài)防護的基礎(chǔ)上,進行動態(tài)防護。因此只有建立入侵檢測到安全響應(yīng)的安全閉環(huán)控制,才能有保障系統(tǒng)的運行安全。
軟件定義網(wǎng)絡(luò)作為一種架構(gòu),其核心在于控制和轉(zhuǎn)發(fā)的分離:SDN交換機只負責按照流表進行轉(zhuǎn)發(fā),控制器通過修改SDN交換機流表,實現(xiàn)對網(wǎng)絡(luò)報文的細粒度控制。SDN的靈活性為實現(xiàn)工控系統(tǒng)的動態(tài)安全防護提供了基礎(chǔ)平臺。
基于SDN的工業(yè)控制信息安全防護系統(tǒng)分為物理層、現(xiàn)場層、轉(zhuǎn)發(fā)層、控制層和應(yīng)用層五層,如圖1所示。其中:
1)物理層為工控系統(tǒng)的各種物理對象。
2)現(xiàn)場層為由傳感器、控制器、執(zhí)行器組成的控制系統(tǒng)以及操作員站。
3)轉(zhuǎn)發(fā)層由SDN交換機構(gòu)成,現(xiàn)場層設(shè)備通過轉(zhuǎn)發(fā)層進行數(shù)據(jù)通信傳輸,SDN交換機根據(jù)流表將對應(yīng)的報文進行轉(zhuǎn)發(fā),并將網(wǎng)絡(luò)中的通信數(shù)據(jù)鏡像發(fā)送到應(yīng)用層進行安全分析。
4)控制層由SDN控制器構(gòu)成,通過OpenFlow協(xié)議對轉(zhuǎn)發(fā)層SDN交換機進行集中管理和控制,執(zhí)行應(yīng)用層下發(fā)的防護策略。
5)應(yīng)用層包含安全監(jiān)測和安全響應(yīng)兩個模塊,安全監(jiān)測模塊通過SDN鏡像獲取的網(wǎng)絡(luò)流量,對網(wǎng)絡(luò)狀態(tài)進行實時監(jiān)測,當檢測到異常時,安全響應(yīng)模塊通過REST API向控制器發(fā)送防護指令,實現(xiàn)系統(tǒng)的動態(tài)安全防護。
系統(tǒng)的核心在于,通過SDN有選擇的鏡像獲取工控系統(tǒng)網(wǎng)絡(luò)中的通信流量進行監(jiān)測和分析,當系統(tǒng)發(fā)生異常后,再通過SDN執(zhí)行相應(yīng)的防護策略,實現(xiàn)檢測到響應(yīng)的防護閉環(huán),保障系統(tǒng)的動態(tài)安全。
圖1 基于SDN的工業(yè)控制信息安全防護系統(tǒng)架構(gòu)
安全監(jiān)測模塊由可視化監(jiān)控、入侵檢測和哨兵節(jié)點構(gòu)成,通過對鏡像獲得流量以及流表信息,對系統(tǒng)進行實時的安全監(jiān)測。
1.2.1 可視化監(jiān)控
傳統(tǒng)網(wǎng)絡(luò)交換機、路由器內(nèi)部流量如何交換很難展現(xiàn),進而無法對于網(wǎng)絡(luò)設(shè)備進行監(jiān)測和管理?;赟DN實現(xiàn)網(wǎng)絡(luò)流量可視化[8],將網(wǎng)絡(luò)數(shù)據(jù)以圖形圖像的方式表現(xiàn)出來,可以更加高效快速地識別非法網(wǎng)絡(luò)設(shè)備和異常通信行為。通過SDN拓撲發(fā)現(xiàn)形成的連接關(guān)系[9],結(jié)合網(wǎng)絡(luò)通信數(shù)據(jù)包的特征,可以有效地對工業(yè)控制系統(tǒng)進行實時的監(jiān)控,防止惡意設(shè)備的非法接入,發(fā)現(xiàn)系統(tǒng)的流量異常,并對通信設(shè)備進行統(tǒng)一管理。
1.2.2 入侵檢測
Snort作為一款非常優(yōu)秀的開源軟件工具,能夠?qū)W(wǎng)絡(luò)上的數(shù)據(jù)包進行抓包分析,并根據(jù)事先定義的規(guī)則進行響應(yīng)及處理,被很多安全公司用做入侵檢測模塊的核心引擎[10],支持自定義檢測規(guī)則。本文擬通過Snort實時分析網(wǎng)絡(luò)鏡像流量,實現(xiàn)入侵檢測。
1.2.3 哨兵節(jié)點
哨兵節(jié)點,指通過軟件定義網(wǎng)絡(luò)部署大量虛擬主機,開放容易被攻擊者利用的敏感服務(wù)端口對攻擊者進行誘捕[11]。一旦非正常的流量訪問哨兵節(jié)點,即可觸發(fā)安全防護策略。Conpot作為一款輕量級低交互工控蜜罐,支持一系列通用工業(yè)控制協(xié)議,能夠模擬復(fù)雜的工業(yè)基礎(chǔ)設(shè)施。本文擬利用Conpot作為工業(yè)網(wǎng)絡(luò)中的哨兵節(jié)點,實現(xiàn)對攻擊者的迷惑和誘捕。
1.3.1 隔離、流量清洗
隔離、流量清洗技術(shù)主要通過修改交換機流表,對非法的報文進行丟棄。由于SDN的靈活性,可以有針對性的對某一類型的數(shù)據(jù)包進行丟棄,從而實現(xiàn)通信授權(quán)、流量清洗等功能。通過流量清洗可以防止SYN洪水攻擊、惡意掃描、遠程登錄等攻擊。具體的流程如下:應(yīng)用層生成隔離指令,利用REST API下發(fā)給SDN控制器,控制器通過OpenFlow協(xié)議修改SDN交換機流表,SDN交換機根據(jù)流表對報文進行轉(zhuǎn)發(fā),對于正常的報文進行轉(zhuǎn)發(fā),對于異常的報文直接進行丟棄等操作,從而實現(xiàn)對非法設(shè)備的隔離,異常報文的清洗。
1.3.2 地址/端口跳變
現(xiàn)有工業(yè)控制系統(tǒng)中通信雙方大多使用固定的IP和端口進行通訊,攻擊者能夠很好的判斷工控設(shè)備的角色(PLC、操作員站、WEB服務(wù)器)以及型號,分析存在的漏洞,進而確定攻擊方法與攻擊路線。攻擊者通過網(wǎng)絡(luò)監(jiān)聽,收集并分析發(fā)送報文數(shù)據(jù),能夠輕而易舉的獲得通信主機的真實IP和端口,從而發(fā)動各種網(wǎng)絡(luò)攻擊,如拒絕服務(wù)、重返攻擊、中間人攻擊等。端口跳變是一種典型的移動防御技術(shù),通過持續(xù)改變服務(wù)端口、IP等信息迷惑攻擊者,使其難以發(fā)動攻擊,從根源上防止攻擊的發(fā)生,實現(xiàn)系統(tǒng)的主動防御。工業(yè)控制系統(tǒng)中存在著大量的PLC、DTU等設(shè)備,運算資源有限,更不允許去直接修改它的程序,傳統(tǒng)端口跳變技術(shù)需要在發(fā)送方和接收方增加額外的程序,無法直接應(yīng)用在工業(yè)控制系統(tǒng)中。本文針對工業(yè)控制系統(tǒng)的特殊條件,通過SDN交換機修改報文傳輸過程中的IP、端口進行端口跳變,在不修改雙方通信程序的基礎(chǔ)上,實現(xiàn)通信雙方在端口跳變下的透明通信。
1.3.3 拓撲變換
拓撲變換旨在通過改變通信網(wǎng)絡(luò)結(jié)構(gòu),給攻擊者呈現(xiàn)出動態(tài)變化的網(wǎng)絡(luò)結(jié)構(gòu),提高網(wǎng)絡(luò)的復(fù)雜程度,使其無法定位攻擊目標,發(fā)起攻擊[12]。一方面通過拓撲變換可以有效阻斷攻擊者的攻擊鏈條,另一方面可以將攻擊者的報文導(dǎo)入到蜜網(wǎng)中,對攻擊進行追根溯源。由于SDN的集中控制結(jié)構(gòu)使得多個SDN交換機可以在同一個控制器的控制下協(xié)同動作,改變邏輯網(wǎng)絡(luò)拓撲結(jié)構(gòu),從而實現(xiàn)全局的網(wǎng)絡(luò)拓撲結(jié)構(gòu)變換。本文擬結(jié)合拓撲跳變與Conpot組成工控蜜網(wǎng),保障系統(tǒng)安全。
本文首先通過Mininet仿真環(huán)境對端口跳變、拓撲跳變等防護手段對通信性能的影響進行了測試,隨后搭建了實體環(huán)境,基于雙容水箱控制系統(tǒng)實際對象進行攻防實驗驗證了防護框架的有效性。
2.1.1 仿真環(huán)境
本文采用Mininet作為實驗的仿真環(huán)境,RYU作為SDN控制器,對系統(tǒng)的通信性能進行測試。Mininet作為一個完整的軟件定義網(wǎng)絡(luò)仿真開發(fā)平臺,能夠進行開發(fā)、測試和演示,具有良好的可移植性。RYU是一款開源的基于Python開發(fā)的控制器,因其架構(gòu)簡單,部署方便,得到了廣泛的應(yīng)用。
2.1.2 地址/端口跳變
1)為了驗證系統(tǒng)在進行端口/地址跳變時對工控系統(tǒng)通信的影響,在Mininet中創(chuàng)建如圖2所示的網(wǎng)絡(luò)結(jié)構(gòu)。
圖2 地址/端口跳變仿真原理圖
2)通過REST接口對流表進行修改。使SDN交換機在轉(zhuǎn)發(fā)的同時對報文的IP地址進行修改,實現(xiàn)傳輸過程中的跳變。
3)經(jīng)過測試,在進行端口跳變時主機h1能夠和h2進行正常的數(shù)據(jù)通信,通過抓包驗證了通信過程中報文的IP不斷變化,能夠有效的迷惑攻擊者。經(jīng)過實驗發(fā)現(xiàn)IP跳變前后通信系統(tǒng)的延遲基本相同,僅在切換的一瞬間延遲增大到0.11ms,能夠滿足工業(yè)控制系統(tǒng)通信實效性的要求,如圖3所示。
圖3 地址/端口跳變網(wǎng)絡(luò)延時變化曲線
2.1.3 拓撲跳變
1)為了驗證系統(tǒng)在拓撲跳變時對工業(yè)控制系統(tǒng)通信的影響,在Mininet中創(chuàng)建如圖4所示的網(wǎng)絡(luò)結(jié)構(gòu),驗證拓撲跳變。
圖4 拓撲跳變仿真原理圖
2)通過REST接口對流表進行修改,使得原本由S1直接發(fā)送到S2的報文,經(jīng)由S3再發(fā)送到S2,實現(xiàn)通信鏈路拓撲的變換。
3)通過抓包驗證了變換的有效性,h1和h2在變換時能夠正常通信。通過對變換過程中的通信的時延進行了統(tǒng)計如圖5所示,拓撲變換過程中對于通信系統(tǒng)的時效性影響較小。僅在切換的一瞬間,系統(tǒng)延時由0.04ms變?yōu)?.131ms,又變回0.04ms,能夠滿足工業(yè)控制系統(tǒng)通信時效性的要求。
為了驗證防護框架的有效性,利用一臺多網(wǎng)口工控主機安裝Ubuntu與Open vSwitch實現(xiàn)SDN交換機功能,使用一臺筆記本作為安全分析主機,基于雙容水箱控制系統(tǒng)搭建了實體仿真環(huán)境,對系統(tǒng)的有效性進行驗證,實驗平臺結(jié)構(gòu)如圖6所示。
圖5 拓撲變換網(wǎng)絡(luò)延時變化曲線
圖6 攻防實驗平臺結(jié)構(gòu)圖
2.2.1 環(huán)境搭建
1)配置OVS交換機。通過ovs-vsctl創(chuàng)建網(wǎng)橋,并將實體的物理端口添加到網(wǎng)橋上,最后制定交換機控制器的IP地址。
2)開啟RYU控制器,修改交換機流表,將網(wǎng)絡(luò)數(shù)據(jù)包鏡像發(fā)送到安全控制主機。
3)開啟防護程序,主要包含Snort入侵檢測和安全響應(yīng)兩個部分。安全防護程序的流程如圖7所示。
圖7 安全防護程序流程圖
2.2.2 攻防實驗
本文通過hping3攻擊工具,模擬黑客入侵操作員站之后,對1號區(qū)域的PLC發(fā)起拒絕服務(wù)攻擊,造成1#PLC與人機界面的通信中斷。
Snort根據(jù)檢測規(guī)則檢查出異常的攻擊報文,輸出報警,觸發(fā)安全響應(yīng)程序,發(fā)送流表,對拒絕服務(wù)的數(shù)據(jù)源進行清洗,實現(xiàn)對拒絕服務(wù)攻擊的防護。
經(jīng)驗證,在本防護框架下,能夠在1號區(qū)域PLC斷連之前,阻斷拒絕服務(wù)攻擊,達到保障系統(tǒng)安全的效果。如圖8所示,系統(tǒng)正常時1#PLC的通信數(shù)據(jù)包在每秒40個左右,在第5秒發(fā)起拒絕服務(wù)攻擊,數(shù)據(jù)包數(shù)量直線上升到60000個左右,沒有開啟防護時在一段時間后1#PLC發(fā)生斷連;開啟防護措施后,在第7秒數(shù)據(jù)包數(shù)量開始下降,能夠保障系統(tǒng)的正常通信。
圖8 攻防實驗網(wǎng)絡(luò)數(shù)據(jù)包曲線圖
本文綜合分析工業(yè)控制系統(tǒng)安全防護的需求,基于SDN設(shè)計了一種工控信息安全防護架構(gòu),實現(xiàn)了檢測到響應(yīng)的安全防護閉環(huán)。并在仿真與實體環(huán)境對系統(tǒng)的通信性能及防護效果進行了測試和驗證,實驗結(jié)果表明,設(shè)計系統(tǒng)滿足工業(yè)控制系統(tǒng)通信時效性要求并且能夠保障系統(tǒng)的安全。由于交換機數(shù)量的限制,端口跳變、拓撲跳變等未能在實際系統(tǒng)中進行驗證。在后續(xù)的工作中,將進一步開展欺騙防御技術(shù),以及多域入侵檢測技術(shù)在防護框架中的應(yīng)用。