陳吉龍, 翟健宏
(哈爾濱工業(yè)大學(xué) 計算機科學(xué)與技術(shù)學(xué)院, 哈爾濱150000)
工業(yè)控制系統(tǒng)廣泛應(yīng)用于各個領(lǐng)域,包括基礎(chǔ)設(shè)施(金融、能源、通信、電力、交通)、民生(水、電、燃氣、醫(yī)院、智慧城市、智能汽車)、工業(yè)生產(chǎn)(冶金、電力、石油化工、核能等)和軍工等。 超過80%的涉及國計民生的關(guān)鍵基礎(chǔ)設(shè)施依靠工業(yè)控制系統(tǒng)來實現(xiàn)自動化作業(yè)。 2010 年的伊朗核電站攻擊事件、2015 年的烏克蘭電網(wǎng)攻擊事件以及2019 年的委內(nèi)瑞拉電力系統(tǒng)攻擊事件充分證實了工控安全問題對國家、社會和經(jīng)濟的重要影響[1]。
受限于歷史原因,目前工業(yè)控制領(lǐng)域安全軟硬件研發(fā)程度以及專業(yè)安全從業(yè)人員的數(shù)量還遠遠不能滿足市場需求。 尤其是在各類工控安全事件頻發(fā)的今天,無論是工控產(chǎn)品制造方還是使用方均對工控安全予以高度重視,并在工業(yè)控制網(wǎng)絡(luò)基礎(chǔ)設(shè)施改善及相關(guān)人才培養(yǎng)方面逐年加大投入力度,搭建了適用于不同場景的工業(yè)控制實驗?zāi)M環(huán)境,用于工控安全技術(shù)的研究和人才培養(yǎng),但是這些實驗平臺基本上采用全實物或半實物的方式,投入成本高,建設(shè)周期長,且往往只能針對某一種特定工業(yè)控制環(huán)境,一旦仿真對象變更就需要重新搭建一套平臺,靈活性差。 另外,以實物或半實物形式搭建的實驗平臺抗打擊性差,進行研究測試時容易對現(xiàn)實設(shè)備造成不可逆的破壞,后期維護代價高。
鑒于上述存在的問題,本文提出了一種基于虛擬化技術(shù)的工業(yè)控制網(wǎng)絡(luò)靶場[2]設(shè)計方案。 該靶場依托于當(dāng)前最新的虛擬化云平臺OpenStack,同時結(jié)合入侵檢測系統(tǒng)Snort,實現(xiàn)了在低投入、低消耗的條件下簡單、便捷、高效地對各類現(xiàn)實工業(yè)控制環(huán)境進行模擬仿真,可有效支撐工業(yè)控制領(lǐng)域安全人才的教學(xué)培訓(xùn)、新產(chǎn)品新技術(shù)的研究測試、工業(yè)控制網(wǎng)絡(luò)風(fēng)險評估以及組織工控攻防演練或安全競賽。
工業(yè)控制網(wǎng)絡(luò)相比于常規(guī)的小型局域網(wǎng)或企業(yè)辦公網(wǎng)有其特殊的組織架構(gòu)。 現(xiàn)實的工業(yè)控制網(wǎng)絡(luò)一般具有多層次結(jié)構(gòu),各層的業(yè)務(wù)屬性和軟硬件組成、配置均不盡相同。 工業(yè)控制核心區(qū)域從上到下大致分為信息網(wǎng)(負責(zé)工控核心網(wǎng)的監(jiān)控管理,以ERP、MIS 等為主)、通信隔離區(qū)(以網(wǎng)絡(luò)安全設(shè)備為主,在保障上下層合法數(shù)據(jù)通信的基礎(chǔ)上防止非授權(quán)訪問或意外的數(shù)據(jù)泄露)、調(diào)度網(wǎng)(以SCADA、DCS、HMI、MES 等為主,實現(xiàn)對小型控制單元的監(jiān)管)、控制網(wǎng)(以PLC、RTU、IED 等設(shè)備為主,實現(xiàn)對實際生產(chǎn)設(shè)備的監(jiān)控管理)、現(xiàn)場網(wǎng)(由實際生產(chǎn)設(shè)備組成,包括發(fā)電機、閘刀、開關(guān)等機械單元)。
現(xiàn)有的工控網(wǎng)絡(luò)協(xié)議種類繁多,各自應(yīng)用場景也不同。 傳統(tǒng)的工控協(xié)議基于現(xiàn)場總線,主要包括CAN、DeviceNet、CCL-Link、Profibus-DP、Profius-PA等。 但隨著兩化的推進,衍生出許多基于工業(yè)以太網(wǎng)的工控協(xié)議,主要的有Modbus、DNP3、Profinet、EtherNet/IP、S7 等。
目前工控網(wǎng)絡(luò)中存在的不足和缺陷主要有以下方面:一是工業(yè)控制軟件系統(tǒng),如SCADA、組態(tài)軟件、PLC 編程軟件等存在安全漏洞;二是通信協(xié)議,工控網(wǎng)絡(luò)使用的協(xié)議眾多,但基本上均是明文傳輸,無加密無認證無權(quán)限控制;三是小型控制單元,如PLC、IED、RTU 等存在錯誤配置、業(yè)務(wù)邏輯漏洞、硬編碼后門、緩沖區(qū)溢出等問題[3]。
虛擬化是指通過虛擬化技術(shù)將一臺計算機虛擬為多臺邏輯計算機。 在一臺計算機上同時運行多個邏輯計算機,每個邏輯計算機可運行不同的操作系統(tǒng),并且應(yīng)用程序都可以在相互獨立的空間內(nèi)運行而互不影響,從而顯著提高計算機的工作效率。 虛擬化使用軟件的方法,重新定義、劃分IT 資源,可以實現(xiàn)IT 資源的動態(tài)分配、靈活調(diào)度、跨域共享,提高IT 資源利用率,使IT 資源能夠真正成為社會基礎(chǔ)設(shè)施,服務(wù)于各行各業(yè)中靈活多變的應(yīng)用需求[4]。
OpenStack 是一個開源的云計算管理平臺項目,它的主要任務(wù)是給用戶提供IaaS 服務(wù)。 OpenStack為私有云和公有云提供可擴展的彈性的云計算服務(wù)。 項目目標是提供實施簡單、可大規(guī)模擴展、豐富、標準統(tǒng)一的云計算管理平臺。
入侵檢測是防火墻的合理補充,幫助系統(tǒng)對付網(wǎng)絡(luò)攻擊,擴展了系統(tǒng)管理員的安全管理能力(包括安全審計、監(jiān)視、進攻識別和響應(yīng)),提高了信息安全基礎(chǔ)結(jié)構(gòu)的完整性。 它從計算機網(wǎng)絡(luò)系統(tǒng)中的若干關(guān)鍵點收集信息,并分析這些信息,觀察網(wǎng)絡(luò)中是否有違反安全策略的行為和遭到襲擊的跡象。 入侵檢測被認為是防火墻之后的第二道安全閘門,在不影響網(wǎng)絡(luò)性能的情況下能對網(wǎng)絡(luò)進行監(jiān)測,從而提供對內(nèi)部攻擊、外部攻擊和誤操作的實時保護。
Snort IDS(入侵檢測系統(tǒng))是一個強大的網(wǎng)絡(luò)入侵檢測系統(tǒng)。 它具有實時數(shù)據(jù)流量分析和記錄IP網(wǎng)絡(luò)數(shù)據(jù)包的能力,能夠進行協(xié)議分析,對網(wǎng)絡(luò)數(shù)據(jù)包內(nèi)容進行搜索/匹配。 它能夠檢測各種不同的攻擊方式,對攻擊進行實時報警。 此外,Snort 是開源的入侵檢測系統(tǒng),具有很好的擴展性和可移植性。
本文提出的方案中靶場的系統(tǒng)架構(gòu)主要由用戶區(qū)域、連接區(qū)域和虛擬區(qū)域構(gòu)成[5],系統(tǒng)組網(wǎng)架構(gòu)如圖1 所示。
圖1 靶場架構(gòu)圖Fig. 1 Range structure
用戶區(qū)域。 以工控安全研究人員或者學(xué)習(xí)者的個人電腦設(shè)備為主,使用者通過該區(qū)域接入虛擬網(wǎng)絡(luò)平臺,開展各類工控安全研究學(xué)習(xí)。
連接區(qū)域。 以路由器和交換機為主,在用戶區(qū)域和虛擬網(wǎng)絡(luò)平臺之間起到橋接作用,可通過設(shè)置各類訪問規(guī)則來控制不同用戶對工控虛擬網(wǎng)絡(luò)的訪問權(quán)限,或者對不同用戶組進行訪問隔離設(shè)置。
虛擬區(qū)域。 即虛擬化工控網(wǎng)絡(luò)靶場基礎(chǔ)云平臺,其中虛擬區(qū)域基于OpenStack 設(shè)計,包括控制節(jié)點、計算節(jié)點和協(xié)議檢測系統(tǒng)。 OpenStack 平臺用于生成部署虛擬網(wǎng)絡(luò),方便對工控網(wǎng)絡(luò)拓撲及網(wǎng)絡(luò)中節(jié)點單元的脆弱性開展研究測試,而基于Snort 的協(xié)議檢測系統(tǒng)則用于對工業(yè)協(xié)議的安全性進行研究分析[6]。 虛擬區(qū)域組網(wǎng)架構(gòu)如圖2 所示。
圖2 虛擬區(qū)域架構(gòu)Fig. 2 Virtual area architecture
一般情況下,行業(yè)內(nèi)常討論的工業(yè)控制網(wǎng)絡(luò)的核心區(qū)域包括調(diào)度層和控制層。 而OpenStack 平臺通過Nova 組件和Zun 組件分別實現(xiàn)了基于KVM 的虛擬機和基于LXC 的容器,結(jié)合其他相關(guān)技術(shù),可虛擬工業(yè)控制網(wǎng)絡(luò)中核心區(qū)域的服務(wù)器或設(shè)備。
虛擬網(wǎng)絡(luò)由多個虛擬節(jié)點組成,這些虛擬節(jié)點可能是虛擬服務(wù)器、主機、通信設(shè)備以及工控專屬設(shè)備,系統(tǒng)涉及Linux 和Windows,系統(tǒng)之上運行著各類不同軟件,而這些豐富多樣的虛擬節(jié)點均生成于對應(yīng)的虛擬鏡像,一系列工控環(huán)境相關(guān)的虛擬鏡像的集合構(gòu)成了工控網(wǎng)絡(luò)靶場的工控知識鏡像庫。
鏡像是一種文件存儲形式,與ZIP 壓縮包類似,它將特定的一系列文件按照一定的格式制作成單一的文件,以方便用戶下載和使用。 鏡像文件是無法直接使用的,需要利用一些加載工具進行解壓后才能使用。 工控知識鏡像庫主要由各類系統(tǒng)鏡像組成,每個系統(tǒng)鏡像文件都包含特定的系統(tǒng)內(nèi)核、系統(tǒng)設(shè)置、應(yīng)用程序和資料文件。 虛擬化平臺利用鏡像文件可直接生成虛擬系統(tǒng),具備與真實linux 或windows 系統(tǒng)完全一樣的功能,進入虛擬系統(tǒng)后,所有操作都是在這個全新的獨立的虛擬系統(tǒng)里面進行。 可以獨立安裝運行軟件,保存數(shù)據(jù),擁有自己的獨立桌面,不會對真正的系統(tǒng)產(chǎn)生任何影響。
本文目標是實現(xiàn)各類型工控網(wǎng)絡(luò)的自動化部署,除此之外還要保證部署過程盡可能簡單易操作。根據(jù)以上要求,通過研究分析,設(shè)計了基于XML 和SDK 的協(xié)同工作模式,對網(wǎng)絡(luò)配置與虛擬化部署進行切割分離,用戶只需要對可讀性強的XML 配置文件進行編寫,而不需要了解已封裝部署工具的具體實現(xiàn)步驟和細節(jié)。
本文主要設(shè)計了五種類型XML 文件來分別描述網(wǎng)絡(luò)架構(gòu)、網(wǎng)段信息、節(jié)點信息和網(wǎng)絡(luò)策略,即網(wǎng)絡(luò)拓撲圖中面、線、點以及相互間的關(guān)聯(lián)。
不同類型的XML 配置文件進行歸攏整合后,構(gòu)建出一個XML 配置樹結(jié)構(gòu),如下圖3 所示。
圖3 網(wǎng)絡(luò)拓撲XML 配置樹結(jié)構(gòu)Fig. 3 Network topology XML configuration tree structure
XML 配置樹從上到下分為4 個層次,網(wǎng)絡(luò)拓撲配置文件作為樹根節(jié)點位于第一層次;第二層次包括五個分支節(jié)點,對應(yīng)網(wǎng)絡(luò)集合、路由器集合、安全策略集合、虛擬機集合以及容器集合;第三層次包含父節(jié)點下屬的特定配置文件,例如:父節(jié)點為虛擬機集合,則子節(jié)點為某些特定的虛擬機配置文件;第四層次即最后的葉節(jié)點(終端節(jié)點)主要對應(yīng)各配置文件內(nèi)的屬性。
實現(xiàn)多層次工控虛擬網(wǎng)絡(luò)自動化部署的首要條件是完成對XML 配置樹的遍歷,本文根據(jù)靶場云平臺的資源調(diào)度特性采用了深度優(yōu)先遍歷(DFS),算法核心思想是從某個節(jié)點一直往深處走,走到不能往下走之后,回退到上一步,直到找到解或把所有節(jié)點走完。 DFS 前序遍歷的算法如表1 所示。
表1 DFS 前序遍歷算法Tab. 1 DFS algorithm
通過分析研究,結(jié)合OpenStack SDK 開發(fā)工具包,即可實現(xiàn)對虛擬化工控網(wǎng)絡(luò)的自動化部署工具的設(shè)計與實現(xiàn)。
本文所研發(fā)的自動化部署工具主要分為前端和后端兩個部分,前端是自動化部署模塊,后端是基礎(chǔ)調(diào)用包。 基礎(chǔ)調(diào)用包又細分為配置文件讀取模塊、虛擬資源部署模塊和虛擬資源回收模塊。 各模塊調(diào)用關(guān)系如圖4 所示。
圖4 模塊調(diào)用關(guān)系Fig. 4 Module call relationship
詳細的部署流程如表2 所示。
表2 自動化部署流程Tab. 2 Automated deployment process
相較于表2 步驟,虛擬資源回收的操作流程可簡單看做是部署流程的逆操作。
本系統(tǒng)采用雙機容錯系統(tǒng)基于FPGA熱備份方案。在該系統(tǒng)中,仲裁器通過與CPU子系統(tǒng)交互來獲取工作狀態(tài),并據(jù)此判斷CPU狀態(tài)標志。FPGA仲裁器從兩路控制信號中仲裁出與外界通信的實際控制信號[7],雙機容錯系統(tǒng)方案如圖1所示。
工控協(xié)議研究是工控網(wǎng)絡(luò)安全中至關(guān)重要的一環(huán)。 本文針對Snort 平臺開展了研究分析,并在其基礎(chǔ)上實現(xiàn)了工控協(xié)議檢測系統(tǒng)的設(shè)計部署。 系統(tǒng)主要應(yīng)用有兩個方面:一是為舉辦工控網(wǎng)絡(luò)安全競賽提供支持,系統(tǒng)可對參賽隊伍的操作進度給予檢測與評判;二是制作成工控知識鏡像文件,在靶場的虛擬網(wǎng)絡(luò)中部署,方便學(xué)生或相關(guān)研究人員開展工控協(xié)議的分析測試。
工業(yè)控制通信協(xié)議種類繁多,有的協(xié)議格式公開,如modbus、dnp3 等,有的則是廠家的私用協(xié)議,協(xié)議規(guī)范不公開,如西門子的s7 協(xié)議。 公開的協(xié)議可參照協(xié)議規(guī)范進行分析,過程相對簡單,而私有協(xié)議則需要通過功能測試配合數(shù)據(jù)包分析技術(shù)研究分析,整個過程相對復(fù)雜、耗時。 鑒于以上因素,Snort入侵檢測平臺憑借開源性和兼容性,可以很好地拓展相關(guān)功能模塊來實現(xiàn)對工控協(xié)議的分析檢測。
靶場采用了兩種模式對工控協(xié)議檢測系統(tǒng)進行部署:
(1)在工控靶場的基礎(chǔ)平臺上部署。 該部署模式目的是為組織工控安全競賽提供支撐,核心是在靶場底層基礎(chǔ)平臺上對所有虛擬網(wǎng)絡(luò)內(nèi)的工業(yè)控制數(shù)據(jù)流進行監(jiān)測,該需求的實現(xiàn)主要是依托于OpenStack 虛擬網(wǎng)絡(luò)通信的特性,即OpenStack 默認部署模式下,計算節(jié)點通過ml2 插件實現(xiàn)二層互通,所有三層流量都要經(jīng)過網(wǎng)絡(luò)節(jié)點。
(2)在工控靶場的虛擬網(wǎng)絡(luò)中部署。 除了將工控協(xié)議檢測系統(tǒng)部署在基礎(chǔ)云平臺外,本文還將該系統(tǒng)制作成虛擬鏡像文件,可在虛擬網(wǎng)絡(luò)中使用,為工控協(xié)議學(xué)習(xí)、研究、測試提供服務(wù)。
在OpenStack 平臺上,使用一臺曙光服務(wù)器作為控制節(jié)點,控制節(jié)點用于控制虛擬機之間的通信和資源分配。 另外使用兩臺曙光服務(wù)器作為計算節(jié)點,負責(zé)調(diào)度虛擬化資源。 在計算節(jié)點上通過Nova組件和Zun 組件分別虛擬出工控網(wǎng)絡(luò)的監(jiān)管層主機設(shè)備和現(xiàn)場層設(shè)備。
在工控協(xié)議檢測平臺上,使用一臺曙光服務(wù)器搭建了Snort+Base 的入侵檢測系統(tǒng),Snort 實現(xiàn)對檢測數(shù)據(jù)的分析、識別、存儲,Base 實現(xiàn)了對檢測結(jié)果的可視化展示。 四臺曙光服務(wù)器的配置如表3 所示。
表3 物理主機配置Tab. 3 Server configuration
圖5 PLC 虛擬化運行效果Fig. 5 OpenPLC operation screen
為進一步驗證工控組態(tài)軟件在虛擬平臺上的協(xié)同運作狀況,本文設(shè)計了一套火電廠輸煤控制系統(tǒng)場景,在SCADA 系統(tǒng)上構(gòu)建了工控場景的示意模型,方便監(jiān)控管理,如圖6 所示。 同時,在PLC 系統(tǒng)上植入了功能完備的梯形圖程序,用于模擬操控工控設(shè)備工作。 最后通過一定周期頻率的測試,證實在虛擬化工控網(wǎng)絡(luò)靶場平臺上使用工控軟件仿真模擬工控場景是合理有效的,且一切功能指標均顯示正常。
圖6 工控場景示意架構(gòu)Fig. 6 Schematic architecture of industrial control scene
(2)自動化部署。 本文設(shè)計了一種復(fù)雜工控網(wǎng)絡(luò)架構(gòu),以驗證自動化部署工具的有效性和穩(wěn)定性,如圖7 所示。 復(fù)雜工控網(wǎng)絡(luò)是在常規(guī)工控網(wǎng)絡(luò)的基礎(chǔ)上根據(jù)工業(yè)互聯(lián)的發(fā)展趨勢,添加了企業(yè)辦公網(wǎng)和DMZ 區(qū),同時依據(jù)業(yè)務(wù)屬性在企業(yè)OA 網(wǎng)和工控調(diào)度網(wǎng)間添加了一臺雙網(wǎng)卡數(shù)據(jù)庫服務(wù)器,便于OA網(wǎng)內(nèi)的業(yè)務(wù)管理系統(tǒng)獲取生產(chǎn)線的各類參數(shù)。
圖7 復(fù)雜工控網(wǎng)絡(luò)拓撲Fig. 7 Complex ICS Network topology
使用自動部署工具automation 對上述網(wǎng)絡(luò)進行自動化部署,經(jīng)過多次測試,部署和回收工具均能穩(wěn)定,有效地完成多套虛擬工控網(wǎng)絡(luò)的部署與回收任務(wù)。 除初始階段對工具的調(diào)用外,后續(xù)過程均無需用戶參與,符合自動化設(shè)計的初衷和要求。
(3)協(xié)議檢測。 為驗證工控協(xié)議檢測系統(tǒng)的功能效果,本文在工控網(wǎng)絡(luò)靶場平臺上部署了虛擬化工控網(wǎng)絡(luò),在虛擬網(wǎng)絡(luò)內(nèi)配置并運行工控生態(tài)系統(tǒng),讓軟SCADA 系統(tǒng)和軟PLC 通過Modbus 進行不間斷通信,并提前開啟工控協(xié)議檢測系統(tǒng)的網(wǎng)絡(luò)數(shù)據(jù)嗅探功能。
圖8 Modbus TCP 檢測識別效果Fig. 8 Modbus TCP detection effect
通過實驗測試發(fā)現(xiàn)工控協(xié)議檢測系統(tǒng)可以實時、準確地對Modbus 通信協(xié)議指令進行監(jiān)控告警,告警內(nèi)容會實時顯示在Snort Base 管理界面,如圖8所示,告警信息涉及Modbus 通信的源IP 地址、目的IP 地址、源端口、目的端口、通信時間以及Modbus執(zhí)行的具體指令。
(1)時耗性能。 主要對虛擬工控網(wǎng)絡(luò)的各組成單元進行部署周期測量,通過多次測量取平均值的方式來分析節(jié)點單元的時耗性能,測試結(jié)果如表4所示。
表4 虛擬資源部署測試結(jié)果Tab. 4 Virtual resource deployment test results
測試結(jié)果顯示各類虛擬資源的部署時間代價在預(yù)期的可控訪問內(nèi)。
(2)網(wǎng)絡(luò)性能。 網(wǎng)絡(luò)性能是判斷一個網(wǎng)絡(luò)優(yōu)劣的關(guān)鍵要素,本文采用了目前主流的兩款網(wǎng)絡(luò)性能檢測工具(iperf3 和ixChariot)對部署的虛擬工控網(wǎng)絡(luò)進行測試,研判靶場所生成的虛擬網(wǎng)絡(luò)是否滿足應(yīng)用需求,檢測結(jié)果如表5、表6 所示。
表5 iperf3 檢測結(jié)果Tab. 5 iperf3 detection result
表6 ixChariot 檢測結(jié)果Tab. 6 ixChariot detection result
綜合分析兩種工具的測試結(jié)果,可以判斷工控網(wǎng)絡(luò)靶場所生產(chǎn)的虛擬網(wǎng)絡(luò)符合原有預(yù)期,其網(wǎng)絡(luò)性能足以支持各類工控學(xué)習(xí)、研究與實驗。
本文研究的目的在于設(shè)計一種仿真度高、簡單易操作、推廣性強的工控網(wǎng)絡(luò)靶場,可用于工控安全技術(shù)的研究與相關(guān)人才的培養(yǎng)。 通過上述實驗測試結(jié)果分析,本文闡述的工控網(wǎng)絡(luò)靶場能在較短時間內(nèi)完成工控網(wǎng)絡(luò)場景的部署,可多用戶同時段使用,前期投入及后期運維成本均不高,適合于工控安全領(lǐng)域的科研、教學(xué)任務(wù)。