項(xiàng)目背景
XX油田作為國內(nèi)名列前茅的油田公司,其已探明的油氣儲量和每年的油氣產(chǎn)量在國內(nèi)具有舉足輕重的戰(zhàn)略地位,一直以來,該公司在工業(yè)控制系統(tǒng)的安全方面也高度重視。面對日趨嚴(yán)重的工控安全問題,公司管理層將工控系統(tǒng)安全防護(hù)提升到戰(zhàn)略層面,同時選擇北京威努特技術(shù)有限公司作為合作伙伴,力求打造油田行業(yè)的工控安全標(biāo)桿項(xiàng)目。項(xiàng)目背景
根據(jù)整個油田公司的工控系統(tǒng)現(xiàn)狀,威努特設(shè)計(jì)了涵蓋工控系統(tǒng)邊界防護(hù)、區(qū)域防護(hù)、
主機(jī)防護(hù)的縱深防御解決方案,部署了包括威努特工控可信網(wǎng)關(guān)(工業(yè)防火墻)、工控主機(jī)衛(wèi)士(主機(jī)安全加固)、統(tǒng)一安全管理平臺等在內(nèi)的一系列自主研發(fā)的安全防護(hù)產(chǎn)品。
項(xiàng)目自交付驗(yàn)收后,系統(tǒng)整體運(yùn)行穩(wěn)定,也成功解決了原系統(tǒng)中存在的一些網(wǎng)絡(luò)攻擊行為、網(wǎng)絡(luò)安全隱患問題,客戶整體評價很高。
問題就是命令,現(xiàn)場就是戰(zhàn)場
油田公司某分廠有一個控制器需要增加讀取點(diǎn)數(shù),信息中心的工程師進(jìn)行加點(diǎn)操作,此時更改控制邏輯可以正常進(jìn)行,但采集數(shù)據(jù)的動作沒有成功,通過工程師站查看數(shù)據(jù)存在壞點(diǎn)。工程師又通過ping控制器的方式發(fā)現(xiàn)控制器沒有響應(yīng),對應(yīng)的通道也壞死,無論如何操作都無法恢復(fù),只能冷重啟控制器。
面對該問題,信息中心的工程師試圖通過模擬環(huán)境來尋找問題根源,但多次嘗試最終還是無功而返。因?yàn)樾虏渴鹆斯I(yè)防火墻,也想可能是防火墻策略配置錯誤導(dǎo)致了該問題出現(xiàn),因此隨后就將求助電話打到了威努特。問題就是命令,對于威努特而言,客戶現(xiàn)場的問題從來都是最高優(yōu)先級處理,當(dāng)接到客戶電話的第一時間,研發(fā)部就組織了精干力量進(jìn)行了討論分析。為確保問題分析的準(zhǔn)確性,也與客戶現(xiàn)場的工程師召開了電話會議并詳細(xì)溝通了問題產(chǎn)生的過程、現(xiàn)象等,在重新審核了現(xiàn)場的防火墻配置策略后,也基本上排除了是防火墻自身的原因?qū)е隆?/p>
兵貴神速,為了徹底幫用戶解決該問題,在電話會議結(jié)束后,公司立即安排相關(guān)研發(fā)人員到現(xiàn)場協(xié)助客戶進(jìn)行問題定位。
嚴(yán)謹(jǐn)探求真相,專業(yè)贏得信任
復(fù)現(xiàn)問題
使用測試現(xiàn)場的控制器原有程序:開始使用模擬環(huán)境測試過程中,使用的是測試控制器原有的控制程序,將對應(yīng)采集數(shù)據(jù)的范圍未加入白名單規(guī)則中進(jìn)行測試時,一直無法復(fù)現(xiàn)當(dāng)時的現(xiàn)象。
將現(xiàn)場程序下發(fā)給測試控制器:使用測試控制器原有的程序無法復(fù)現(xiàn)控制器無響應(yīng)的問題,于是將出現(xiàn)問題的現(xiàn)場控制器程序下發(fā)給測試控制器,嘗試復(fù)現(xiàn)問題。
剛開始下發(fā)給測試控制器時并沒有增加采數(shù)點(diǎn),而是跟原來采集數(shù)據(jù)的范圍一樣,這種情況下可信網(wǎng)關(guān)一直工作在防護(hù)模式,白名單一直有告警,但持續(xù)幾個小時問題并未復(fù)現(xiàn)。
于是更改思路,擴(kuò)大控制器采集數(shù)據(jù)的范圍,提高數(shù)據(jù)刷新的頻率,并同時采集模擬量和數(shù)字量的數(shù)據(jù),在這種情況下問題很快復(fù)現(xiàn),出現(xiàn)了類似現(xiàn)場控制器當(dāng)時出現(xiàn)的現(xiàn)象。
原因分析
初步分析:問題復(fù)現(xiàn)后針對現(xiàn)象和可信網(wǎng)關(guān)抓取的原始報文進(jìn)行初步分析判斷,控制器出現(xiàn)無響應(yīng)的原因可能有:
1. 接收緩存區(qū)太小造成堆積被占滿。當(dāng)有部分Modbus報文過去后,后續(xù)的報文被白名單攔截,導(dǎo)致控制器不斷的接收部分報文而一直等待后續(xù)報文到來后釋放緩沖區(qū)內(nèi)存,這樣緩存區(qū)一直堆積,最終導(dǎo)致緩存區(qū)滿,無法再接收報文,這樣ping包也無法響應(yīng)。
2. 控制器并發(fā)連接數(shù)有限。服務(wù)器采集控制器的數(shù)據(jù)時,完整的請求動作因?yàn)檫`反可信網(wǎng)關(guān)的白名單規(guī)則而被攔截,這樣服務(wù)器就會不斷的重新建立會話來采集控制器的數(shù)據(jù),而控制器的并發(fā)連接數(shù)有限,當(dāng)服務(wù)器與控制器建立過多的連接時,導(dǎo)致控制器拒絕服務(wù),從而出來無法ping通的現(xiàn)象。
實(shí)驗(yàn)驗(yàn)證
為了驗(yàn)證上述分析具體哪種是真正的原因,分別設(shè)計(jì)了下面幾組實(shí)驗(yàn):
1. 僅連接數(shù)控制測試
實(shí)驗(yàn)?zāi)康?/span> | 驗(yàn)證在一定的連接速率、連接數(shù)大于某個數(shù)值的情況下,控制器是否開始拒絕服務(wù),無法再ping通。 |
實(shí)驗(yàn)過程 | 通過使用不同的連接速率,如1個每秒、2個每秒、10個每秒,都不能使控制器拒絕服務(wù)。 |
通過增加連接數(shù),如增加到1000個、2000個、2500個、3000個,無論連接速率怎樣,當(dāng)連接數(shù)增加到大約2500個以上時,控制器就出現(xiàn)拒絕服務(wù)現(xiàn)象。 | |
實(shí)驗(yàn)結(jié)論 | 此實(shí)驗(yàn)共進(jìn)行過3次,其中一次確定是在拒絕服務(wù)并停止增加連接的情況下約20-30分鐘,控制器自動重新啟動。其它兩次也可以恢復(fù),但不確定是否控制器進(jìn)行了重新啟動。 |
2. 僅防護(hù)模式白名單控制測試
實(shí)驗(yàn)?zāi)康?/span> | 1、觀察白名單阻斷非法的采集請求后多長時間內(nèi)控制器拒絕服務(wù); 2、驗(yàn)證此種情況下控制器出現(xiàn)拒絕服務(wù)后,進(jìn)行白名單規(guī)則調(diào)整或者可信網(wǎng)關(guān)工作模式調(diào)整,不再阻斷采集請求,控制器是否可以自行恢復(fù)正常工作,需要多長時間恢復(fù)。 |
實(shí)驗(yàn)過程 | 觀察白名單阻斷非法的采集請求; |
控制器開始拒絕服務(wù)后,放開白名單控制,觀察控制器恢復(fù)。 | |
實(shí)驗(yàn)結(jié)論 | 實(shí)際結(jié)果純白名單控制會導(dǎo)致控制器無響應(yīng),導(dǎo)致控制器開始拒絕服務(wù)的時間取決于控制器工作時間的長短,并且時斷時好,一旦放開白名單控制,控制器就會恢復(fù)(恢復(fù)時間長短跟無響應(yīng)時間的長短有關(guān),但無需冷啟動即可自行恢復(fù))。 |
3. 白名單和并發(fā)連接數(shù)同時控制測試
實(shí)驗(yàn)?zāi)康?/span> | 此實(shí)驗(yàn)結(jié)合前兩種,將連接數(shù)和白名單同時進(jìn)行控制,觀察當(dāng)白名單阻斷采集請求后,服務(wù)器與控制器的連接數(shù)也進(jìn)行相應(yīng)的控制,防止控制器的連接數(shù)過多導(dǎo)致其拒絕服務(wù)。 |
實(shí)驗(yàn)結(jié)論 | 實(shí)驗(yàn)結(jié)果表明,控制器釋放連接的時間過長,雖然控制器開始拒絕服務(wù)的時間被延后了不少,但隨著時間的推移,控制器還是出現(xiàn)了拒絕服務(wù),不過一旦出現(xiàn)拒絕服務(wù),連接數(shù)控制就會攔截服務(wù)器到控制器的連接,可以使控制器迅速恢復(fù)服務(wù),但一旦服務(wù)器有機(jī)會與控制器建立連接并發(fā)送白名單請求,控制器就會拒絕服務(wù),此種情況也不理想。 |
4. 白名單部分Modbus報文阻斷
實(shí)驗(yàn)?zāi)康?/span> | 當(dāng)控制器出現(xiàn)拒絕服務(wù)后,使用串口連接上控制器觀察控制器的狀態(tài)發(fā)現(xiàn)一直有Bad Protocol的報文在累積,于是通過本組和下面一組共兩組實(shí)驗(yàn)進(jìn)行比對來確認(rèn)控制器出現(xiàn)無法ping通是否跟控制器的接收緩沖區(qū)有關(guān)。 |
實(shí)驗(yàn)結(jié)論 | 本組實(shí)驗(yàn)將部分放過非法的白名單請求報文,將部分請求報文設(shè)置在白名單中。這樣按原理控制器將收到一部分Modbus報文,但無法收取到后續(xù)的完整請求,會導(dǎo)致接收緩沖區(qū)的堆積,最終導(dǎo)致拒絕服務(wù)。 實(shí)驗(yàn)結(jié)果發(fā)現(xiàn)控制器會出現(xiàn)無法ping通的現(xiàn)象,即控制器會拒絕服務(wù)。與預(yù)期結(jié)果一致。 |
5. 白名單全部Modbus報文阻斷
實(shí)驗(yàn)?zāi)康?/span> | 本組實(shí)驗(yàn)將不會放過任何非法的白名單請求報文,并且將全部的白名單請求報文都設(shè)置為非法。這樣按原理控制器將無法收到任何Modbus報文,只能收到建立會話的連接報文。 |
實(shí)驗(yàn)結(jié)論 | 實(shí)驗(yàn)結(jié)果發(fā)現(xiàn)控制器仍然會出現(xiàn)無法ping通的現(xiàn)象,即控制器仍然會拒絕服務(wù)。 |
6. 白名單控制中增加發(fā)送reset
實(shí)驗(yàn)?zāi)康?/span> | 本組實(shí)驗(yàn)的主要目的在于,當(dāng)服務(wù)器的采集請求被白名單阻斷時,可信網(wǎng)關(guān)會給原通信雙方發(fā)送一個重新連接的報文,釋放掉原來的連接和對應(yīng)的資源,這樣控制器的連接數(shù)就會一直保持在一個較低水平,既不會出現(xiàn)連接數(shù)不斷增加的情形,也不會導(dǎo)致接收緩沖區(qū)資源不釋放。 |
實(shí)驗(yàn)結(jié)論 | 本組實(shí)驗(yàn)結(jié)果表明,通過發(fā)送reset報文,無論可信網(wǎng)關(guān)如何攔截非法的采集請求,都不會導(dǎo)致控制器拒絕服務(wù),控制器一直處于正常工作狀態(tài)。 |
現(xiàn)狀不容樂觀,責(zé)任重于泰山
實(shí)驗(yàn)的過程嚴(yán)謹(jǐn)而細(xì)致,得到的結(jié)論詳實(shí)而準(zhǔn)確。從各種實(shí)驗(yàn)和結(jié)果分析來看,XX油田所使用的控制器(國外品牌)安全系數(shù)較低,正常建立連接速率的情況下,在連接數(shù)增加到2500左右時,必然導(dǎo)致控制器拒絕服務(wù),最后只能通過冷重啟來釋放連接。威努特可信網(wǎng)關(guān)可以通過增加并發(fā)連接數(shù)控制的方式來增加控制器這方面的安全系數(shù),并且可信網(wǎng)關(guān)可以配置會話老化時間,在白名單防護(hù)的同時,給原通信雙方發(fā)送reset報文,在合理阻斷非法的采集請求的同時,保證控制器的正常服務(wù)能力。
該問題得到解決,但是問題的根源還是值得我們思考。細(xì)想之下,工業(yè)控制設(shè)備是工業(yè)自動化的關(guān)鍵所在,但種種原因?qū)е缕溥h(yuǎn)沒有達(dá)到讓人放心的地步。“兩化融合”的大背景下,工控系統(tǒng)將會越來越多的從“待字深閨無人識”轉(zhuǎn)變成“一朝成名天下知”,互聯(lián)互通意味著機(jī)遇和風(fēng)險并存,那么工控安全將會在這一偉大進(jìn)程中承擔(dān)越來越重要的責(zé)任。