鄭宇泰 張 飛 黃劉松 宋 坤 周明琴
(1、南京華盾電力信息安全測評有限公司,江蘇 南京211100 2、安徽工業(yè)大學(xué) 信息化處,安徽 馬鞍山243032 3、馬鞍山師范高等??茖W(xué)校 軟件學(xué)院,安徽 馬鞍山243041)
在近期中央工作會議關(guān)于能源領(lǐng)域“四個革命、一個合作”戰(zhàn)略和網(wǎng)絡(luò)強(qiáng)國戰(zhàn)略的重要論述指引下,2017 年發(fā)布的《中華人民共和國網(wǎng)絡(luò)安全法》中對重點領(lǐng)域工業(yè)控制系統(tǒng)安全保護(hù)提出明確規(guī)定,同時《關(guān)鍵信息基礎(chǔ)設(shè)施保護(hù)條例(征求意見稿)》、《網(wǎng)絡(luò)安全等級保護(hù)條例(征求意見稿)》、《電力監(jiān)控系統(tǒng)安全防護(hù)規(guī)定》(中華人民共和國國家發(fā)展和改革委員會令第14 號)、《電力行業(yè)網(wǎng)絡(luò)與信息安全管理辦法》(國能安全[2014]317 號)、《電力監(jiān)控系統(tǒng)安全防護(hù)總體方案》(國能安全[2015]36號)、《國家能源局關(guān)于加強(qiáng)電力行業(yè)網(wǎng)絡(luò)安全工作的指導(dǎo)意見》(國能安全[2018]72 號)等國家及行業(yè)相關(guān)要求中,均要求電力企業(yè)提升安全防護(hù)、應(yīng)急響應(yīng)與處置能力,從網(wǎng)絡(luò)架構(gòu)、通信傳輸、邊界防護(hù)、訪問控制、入侵防范、惡意代碼防范、安全審計、集中管控等多方面保障網(wǎng)絡(luò)架構(gòu)安全。
邊界防護(hù)方面,新能源遠(yuǎn)程集控平臺采用統(tǒng)一建設(shè)標(biāo)準(zhǔn),系統(tǒng)部署堅持“安全分區(qū)、網(wǎng)絡(luò)專用、橫向隔離、縱向認(rèn)證”的原則,產(chǎn)控制大區(qū)網(wǎng)絡(luò)與管理信息大區(qū)網(wǎng)絡(luò)進(jìn)行物理隔離,兩網(wǎng)之間部署符合電力系統(tǒng)要求的單向隔離裝置(下文簡稱為“網(wǎng)閘”),并確保單向隔離裝置策略配置安全有效,禁止任何穿越邊界的E-Mail、Web、Telnet、Rlogin、FTP 等通用網(wǎng)絡(luò)服務(wù)。
市場擁有科東、南瑞正反向隔離裝置,珠海鴻瑞正向隔離裝置,正反向隔離裝置的存在,使得信息的上送下達(dá)需要很多的限制。目前大部分使用隔離裝置的廠家,在進(jìn)行網(wǎng)閘間數(shù)據(jù)通信都需要自己封裝數(shù)據(jù)通信模塊,其中不乏與自己本身產(chǎn)品耦合度比較高。
由于正反向隔離裝置,分布在場站測和集控側(cè)的軟件之間無法通過簡單的TCP、UDP 等協(xié)議實現(xiàn)信息的上送和下達(dá)。本文提出一種屏蔽場站側(cè)、集控側(cè)之間的正反向隔離裝置,實現(xiàn)場站側(cè)、集控側(cè)兩側(cè)部署的軟件無需對正反向隔離裝置進(jìn)行改造,直接通過本文提出的方法進(jìn)行控制指令的下發(fā),指令反饋的上送,以及其它生產(chǎn)數(shù)據(jù)的上送,讓上下層軟件可以無感知連接。
本文利用正反向網(wǎng)閘通信原理,面向電力安全I(xiàn) 區(qū),設(shè)計出一個基于正反向網(wǎng)閘的數(shù)據(jù)通信方案。新設(shè)計的數(shù)據(jù)通信方案能夠無縫銜接已成熟軟件架構(gòu),主要用于完成控制指令的下發(fā),指令反饋的上送,以及其他生產(chǎn)數(shù)據(jù)的上送功能。方案將控制指令與生產(chǎn)數(shù)據(jù)分開,控制指令因為存在上送和下達(dá),主要基于控制轉(zhuǎn)發(fā)中心和網(wǎng)閘適配程序完成;生產(chǎn)數(shù)據(jù)上送主要通過正向網(wǎng)閘上送,僅采用網(wǎng)閘適配程序完成。安全I(xiàn) 區(qū)的數(shù)據(jù)傳輸總架構(gòu)如圖1 所示。
圖1 安全I(xiàn) 區(qū)的數(shù)據(jù)傳輸總架構(gòu)
如圖所示:安全I(xiàn) 區(qū)數(shù)據(jù)傳輸過程中,分為兩種情況,一種是存在正反向隔離裝置的線路,一種是沒有網(wǎng)閘裝置的線路;控制指令都是通過控制轉(zhuǎn)發(fā)中心進(jìn)行上送下達(dá),經(jīng)過正反向隔離裝置的鏈路,在上層和下層都存在網(wǎng)閘適配程序,用于封裝正反向隔離裝置,實現(xiàn)上下層程序無縫通信,如同沒有網(wǎng)閘裝置的線路。
控制轉(zhuǎn)發(fā)中心根據(jù)一區(qū)建設(shè)需要主要完成將SCADA 程序中控制指令的轉(zhuǎn)發(fā)到ECELL 中以及接收ECELL 反饋的控制指令的工作。其中SCADA 為集控建設(shè)中信息展示控制軟件,ECELL 為電力信息采集控制指令轉(zhuǎn)發(fā)軟件,二者都為架構(gòu)相對成熟的軟件,這里對其建設(shè)原理不做描述。
控制轉(zhuǎn)發(fā)中心上層與Kafka 總線相連,不予具體程序相連,屏蔽了對不同程序的差異性,下層通過TCP 服務(wù)端接收下層程序連接,在集控I 區(qū)建設(shè)中,就是于ECELL 和網(wǎng)閘適配模塊相連接。
控制轉(zhuǎn)發(fā)中心功能模塊:
2.1.1 Kafka 操作模塊
通過Kafka 消費者訂閱Topic 與上層程序(SCADA)交互,接受SCADA 控制指令,以及通過Kafka 生產(chǎn)折將反饋指令(ECELL/網(wǎng)閘適配器模塊服務(wù)端接收的指令)反饋給上層程序(SCADA)。
2.1.2 TCP 服務(wù)端(ECELL/網(wǎng)閘適配端)
以TCP 協(xié)議與下層程序(ECELL/網(wǎng)閘適配器程序)交互(分為無網(wǎng)閘、有網(wǎng)閘兩種情況,即一個客戶端存在無網(wǎng)閘、有網(wǎng)閘兩種情況下兩路地址)。將上層程序(SCADA)控制指令發(fā)送給ECELL/網(wǎng)閘適配器程序,以及接受ECELL 執(zhí)行遙控指令的反饋信息。
2.1.3 雙地址功能
為了適應(yīng)雙網(wǎng)絡(luò)環(huán)境(不經(jīng)正反向隔離網(wǎng)閘的鏈路、經(jīng)正反向隔離網(wǎng)閘的鏈路兩種情況),控制轉(zhuǎn)發(fā)中心對于同一下層程序(ECELL)客戶端,支持下層程序(ECELL)客戶端地址以及屏蔽網(wǎng)閘的網(wǎng)閘適配器地址兩個通道。
2.1.4 主備選擇及心跳檢測功能
控制轉(zhuǎn)發(fā)中心定時與下層模塊(已連接客戶端模塊)進(jìn)行心跳檢測(發(fā)送心跳報文),檢測不通過,則主動斷開客戶端連接。
對于一個客戶端的兩個地址,如果主地址鏈路暢通,則主動斷開從地址,并不接受從地址連接。若主地址心跳不通過,再接收從地址連接。
網(wǎng)閘適配模塊的主要作用,是屏蔽正反向網(wǎng)閘對上下兩層程序交互的影響。它的存在如同一根網(wǎng)線一樣,將上下兩層程序連接在一起,實現(xiàn)信息的直接通信,而不需要考慮信息隔離的影響。
2.2.1 組成部分
網(wǎng)閘適配模塊分為網(wǎng)閘上層適配模塊以及網(wǎng)閘下層適配模塊兩部分。
2.2.1.1 網(wǎng)閘上層適配模塊。上層適配模塊包括TCP 的客戶端、TCP 的服務(wù)端、反向網(wǎng)閘客戶端、正向信息緩存隊列以及反向信息緩存隊列。其中TCP 的客戶端主要與上層的程序相連,此處為ECELL 和控制轉(zhuǎn)發(fā)中心;TCP 的服務(wù)端主要用于接收穿越正向網(wǎng)閘過來的信息(主要為控制指令的反饋信息和電力數(shù)據(jù)信息);反向網(wǎng)閘客戶端主要基于反向網(wǎng)閘通信規(guī)則,將上層程序下發(fā)控制指令發(fā)送到反向網(wǎng)閘另一端;正向信息緩存隊列以及反向信息緩存隊列主要用于暫存上送下達(dá)的信息。
2.2.1.2 網(wǎng)閘下層適配模塊。下層適配模塊包括TCP 的服務(wù)端、TCP 的客戶端、反向網(wǎng)閘服務(wù)端、正向信息緩存隊列以及反向信息緩存隊列。其中TCP 的服務(wù)端主要用于接收下層程序上送/反饋的信息,TCP 的客戶端主要基于正向網(wǎng)閘通信規(guī)則,將信息發(fā)送給正向網(wǎng)閘另一端;反向網(wǎng)閘服務(wù)端用于接收反向網(wǎng)閘客戶端發(fā)送過來的控制指令;正向信息緩存隊列以及反向信息緩存隊列主要用于暫存上送下達(dá)的信息。
2.2.2 心跳檢測功能
上層適配模塊(A 側(cè))和下層適配模塊(B 側(cè))需要檢測鏈路的狀態(tài),來確保鏈路通暢,即定時B 側(cè)模塊向A 側(cè)模塊發(fā)送心跳報文(0X10 0X04 0X2A 0X16),A 側(cè)收到心跳,利用正向網(wǎng)閘可回復(fù)1 字節(jié)特性,回復(fù)心跳確認(rèn)幀0X00。
2.2.3 程序運行模式
2.2.3.1 程序運行時,首先上層適配模塊啟動TCP Server 端,用于等待連接。下層適配模塊啟動TCP Client 端,用于不斷連接上層適配模塊的TCP Server。
2.2.3.2 當(dāng)下層適配模塊的TCP Client 連接上服務(wù)端后,定時發(fā)送心跳報文檢測。
2.2.3.3 上層適配模塊在心跳超時時間內(nèi)檢測是否收到心跳報文,如果符合則去檢測上層適配模塊中TCP Client 的狀態(tài),如果TCP Client 處于斷開狀態(tài),則不斷去重新創(chuàng)建TCP Client連接;如果TCP Client 處于連接狀態(tài),則保持當(dāng)前連接;當(dāng)收到心跳報文且TCP Client 狀態(tài)為連接時,利用正向網(wǎng)閘可回復(fù)1字節(jié)特性,回復(fù)心跳確認(rèn)幀0X00,如果在心跳超時時間內(nèi)沒有檢測到心跳報文,則主動斷開上層適配模塊中TCP Client 連接。
2.2.3.4 下層適配模塊在心跳超時時間內(nèi)檢測到心跳回復(fù)報文,則去檢測下層適配模塊TCP Server 狀態(tài),如果TCP Server狀態(tài)為未創(chuàng)建狀態(tài),則主動創(chuàng)建TCP Server;如果TCP Server 已經(jīng)創(chuàng)建,則維持該狀態(tài)。如果在心跳超時時間內(nèi)沒有檢測到心跳回復(fù)報文,則主動銷毀該TCP Server。
2.2.3.5 上下層適配模塊中反向網(wǎng)閘模塊根據(jù)需要可配置是否啟用,如果不啟動,則網(wǎng)閘適配模塊不會進(jìn)行控制指令的下達(dá),啟動狀態(tài)下則會將接收的控制指令下達(dá)。
2.2.3.6 上層適配模塊TCP Client 接收到控制指令后,會通過反向網(wǎng)閘客戶端發(fā)送給下層反向網(wǎng)閘服務(wù)端,下層適配模塊TCP Server 會將控制指令下發(fā)到下層程序。
2.2.3.7 下層適配模塊TCP Server 端接受下層程序上送的電力數(shù)據(jù)及控制反饋指令。通過下層適配模塊TCP Client 端發(fā)送給上層適配模塊TCP Server 端,上層適配模塊TCP Client 又會將TCP Server 端接收到信息發(fā)送給上層程序。
綜上所述,本文提出的面向電力安全一區(qū)的數(shù)據(jù)傳輸方法,屏蔽正反向網(wǎng)閘的通信方式,內(nèi)部封裝了正反向網(wǎng)閘通信機(jī)制。能夠?qū)崿F(xiàn)自動檢測網(wǎng)閘間網(wǎng)絡(luò)鏈路和通信狀態(tài),并將鏈路狀態(tài)模擬出通信中斷或網(wǎng)絡(luò)中斷的狀態(tài),告知給上下層程序,實現(xiàn)上下層程序的無感知連接,并將控制指令單獨抽離,形成控制轉(zhuǎn)發(fā)中心,形成控制指令的統(tǒng)一上送下達(dá),并考慮了包含雙網(wǎng)絡(luò)通信、故障切換等現(xiàn)實通訊狀況。