陳吉龍, 翟健宏
(哈爾濱工業大學 計算機科學與技術學院, 哈爾濱150000)
工業控制系統廣泛應用于各個領域,包括基礎設施(金融、能源、通信、電力、交通)、民生(水、電、燃氣、醫院、智慧城市、智能汽車)、工業生產(冶金、電力、石油化工、核能等)和軍工等。 超過80%的涉及國計民生的關鍵基礎設施依靠工業控制系統來實現自動化作業。 2010 年的伊朗核電站攻擊事件、2015 年的烏克蘭電網攻擊事件以及2019 年的委內瑞拉電力系統攻擊事件充分證實了工控安全問題對國家、社會和經濟的重要影響[1]。
受限于歷史原因,目前工業控制領域安全軟硬件研發程度以及專業安全從業人員的數量還遠遠不能滿足市場需求。 尤其是在各類工控安全事件頻發的今天,無論是工控產品制造方還是使用方均對工控安全予以高度重視,并在工業控制網絡基礎設施改善及相關人才培養方面逐年加大投入力度,搭建了適用于不同場景的工業控制實驗模擬環境,用于工控安全技術的研究和人才培養,但是這些實驗平臺基本上采用全實物或半實物的方式,投入成本高,建設周期長,且往往只能針對某一種特定工業控制環境,一旦仿真對象變更就需要重新搭建一套平臺,靈活性差。 另外,以實物或半實物形式搭建的實驗平臺抗打擊性差,進行研究測試時容易對現實設備造成不可逆的破壞,后期維護代價高。
鑒于上述存在的問題,本文提出了一種基于虛擬化技術的工業控制網絡靶場[2]設計方案。 該靶場依托于當前最新的虛擬化云平臺OpenStack,同時結合入侵檢測系統Snort,實現了在低投入、低消耗的條件下簡單、便捷、高效地對各類現實工業控制環境進行模擬仿真,可有效支撐工業控制領域安全人才的教學培訓、新產品新技術的研究測試、工業控制網絡風險評估以及組織工控攻防演練或安全競賽。
工業控制網絡相比于常規的小型局域網或企業辦公網有其特殊的組織架構。 現實的工業控制網絡一般具有多層次結構,各層的業務屬性和軟硬件組成、配置均不盡相同。 工業控制核心區域從上到下大致分為信息網(負責工控核心網的監控管理,以ERP、MIS 等為主)、通信隔離區(以網絡安全設備為主,在保障上下層合法數據通信的基礎上防止非授權訪問或意外的數據泄露)、調度網(以SCADA、DCS、HMI、MES 等為主,實現對小型控制單元的監管)、控制網(以PLC、RTU、IED 等設備為主,實現對實際生產設備的監控管理)、現場網(由實際生產設備組成,包括發電機、閘刀、開關等機械單元)。
現有的工控網絡協議種類繁多,各自應用場景也不同。 傳統的工控協議基于現場總線,主要包括CAN、DeviceNet、CCL-Link、Profibus-DP、Profius-PA等。 但隨著兩化的推進,衍生出許多基于工業以太網的工控協議,主要的有Modbus、DNP3、Profinet、EtherNet/IP、S7 等。
目前工控網絡中存在的不足和缺陷主要有以下方面:一是工業控制軟件系統,如SCADA、組態軟件、PLC 編程軟件等存在安全漏洞;二是通信協議,工控網絡使用的協議眾多,但基本上均是明文傳輸,無加密無認證無權限控制;三是小型控制單元,如PLC、IED、RTU 等存在錯誤配置、業務邏輯漏洞、硬編碼后門、緩沖區溢出等問題[3]。
虛擬化是指通過虛擬化技術將一臺計算機虛擬為多臺邏輯計算機。 在一臺計算機上同時運行多個邏輯計算機,每個邏輯計算機可運行不同的操作系統,并且應用程序都可以在相互獨立的空間內運行而互不影響,從而顯著提高計算機的工作效率。 虛擬化使用軟件的方法,重新定義、劃分IT 資源,可以實現IT 資源的動態分配、靈活調度、跨域共享,提高IT 資源利用率,使IT 資源能夠真正成為社會基礎設施,服務于各行各業中靈活多變的應用需求[4]。
OpenStack 是一個開源的云計算管理平臺項目,它的主要任務是給用戶提供IaaS 服務。 OpenStack為私有云和公有云提供可擴展的彈性的云計算服務。 項目目標是提供實施簡單、可大規模擴展、豐富、標準統一的云計算管理平臺。
入侵檢測是防火墻的合理補充,幫助系統對付網絡攻擊,擴展了系統管理員的安全管理能力(包括安全審計、監視、進攻識別和響應),提高了信息安全基礎結構的完整性。 它從計算機網絡系統中的若干關鍵點收集信息,并分析這些信息,觀察網絡中是否有違反安全策略的行為和遭到襲擊的跡象。 入侵檢測被認為是防火墻之后的第二道安全閘門,在不影響網絡性能的情況下能對網絡進行監測,從而提供對內部攻擊、外部攻擊和誤操作的實時保護。
Snort IDS(入侵檢測系統)是一個強大的網絡入侵檢測系統。 它具有實時數據流量分析和記錄IP網絡數據包的能力,能夠進行協議分析,對網絡數據包內容進行搜索/匹配。 它能夠檢測各種不同的攻擊方式,對攻擊進行實時報警。 此外,Snort 是開源的入侵檢測系統,具有很好的擴展性和可移植性。
本文提出的方案中靶場的系統架構主要由用戶區域、連接區域和虛擬區域構成[5],系統組網架構如圖1 所示。

