Modbus/TCP協(xié)議安全性分析與防護技術探討
引 言
隨著工業(yè)互聯(lián)網的大力推進,工業(yè)控制系統(tǒng)的開放互聯(lián)成為新趨勢,加之傳統(tǒng)工業(yè)控制設備、系統(tǒng)在安全方面存在諸多問題,為當前的工業(yè)信息安全增加了更為嚴峻的風險和挑戰(zhàn)。Modbus/TCP 協(xié)議在石油、化工、能源、電力等工業(yè)控制系統(tǒng)中的廣泛應用,使其安全性也受到越來越多的關注。
1 Modbus/TCP協(xié)議介紹
Modbus/TCP 通過以太網通信,其實質是把 Modbus 通用幀封裝到 TCP 幀中。Modbus 通用幀由三部分組成,如圖 1 所示,分別是附加地址、協(xié)議數據單元(PDU)和差錯校驗, 其中附加地址用于表示從設備的地址,PDU 用來指定應用層的相關操作,由功能碼和數據共同組成。Modbus/TCP 幀結構如圖 2 所示,一方面去除了通用幀中的附加地址和校驗,另一方面增加了報文頭。主設備只在應用層將 Modbus 協(xié)議進行修改并封裝到TCP 協(xié)議中形成 Modbus/TCP 數據包,然后從設備收到該數據包,解封后獲得 Modbus 原始數據并解析,最后將需要回傳的 Modbus 數據重新封裝進 TCP 協(xié)議中并發(fā)送到主設備。
2 Modbus/TCP協(xié)議安全分析
2.1 身份認證安全分析
在傳統(tǒng)的信息系統(tǒng)中,身份認證技術得到了廣泛應用, 為用戶訪問系統(tǒng)資源提供了可靠的安全保障。但在工控系統(tǒng)中, 在 Modbus/TCP通信過程中,工程師站或者操作員站僅通過IP地址和 Modbus功能碼就能建立一個 Modbus會話,由于缺乏相應的身份認證機制,Modbus主設備對 Modbus從設備的惡意訪問成為安全隱患。
2.2 完整性安全分析
在對 Modbus/TCP協(xié)議進行測試的過程中, 如果向Modbus從設備發(fā)送一個超長的畸形報文會導致拒絕服務的狀況出現(xiàn)。這是 Modbus/TCP協(xié)議中比較典型的安全問題。因此, 當一個惡意者去破壞 Modbus從設備時,可采取上述格式的畸形數據報文進行攻擊,使得 Modbus從設備的緩存區(qū)溢出導致設備宕機,使工業(yè)控制系統(tǒng)無法正常運行。
2.3 功能碼使用安全分析
Modbus/TCP 協(xié)議缺乏對用戶功能權限的劃分, 這會導致功能碼濫用的情況出現(xiàn)。功能碼是 Modbus 主設備向Modbus 從設備發(fā)送控制指令的關鍵,一旦被惡意修改,主設備可以向從設備發(fā)送一些原先不被允許的、非法的功能和操作。例如,非法請求關于 Modbus 從設備配置或其他敏感信息,非法重啟設備,強制清除計數器,強制從設備處于監(jiān)聽狀態(tài)等。
3 Modbus/TCP協(xié)議安全防護
3.1 基于深度包檢測技術的防護模型
深度包檢測技術是一種基于應用層的流量檢測和控制技術,當IP 數據包、TCP 或UDP 數據流通過基于該技術的帶寬管理系統(tǒng)時,該系統(tǒng)會深入讀取 IP 包載荷的內容對 OSI 七層協(xié)議中的應用層信息進行重組,從而得到整個應用程序的內容,然后按照系統(tǒng)定義的管理策略對流量進行整形操作。
為了保障 Modbus/TCP 協(xié)議在工業(yè)控制網絡中數據傳輸的安全性,特建立基于深度包檢測技術的防護模型,如圖 3所示。本防護模型主要由身份合法性檢測、協(xié)議完整性檢測、功能碼使用安全性檢測組成。其中,身份合法性檢測通過對訪問地址的解析判斷訪問者身份的合法性 ;協(xié)議完整性檢測則通過對 Modbus/TCP協(xié)議特征的解析判斷數據包的規(guī)范性; 功能碼使用安全性檢測基于對 Modbus/TCP數據報文中功能碼和數據的解析,以及對應用戶授權的操作行為判斷操作的合法性。
圖 3 基于深度包檢測技術的防護模型
3.2 身份合法性檢測
身份合法性檢測主要包括數據鏈路層檢測和網絡層檢測。數據鏈路層檢測通過對數據包源 MAC 地址和目的 MAC 地址的解析和過濾可以阻斷不合法設備的訪問,網絡層檢測則通過解析數據包中的源 IP 和目的 IP 使得合法的IP 訪問順利進行。
3.3 協(xié)議完整性檢測
協(xié)議完整性檢測主要包括端口檢測、協(xié)議標識符檢測和超長數據報文檢測。端口檢測通過解析數據報文的源端口和目的端口是否為 502 識別 Modbus/TCP 報文,協(xié)議標識符檢測則通過解析協(xié)議標識符是否為 0X0000 判斷 Modbus/TCP 數據,同時對數據報文的長度進行檢測,若數據載荷過長則判斷報文為惡意構造的數據包。
3.4 功能碼使用安全性檢測
在功能碼的使用安全性檢測中,可以設置訪問控制規(guī)則, 允許符合規(guī)則的 Modbus/TCP數據報文通過,不符合的數據報文則丟棄。其內容應包括功能碼、地址范圍、閾值范圍,并且是基于白名單的工作機制,以限制主站對從站的訪問。例如: 白名單規(guī)則 :Pass[功能碼 :15][ 地址范圍 :5-9][ 閾值范圍: 50-100],默認規(guī)則 :全部禁止。
4 結 語
針對當前 Modbus/TCP 協(xié)議存在的比較突出的安全風險, 本文提出了基于深度包檢測技術的防護模型,并從身份合法性檢測、協(xié)議完整性檢測和功能碼使用安全性檢測三個方面給出了具體的防護思路,相信能夠對 Modbus/TCP 協(xié)議在工業(yè)控制網絡數據傳輸過程中的安全防護起到積極作用。