基于OPC協(xié)議的工控網(wǎng)絡(luò)系統(tǒng)防護(hù)淺析
一、協(xié)議概述
提到OPC協(xié)議,大家想到最多的就是OPC Classic 3.0,實(shí)際上現(xiàn)在OPC協(xié)議有兩個(gè)大類,一種是基于微軟COM/DCOM技術(shù)的“Classic”,另一種是基于Web service的OPC UA。前者在DCOM協(xié)議之上,誕生較早,已廣泛應(yīng)用在各種工業(yè)控制系統(tǒng)現(xiàn)場,成為工業(yè)自動化領(lǐng)域的事實(shí)標(biāo)準(zhǔn)。后者與前者比出生較晚,但在設(shè)計(jì)時(shí)考慮了安全因素,有了加密機(jī)制,不過目前應(yīng)用范圍較小。本文主要討論的是前者在工控系統(tǒng)中的防護(hù)。
微軟的DCOM協(xié)議是在網(wǎng)絡(luò)安全問題被廣泛認(rèn)識之前設(shè)計(jì)的,而基于DCOM協(xié)議的OPC Classic基本沒有增加任何安全相關(guān)的特性,幾乎所有著名的工業(yè)自動化軟件(包括HMI軟件、先進(jìn)控制與優(yōu)化軟件、監(jiān)控平臺軟件、綜合集成軟件等)都是基于windows平臺開發(fā),都采用或部分采用了OPC技術(shù),所以對使用OPC協(xié)議進(jìn)行通信的工控系統(tǒng)進(jìn)行防護(hù)也變得復(fù)雜和困難。
二、動態(tài)端口
與大多數(shù)應(yīng)用層協(xié)議不同,OPC的基礎(chǔ)協(xié)議DCOM協(xié)議使用動態(tài)端口機(jī)制,在真正建立數(shù)據(jù)連接之前通訊雙方還需要協(xié)商需要使用的端口。示例圖如下:
OPC動態(tài)端口協(xié)商過程
上圖中,OPC客戶端使用5568作為源端口首先向OPC服務(wù)器的135端口發(fā)起連接,連接成功后再經(jīng)過OPC服務(wù)器分配新端口1118,并通過接口ISystemActivator的方法RemoteCreateInstance的應(yīng)答報(bào)文返回給客戶端,之后客戶端使用5569作為源端口向服務(wù)器的1118端口發(fā)起新的連接用來后面的真正數(shù)據(jù)的傳輸。
三、面臨的安全威脅
基于OPC協(xié)議的工控網(wǎng)絡(luò)系統(tǒng)面臨各種各樣的威脅。在“兩網(wǎng)”融合的大背景下,工業(yè)控制系統(tǒng)的隔離性被打破,面臨來自網(wǎng)絡(luò)的威脅空前加劇。無用端口的開放、工業(yè)軟件依賴的操作系統(tǒng)本身存在的安全漏洞、工業(yè)協(xié)議本身安全性的缺失等等都將給工業(yè)控制網(wǎng)絡(luò)帶來巨大的安全隱患。在真正接入到企業(yè)管理網(wǎng)、互聯(lián)網(wǎng)之前,基于OPC協(xié)議的工業(yè)控制系統(tǒng)必須加入相應(yīng)的安全設(shè)備進(jìn)行防護(hù),才能提高自身網(wǎng)絡(luò)的安全。由于OPC協(xié)議不同與傳統(tǒng)的IT應(yīng)用層協(xié)議,對OPC協(xié)議的解析深度決定了安全產(chǎn)品在工業(yè)控制系統(tǒng)安全防護(hù)中的真正作用。
四、防護(hù)方案簡介
1. 傳統(tǒng)IT系統(tǒng)防火墻
如果在基于OPC協(xié)議的工業(yè)控制系統(tǒng)中安裝傳統(tǒng)IT系統(tǒng)防火墻(以下簡稱:傳統(tǒng)防火墻)進(jìn)行防護(hù),由于傳統(tǒng)防火墻不支持OPC協(xié)議的任何解析,為了能夠保證OPC業(yè)務(wù)的正常使用,不得不開放OPC服務(wù)器的所有可開放端口,而OPC服務(wù)器可以分配的端口號范圍很廣-如果OPC服務(wù)器安裝在Windows Server 2008,超過16000個(gè)端口號都可能被使用,早期的Windows版本則超過了48000個(gè)端口號。
傳統(tǒng)防火墻部署示意圖
上圖中傳統(tǒng)防火墻安裝在企業(yè)管理網(wǎng)和生產(chǎn)控制網(wǎng)的邊界進(jìn)行防護(hù),由于OPC服務(wù)器可能使用任何可使用的端口來進(jìn)行真正的數(shù)據(jù)連接,而具體使用的端口號在響應(yīng)客戶端請求的應(yīng)答報(bào)文中。傳統(tǒng)防火墻無法識別出OPC服務(wù)器具體使用的端口號,為確保OPC客戶端可以正常連接OPC服務(wù)器,防火墻需要配置全部端口可訪問,這樣的傳統(tǒng)防火墻形同虛設(shè),生產(chǎn)控制網(wǎng)的門口大開,幾乎安全暴露在攻擊者面前。
2. 端口防護(hù)工業(yè)防火墻
區(qū)別與傳統(tǒng)防火墻,近年來發(fā)展起來的專門用于防護(hù)工業(yè)控制現(xiàn)場的工業(yè)級防火墻基本支持了OPC的深度解析,但依據(jù)解析深度的不同,在OPC協(xié)議為基礎(chǔ)的網(wǎng)絡(luò)中,工業(yè)防火墻的防護(hù)能力也有所不同。
對OPC進(jìn)行簡單解析的工業(yè)防火墻可以跟蹤OPC連接建立的動態(tài)端口,最小化的開放工業(yè)控制網(wǎng)絡(luò)的端口。如下圖:
端口防護(hù)級工業(yè)防火墻部署示意圖
端口防護(hù)級工業(yè)防火墻同樣部署在企業(yè)生產(chǎn)網(wǎng)和生產(chǎn)控制網(wǎng)的邊界,此時(shí)配置策略只需要配置開放OPC服務(wù)器的135端口,當(dāng)OPC客戶端與服務(wù)器建立連接時(shí),端口防護(hù)級防火墻跟蹤并解析OPC服務(wù)器與OPC客戶端協(xié)商出來的動態(tài)端口,然后自動將動態(tài)端口加入到防火墻的開放端口中,從而最小化開放生產(chǎn)控制網(wǎng)的端口,與傳統(tǒng)防火墻相比,防護(hù)能力有了進(jìn)一步提升。
3. 指令防護(hù)工業(yè)防火墻
端口防護(hù)工業(yè)防火墻相比傳統(tǒng)防火墻雖然提升了防護(hù)能力,但攻擊者仍然可以通過建立的數(shù)據(jù)通道發(fā)送惡意的OPC操作指令,所以僅僅做到動態(tài)端口跟蹤還無法保證基于OPC協(xié)議的工業(yè)控制系統(tǒng)的安全。所以對OPC協(xié)議的進(jìn)一步解析,催生了指令級防護(hù)工業(yè)防火墻,這也是目前市面上主流的工業(yè)防火墻。OPC協(xié)議的深度解析要求也加入到了工業(yè)防火墻國家標(biāo)準(zhǔn)的草稿中(此標(biāo)準(zhǔn)尚未正式發(fā)布)。下圖是指令級防護(hù)工業(yè)防火墻的典型部署:
指令級防護(hù)工業(yè)防火墻部署圖
部署在企業(yè)管理網(wǎng)和生產(chǎn)控制網(wǎng)邊界處的指令級工業(yè)防火墻,深度解析OPC協(xié)議到指令級別,不僅可以跟蹤OPC服務(wù)器和OPC客戶端之間協(xié)商的動態(tài)端口,最小化開放生產(chǎn)控制網(wǎng)的端口,還對OPC客戶端與OPC服務(wù)器之間傳輸?shù)闹噶钫埱筮M(jìn)行實(shí)時(shí)檢測,對于不符合安全要求的操作指令進(jìn)行攔截和報(bào)警,極大提升了基于OPC協(xié)議的工業(yè)控制系統(tǒng)的網(wǎng)絡(luò)安全。
除了做到指令防護(hù)外,還有更人性化一點(diǎn)的工業(yè)防火墻內(nèi)置只讀模板,滿足使用OPC協(xié)議的大部分業(yè)務(wù)場景,因?yàn)槭褂肙PC協(xié)議的工業(yè)控制現(xiàn)場一般只是用來采集數(shù)據(jù),使用只讀模板來防護(hù)完全滿足現(xiàn)場安全要求。工業(yè)防火墻內(nèi)置的只讀模板一鍵部署,安全、方便,降低管理員維護(hù)成本,有效保障工業(yè)控制系統(tǒng)數(shù)據(jù)不被惡意篡改。
4. 優(yōu)缺點(diǎn)比較
五、結(jié)論
隨著國家網(wǎng)絡(luò)安全法的頒布和國家“中國制造2025”戰(zhàn)略的要求,逐漸打破物理隔離的工業(yè)生產(chǎn)網(wǎng)絡(luò)對安全的需求越來越迫切。對于生產(chǎn)現(xiàn)場有OPC協(xié)議的企業(yè)來講,綜合自身實(shí)力選擇適合自己的安全防護(hù)產(chǎn)品顯得越來越重要。而對OPC協(xié)議的解析到指令級還不夠,后續(xù)還需要深度解析到OPC協(xié)議操作指令所操作的對象是否在安全范圍內(nèi),對操作對象的值進(jìn)行安全檢測,確保OPC協(xié)議發(fā)送的每一個(gè)字節(jié)都是可識別、可控制、安全無害的。