圖1 靶場架構圖Fig. 1 Range structure
用戶區域。 以工控安全研究人員或者學習者的個人電腦設備為主,使用者通過該區域接入虛擬網絡平臺,開展各類工控安全研究學習。
連接區域。 以路由器和交換機為主,在用戶區域和虛擬網絡平臺之間起到橋接作用,可通過設置各類訪問規則來控制不同用戶對工控虛擬網絡的訪問權限,或者對不同用戶組進行訪問隔離設置。
虛擬區域。 即虛擬化工控網絡靶場基礎云平臺,其中虛擬區域基于OpenStack 設計,包括控制節點、計算節點和協議檢測系統。 OpenStack 平臺用于生成部署虛擬網絡,方便對工控網絡拓撲及網絡中節點單元的脆弱性開展研究測試,而基于Snort 的協議檢測系統則用于對工業協議的安全性進行研究分析[6]。 虛擬區域組網架構如圖2 所示。

圖2 虛擬區域架構Fig. 2 Virtual area architecture
一般情況下,行業內常討論的工業控制網絡的核心區域包括調度層和控制層。 而OpenStack 平臺通過Nova 組件和Zun 組件分別實現了基于KVM 的虛擬機和基于LXC 的容器,結合其他相關技術,可虛擬工業控制網絡中核心區域的服務器或設備。
虛擬網絡由多個虛擬節點組成,這些虛擬節點可能是虛擬服務器、主機、通信設備以及工控專屬設備,系統涉及Linux 和Windows,系統之上運行著各類不同軟件,而這些豐富多樣的虛擬節點均生成于對應的虛擬鏡像,一系列工控環境相關的虛擬鏡像的集合構成了工控網絡靶場的工控知識鏡像庫。
鏡像是一種文件存儲形式,與ZIP 壓縮包類似,它將特定的一系列文件按照一定的格式制作成單一的文件,以方便用戶下載和使用。 鏡像文件是無法直接使用的,需要利用一些加載工具進行解壓后才能使用。 工控知識鏡像庫主要由各類系統鏡像組成,每個系統鏡像文件都包含特定的系統內核、系統設置、應用程序和資料文件。 虛擬化平臺利用鏡像文件可直接生成虛擬系統,具備與真實linux 或windows 系統完全一樣的功能,進入虛擬系統后,所有操作都是在這個全新的獨立的虛擬系統里面進行。 可以獨立安裝運行軟件,保存數據,擁有自己的獨立桌面,不會對真正的系統產生任何影響。
本文目標是實現各類型工控網絡的自動化部署,除此之外還要保證部署過程盡可能簡單易操作。根據以上要求,通過研究分析,設計了基于XML 和SDK 的協同工作模式,對網絡配置與虛擬化部署進行切割分離,用戶只需要對可讀性強的XML 配置文件進行編寫,而不需要了解已封裝部署工具的具體實現步驟和細節。
本文主要設計了五種類型XML 文件來分別描述網絡架構、網段信息、節點信息和網絡策略,即網絡拓撲圖中面、線、點以及相互間的關聯。
不同類型的XML 配置文件進行歸攏整合后,構建出一個XML 配置樹結構,如下圖3 所示。

