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