圖3 網絡拓撲XML 配置樹結構Fig. 3 Network topology XML configuration tree structure
XML 配置樹從上到下分為4 個層次,網絡拓撲配置文件作為樹根節點位于第一層次;第二層次包括五個分支節點,對應網絡集合、路由器集合、安全策略集合、虛擬機集合以及容器集合;第三層次包含父節點下屬的特定配置文件,例如:父節點為虛擬機集合,則子節點為某些特定的虛擬機配置文件;第四層次即最后的葉節點(終端節點)主要對應各配置文件內的屬性。
實現多層次工控虛擬網絡自動化部署的首要條件是完成對XML 配置樹的遍歷,本文根據靶場云平臺的資源調度特性采用了深度優先遍歷(DFS),算法核心思想是從某個節點一直往深處走,走到不能往下走之后,回退到上一步,直到找到解或把所有節點走完。 DFS 前序遍歷的算法如表1 所示。

表1 DFS 前序遍歷算法Tab. 1 DFS algorithm
通過分析研究,結合OpenStack SDK 開發工具包,即可實現對虛擬化工控網絡的自動化部署工具的設計與實現。
本文所研發的自動化部署工具主要分為前端和后端兩個部分,前端是自動化部署模塊,后端是基礎調用包。 基礎調用包又細分為配置文件讀取模塊、虛擬資源部署模塊和虛擬資源回收模塊。 各模塊調用關系如圖4 所示。

圖4 模塊調用關系Fig. 4 Module call relationship
詳細的部署流程如表2 所示。

表2 自動化部署流程Tab. 2 Automated deployment process
相較于表2 步驟,虛擬資源回收的操作流程可簡單看做是部署流程的逆操作。
本系統采用雙機容錯系統基于FPGA熱備份方案。在該系統中,仲裁器通過與CPU子系統交互來獲取工作狀態,并據此判斷CPU狀態標志。FPGA仲裁器從兩路控制信號中仲裁出與外界通信的實際控制信號[7],雙機容錯系統方案如圖1所示。
工控協議研究是工控網絡安全中至關重要的一環。 本文針對Snort 平臺開展了研究分析,并在其基礎上實現了工控協議檢測系統的設計部署。 系統主要應用有兩個方面:一是為舉辦工控網絡安全競賽提供支持,系統可對參賽隊伍的操作進度給予檢測與評判;二是制作成工控知識鏡像文件,在靶場的虛擬網絡中部署,方便學生或相關研究人員開展工控協議的分析測試。
工業控制通信協議種類繁多,有的協議格式公開,如modbus、dnp3 等,有的則是廠家的私用協議,協議規范不公開,如西門子的s7 協議。 公開的協議可參照協議規范進行分析,過程相對簡單,而私有協議則需要通過功能測試配合數據包分析技術研究分析,整個過程相對復雜、耗時。 鑒于以上因素,Snort入侵檢測平臺憑借開源性和兼容性,可以很好地拓展相關功能模塊來實現對工控協議的分析檢測。
靶場采用了兩種模式對工控協議檢測系統進行部署:
(1)在工控靶場的基礎平臺上部署。 該部署模式目的是為組織工控安全競賽提供支撐,核心是在靶場底層基礎平臺上對所有虛擬網絡內的工業控制數據流進行監測,該需求的實現主要是依托于OpenStack 虛擬網絡通信的特性,即OpenStack 默認部署模式下,計算節點通過ml2 插件實現二層互通,所有三層流量都要經過網絡節點。
(2)在工控靶場的虛擬網絡中部署。 除了將工控協議檢測系統部署在基礎云平臺外,本文還將該系統制作成虛擬鏡像文件,可在虛擬網絡中使用,為工控協議學習、研究、測試提供服務。
在OpenStack 平臺上,使用一臺曙光服務器作為控制節點,控制節點用于控制虛擬機之間的通信和資源分配。 另外使用兩臺曙光服務器作為計算節點,負責調度虛擬化資源。 在計算節點上通過Nova組件和Zun 組件分別虛擬出工控網絡的監管層主機設備和現場層設備。
在工控協議檢測平臺上,使用一臺曙光服務器搭建了Snort+Base 的入侵檢測系統,Snort 實現對檢測數據的分析、識別、存儲,Base 實現了對檢測結果的可視化展示。 四臺曙光服務器的配置如表3 所示。

表3 物理主機配置Tab. 3 Server configuration

圖5 PLC 虛擬化運行效果Fig. 5 OpenPLC operation screen
為進一步驗證工控組態軟件在虛擬平臺上的協同運作狀況,本文設計了一套火電廠輸煤控制系統場景,在SCADA 系統上構建了工控場景的示意模型,方便監控管理,如圖6 所示。 同時,在PLC 系統上植入了功能完備的梯形圖程序,用于模擬操控工控設備工作。 最后通過一定周期頻率的測試,證實在虛擬化工控網絡靶場平臺上使用工控軟件仿真模擬工控場景是合理有效的,且一切功能指標均顯示正常。

圖6 工控場景示意架構Fig. 6 Schematic architecture of industrial control scene
(2)自動化部署。 本文設計了一種復雜工控網絡架構,以驗證自動化部署工具的有效性和穩定性,如圖7 所示。 復雜工控網絡是在常規工控網絡的基礎上根據工業互聯的發展趨勢,添加了企業辦公網和DMZ 區,同時依據業務屬性在企業OA 網和工控調度網間添加了一臺雙網卡數據庫服務器,便于OA網內的業務管理系統獲取生產線的各類參數。

圖7 復雜工控網絡拓撲Fig. 7 Complex ICS Network topology
使用自動部署工具automation 對上述網絡進行自動化部署,經過多次測試,部署和回收工具均能穩定,有效地完成多套虛擬工控網絡的部署與回收任務。 除初始階段對工具的調用外,后續過程均無需用戶參與,符合自動化設計的初衷和要求。
(3)協議檢測。 為驗證工控協議檢測系統的功能效果,本文在工控網絡靶場平臺上部署了虛擬化工控網絡,在虛擬網絡內配置并運行工控生態系統,讓軟SCADA 系統和軟PLC 通過Modbus 進行不間斷通信,并提前開啟工控協議檢測系統的網絡數據嗅探功能。

圖8 Modbus TCP 檢測識別效果Fig. 8 Modbus TCP detection effect
通過實驗測試發現工控協議檢測系統可以實時、準確地對Modbus 通信協議指令進行監控告警,告警內容會實時顯示在Snort Base 管理界面,如圖8所示,告警信息涉及Modbus 通信的源IP 地址、目的IP 地址、源端口、目的端口、通信時間以及Modbus執行的具體指令。
(1)時耗性能。 主要對虛擬工控網絡的各組成單元進行部署周期測量,通過多次測量取平均值的方式來分析節點單元的時耗性能,測試結果如表4所示。

表4 虛擬資源部署測試結果Tab. 4 Virtual resource deployment test results
測試結果顯示各類虛擬資源的部署時間代價在預期的可控訪問內。
(2)網絡性能。 網絡性能是判斷一個網絡優劣的關鍵要素,本文采用了目前主流的兩款網絡性能檢測工具(iperf3 和ixChariot)對部署的虛擬工控網絡進行測試,研判靶場所生成的虛擬網絡是否滿足應用需求,檢測結果如表5、表6 所示。

表5 iperf3 檢測結果Tab. 5 iperf3 detection result

表6 ixChariot 檢測結果Tab. 6 ixChariot detection result
綜合分析兩種工具的測試結果,可以判斷工控網絡靶場所生產的虛擬網絡符合原有預期,其網絡性能足以支持各類工控學習、研究與實驗。
本文研究的目的在于設計一種仿真度高、簡單易操作、推廣性強的工控網絡靶場,可用于工控安全技術的研究與相關人才的培養。 通過上述實驗測試結果分析,本文闡述的工控網絡靶場能在較短時間內完成工控網絡場景的部署,可多用戶同時段使用,前期投入及后期運維成本均不高,適合于工控安全領域的科研、教學任務。