一種用于Modbus網絡的安全防護系統(tǒng)以及方法
【專利摘要】本申請?zhí)峁┮环N用于Modbus網絡的安全防護方法,包括S1.接收外部請求端口傳輸的基于Modbus協(xié)議的字節(jié)流,按Modbus協(xié)議類型的幀結構對所述字節(jié)流進行組包以形成相應的完整的Modbus幀結構,根據組包結果進行相應處理。另外,本申請還提供了一種用于Modbus網絡的安全防護系統(tǒng)。本申請?zhí)峁┑挠糜贛odbus網絡的安全防護方法和系統(tǒng)通過組包引入Modbus幀的完整性檢驗,可以有效地抵御針對采用Modbus協(xié)議的工控設備或系統(tǒng)的攻擊,確保采用Modbus協(xié)議的工控設備和系統(tǒng)的保密性、完整性和可用性。
【專利說明】
-種用于Mo化US網絡的安全防護系統(tǒng)從及方法
技術領域
[0001] 本發(fā)明設及網絡安全防護領域,尤其設及用于Mcxlbus網絡的安全防護系統(tǒng)W及方 法。
【背景技術】
[0002] Mo化US協(xié)議是應用于電子控制器上的一種通用語言。通過此協(xié)議,控制器相互之 間、控制器經由網絡(例如W太網)和其它設備之間可W通信,不同廠商生產的控制設備可 W連成工業(yè)網絡,進行集中監(jiān)控。
[0003] Mo化US協(xié)議具有標準性、開放性、帖格式簡單、緊湊等優(yōu)點,因此在工業(yè)控制系統(tǒng)、 遠程監(jiān)控系統(tǒng)(SCADA系統(tǒng))W及離散控制系統(tǒng)化CS系統(tǒng))中廣泛使用,不但用于本地智能設 備與控制器(PLC)間的通訊、智能設備與人機界面化MI)的通訊,而且在某些場景還應用于 工業(yè)設備遠程集中監(jiān)控系統(tǒng)的遠程通訊中。
[0004] 但是,由于Mo化US帖結構缺乏基本的加密手段,因此存在明顯的安全漏桐,主要體 現(xiàn)在:
[0005] 1.數據保密性差。由于沒有機制區(qū)分不同主機(客戶端)訪問的數據范圍,因此網 絡中的主機(客戶端)可W訪問從機(服務端)提供的任何數據。
[0006] 2.數據完整性容易破壞。由于沒有機制限制主機(客戶端)可執(zhí)行的命令及其參數 的范圍,網絡中的任意主機(客戶端)可W通過發(fā)送從機(服務端)支持的功能碼,修改從機 (服務端)的數據。
[0007] 3.可用性很難保證。除了面臨常規(guī)的TCP/IP層網絡攻擊之外,在Modbus應用層,攻 擊者很容易通過發(fā)送不完整的Mcxlbus帖,使從機(服務器)進行大量的無效處理,導致其性 能下降。此外,還有很多智能設備其配置協(xié)議與數據通訊協(xié)議均采用Mcxlbus協(xié)議,但缺乏保 護配置數據的機制,很容易被攻擊者利用,修改智能設備配置參數,甚至刪除智能設備的關 鍵內容,例如固件程序,從而導致嚴重的后果。
【發(fā)明內容】
[000引鑒于現(xiàn)有技術中存在的問題,1、一種用于Mcxlbus網絡的安全防護方法,包括:S1. 接收外部請求端口傳輸的基于Mo化US協(xié)議的字節(jié)流,按Mo化US協(xié)議類型的帖結構對所述字 節(jié)流進行組包W形成相應的完整的Mo化US帖結構,根據組包結果進行相應處理。
[0009] 在本發(fā)明的一些實施方式中,所述步驟Sl包括:對于接收到的Mo化US ASCII協(xié)議 類型字節(jié)流,根據所述包是否具有起始符和結束符W及是否能夠通過CRC校驗,來判定所述 包是否具有完整的Mcxlbus帖結構;或對于接收到的Mcxlbus RTU協(xié)議類型的字節(jié)流:a.對預 定長度的字節(jié)流進行CRC校驗,和b.判斷通過CRC校驗的所述字節(jié)流中的功能碼是否為 Modbus RTU帖結構所允許的功能碼,如不是允許的功能碼,則改變所述字節(jié)流長度后返回 步驟a進行CRC校驗。
[0010] 在本發(fā)明的一些實施方式中,所述步驟a進一步包括:對于Mo化US RTU協(xié)議類型的 字節(jié)流,從字節(jié)流最小長度開始進行所述CRC校驗,如校驗不通過,則將所述字節(jié)流長度增 加預定字節(jié)后再進行CRC校驗,如果直到當前字節(jié)流長度達到最大長度仍未通過CRC校驗, 則移除所述字節(jié)流。
[0011] 在本發(fā)明的一些實施方式中,所述步驟Sl還包括:C .按照所述功能碼對應的數據 結構,檢驗所述當前字節(jié)流中的數據結構是否與所述功能碼匹配;若不匹配,則將所述字節(jié) 流長度增加預定字節(jié),返回步驟a。
[0012] 在本發(fā)明的一些實施方式中,所述步驟Sl還可包括:當所述Mo化US帖結構的首、尾 部分包含有除完整的Mcxlbus帖結構之外的非法字節(jié)流,則去除所述非法字節(jié)流,保留完整 的Modbus帖結構。
[0013] 在本發(fā)明的一些實施方式中,所述的用于Mo化US網絡的安全防護方法,還可包括: 52. 檢驗所述完整的Mo化US帖中包含從機地址是否為允許訪問的從機地址,檢驗所述完整 的Mo化US帖中包含功能碼是否在預設的功能碼白名單內。
[0014] 本發(fā)明的一種實施方式中,其通過設置能夠訪問的從機地址范圍W及判斷完整的 Mo化US帖結構中的功能碼是否為有效的功能碼,對經過組包的完整的Mo化US帖進行進一步 過濾,即若Mo化US帖包含不在允許訪問范圍內的從機地址和不屬于Mo化US協(xié)議的非法功能 碼,則將其丟棄。運種方式可W有效的避免針對設備或系統(tǒng)的攻擊,同時減少設備或系統(tǒng)的 工作量,提高運行效率。
[0015] 在本發(fā)明的一些實施方式中,所述的用于Mo化US網絡的安全防護方法還可包括: 53. 對于讀取數據功能碼,檢驗所述完整的Mcxlbus帖中包含的寄存器范圍是否在允許范圍 內;S4.對于寫數據功能碼,檢驗所述完整的Mcxlbus帖中包含的寄存器范圍是否在允許范圍 內,提取所述完整的Mcxlbus帖中包含的工藝參數,根據所述工藝參數和所述寄存器范圍內 的寄存器的對應關系W及編碼類型,生成相應的控制值,并且判斷所述控制值是否為允許 值。
[0016] 由于功能碼的類型不同,其生成的操作指令也不同,因此本發(fā)明的實施方式中,通 過判斷功能碼的類型,將完整的Mo化US帖分為寫命令和讀命令。針對讀命令而言,可W限制 從機能夠訪問的寄存器范圍,進而控制其能夠由寄存器中讀取到的數據,可W有效的保護 存儲于寄存器中的工藝參數,避免工藝參數和工藝流程被非法獲取。針對寫命令而言,通過 寄存器與工藝參數相關聯(lián),采用組態(tài)(用戶自定義)的方法,建立了寄存器與工藝參數的映 射關系,可W有效地保證工藝過程的正確性。另外,對工藝參數生成的控制值進行過濾,可 W有效地防止工控裝置或系統(tǒng)被寫命令非法更改裝置的地址、非法上傳配置文件等。
[0017] 在本發(fā)明的一些實施方式中,所述步驟S4可包括:提取所述完整Mo化US帖中包含 的多個工藝參數,根據所述多個工藝參數和所述寄存器范圍內的每一個寄存器或者每一個 寄存器的Bit位的對應關系W及編碼類型,生成相應的控制值,并且判斷每個所述控制值是 否為允許值。
[001引本發(fā)明還提供一種用于Mcxlbus網絡的安全防護系統(tǒng),包括:完整性檢驗模塊,接收 外部請求端口傳輸的基于Mo化US協(xié)議的字節(jié)流,按Mo化US協(xié)議類型的帖結構對所述字節(jié)流 進行組包W形成相應的完整的Mo化US帖結構,根據組包結果進行相應處理;
[0019]含讀/寫數據的功能碼的Mo化US帖檢驗模塊,對于讀數據的功能碼,檢驗所述完整 的Mo化US帖中包含的寄存器范圍是否在允許范圍內;對于寫數據的功能碼,檢驗所述完整 的Mcxlbus帖中包含的寄存器范圍是否在允許范圍內,提取所述完整的Mcxlbus帖中包含的工 藝參數,根據所述工藝參數和所述寄存器范圍內的寄存器的對應關系W及編碼類型,生成 相應的控制值,并且判斷所述控制值是否為允許值。
[0020] 在本發(fā)明的一些實施方式中,所述的用于Mo化US網絡的安全防護系統(tǒng)還可包括: 從機地址檢驗模塊,用于檢驗所述完整的Mo化US帖中包含從機地址是否為允許訪問的從機 地址;功能碼合法性檢驗模塊,用于檢驗所述完整的Mo化US帖中包含功能碼是否在預設的 功能碼白名單內
[0021] 本發(fā)明提供了用于Mo化US網絡的安全防護方法和系統(tǒng)通過組包方式進行Mo化US 帖的完整性檢驗,可W有效地避免采用非Mo化US協(xié)議持續(xù)向工控設備或系統(tǒng)裝置發(fā)起數據 請求(字節(jié)流)W導致工控設備和系統(tǒng)性能下降。
[0022] 根據上述用于Mo化US網絡的安全防護方法和系統(tǒng)可W有效地抵御針對采用 Mo化US協(xié)議的工控設備或系統(tǒng)的攻擊,確保采用Mo化US協(xié)議的工控設備和系統(tǒng)的保密性、 完整性和可用性。
【附圖說明】
[0023] 為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面簡要說明實施例 或現(xiàn)有技術描述中使用的附圖。
[0024] 圖Ia示意性地顯示了常規(guī)的Mo化US ASCII/RTU帖結構;
[00巧]圖化示意性地顯示了常規(guī)的Mcxlbus TCP帖結構;
[00%]圖2a為帶獨立數據塊的Mo化US數據模型;
[0027]圖化為僅一個數據塊的Mo化US數據模型;
[00巧]圖3a示意性地顯示了Mo化US RTU單播模式;
[00巧]圖3b示意性地顯示了Mo化US RTU多播模式;
[0030] 圖4示意性地顯示了Mo化US TCP的典型應用場景;
[0031] 圖5示意性地顯示了本發(fā)明一實施方式的安全防護方法;
[0032] 圖6a示意性地顯示了自定義模擬型工藝控制參數與Mcxlbus寄存器模型的映射關 系;
[0033] 圖6b示意性地顯示了自定義布爾型工藝控制參數與Mcxlbus寄存器模型的映射關 系;
[0034] 圖7示意性地顯示了本發(fā)明一實施方式的用于Mcxlbus網絡的安全防護系統(tǒng)。
【具體實施方式】
[0035] 為使本發(fā)明實施例的目的、技術方案和優(yōu)點更加清楚,下面將結合本發(fā)明實施例 中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述。在此說明,顯然,附圖所示 僅是本發(fā)明的一些實施例,目的是使本領域技術人員能夠理解本發(fā)明的實質特征。本領域 普通技術人員可W根據所公開的附圖及其說明,做出修改或其他等同的變型或替代方案。 因此,本發(fā)明的范圍并不受運些附圖和說明的限制。
[0036] 在對本發(fā)明的實施例做詳細說明之前,首先說明本發(fā)明中所設及的一些相關概 念。
[0037] Mo化US協(xié)議主要包含了兩種模式,分別適合于串行鏈路和TCP/IP鏈路。其中, Mo化US串行模式有兩種編碼格式,分別為ASCII(美國標準信息交換代碼)和RTU(遠程終端 設備),前一種在應用中簡稱Mo化US ASCII,后一種在應用中簡稱Mo化US RTU?;赥CP/IP 協(xié)議的Mo化US采用RTU的二進制編碼格式,在應用中簡稱Mo化US TCP。
[0038] Mo化US協(xié)議定義了一個與基礎通信層無關的簡單協(xié)議數據單元(PDU)。特定總線 或網絡上的Mcxlbus協(xié)議映射能夠在應用數據單元(ADU)上引入一些附加域。如圖1(a)所示 為Modbus ASCII/RTU的帖結構,圖1(b)所示為Modbus TCP的帖結構。
[0039] Mo化US協(xié)議采用四種類型的數據定義數據模型:
[0040]
[(
[0042] 圖2(a)和圖2(b)分別顯示了帶獨立數據塊的Mcxlbus數據模型和僅一個數據塊的 Mo化US數據模型。
[0043] Mo 化 US 網絡:
[0044] Mo化US RTU運行在串行鏈路上,支持一個主機(客戶端)多個從機(服務端)結構 (1-N結構),參見圖3(a)和圖3(b),其通訊模式支持單播和多播兩種模式。
[0045] 單播模式:主機(客戶端)W指定地址的方式發(fā)送請求,相應地址的從機(服務端) 根據請求向主機(客戶端)返回數據。在運種情況下,Modbus通訊事務只包含2個報文(客戶 端請求報文和服務端應答報文)。服務端在單播模式中的地址必須在網絡上是唯一的(1~ 247) O
[0046] 多播模式:主機(客戶端)對所有從機(服務端)發(fā)送請求,從機(服務端)沉默,僅僅 根據主機(客戶端)發(fā)送的請求完成相應的自身功能。在運種情況下,Mcxlbus通訊事務只包 含1個報文(客戶端請求報文)。從機(服務端)在多播模式下的地址可W不用考慮,但是其必 須能夠響應地址0的請求。0在協(xié)議中定義為多播地址。
[0047] Mo化US TCP運行在TCP/IP協(xié)議找上,采用多點對多點連接TCP通訊,支持多個主機 (客戶端)多個從機(服務端)結構(N-N結構),典型應用場景如圖4所示。在圖4中,存在一類 稱為Mo化US TCP/IP網關的設備,其負責將Mo化US RTU協(xié)議轉換為Mo化US TCP協(xié)議,對 Mo化US PDU解包和組包。因此,Mo化US雌?八?網關是協(xié)議轉換設備。
[004引參照圖5,本發(fā)明一實施方式提供了一種用于Mcxlbus網絡的安全防護方法,包括: [0049] Sl .Mo化US帖結構完整性檢驗步驟:
[00加]Mo化US協(xié)議類型包括Mo化US ASCII、Mo化US RTUW及Mo化US TCP。
[0化1] 其中,Mo化US ASCII和Mo化US RTU協(xié)議的帖結構如圖1(a)所示,由地址域、功能 碼、數據W及差錯校驗組成。在一個例子中,地址域的大小為8bits,功能碼的大小為8bits, 數據的大小為N X 8b i ts,CRC差錯校驗的大小為16b i ts。
[0052] Mcxlbus TCP協(xié)議的帖結構如圖1(b)所示,由MBAP報文頭、功能碼和數據組成。
[0053] 如表1所示為常見的功能碼、名稱及作用:
[0化4] 表1
[0化7]
[005引具體而言,Mo化US帖結構的完整性檢驗可包括如下步驟:
[0059] Sl 1.接收外部請求端口(串口或TCP端口或UDP端口)傳輸的字節(jié)流;
[0060] S12.嘗試按Mo化US協(xié)議類型(ASCII/RTU/TCP)的帖結構對上述字節(jié)流進行組包;
[0061 ] S13.判斷是否能夠組成與Mcxlbus協(xié)議類型相應的完整的Mcxlbus帖結構。
[0062] 如果不能組成完整的Mo化US帖結構,即組包失敗時,則表明該字節(jié)流為非法的 Mo化US請求帖,產生日志記錄及告警輸出,丟棄該包。
[0063] W下為導致組包失敗的幾種情形:
[0064] (1)對于Mo化US ASCII協(xié)議的帖結構,找不到起始符和結束符,或者找到起始符和 結束符,但無法通過CRC校驗;
[0065] (2)對于Mo化US RTU協(xié)議的帖結構,按其最小帖長度進行CRC計算,到達最大帖長 度仍然不能通過CRC校驗,或者通過CRC校驗但不符合對應功能碼的帖結構。
[0066] 由于Mo化US RTU協(xié)議的帖結構沒有起始符和結束符,且帖長度可變,因此,對于 Mcxlbus RTU帖的完整性檢查,可W采用如下CRC校驗和帖結構檢查相結合的方法:
[0067] a.將接收的字節(jié)流保存到緩沖區(qū);
[006引b.針對緩沖區(qū)中的字節(jié)流,從最小Mo化US RTU帖長度(例如3字節(jié))開始進行CRC校 驗。如果CRC校驗不通過,則檢驗當前字節(jié)流長度,如果當前字節(jié)流長度未達到最大Mo化US RTU帖長度(如255字節(jié)),則將當前字節(jié)流長度加1字節(jié),繼續(xù)進行CRC校驗;如果當前字節(jié)流 長度達到最大Mo化US RTU帖長度,則從緩沖區(qū)中移除該段字節(jié)流;C.針對通過CRC校驗的字 節(jié)流,提取出該字節(jié)流中的功能碼字節(jié),判斷所述功能碼是否為Mcxlbus RTU帖結構所允許 的功能碼,如表1中所列的功能碼,如果不是所允許的功能碼,則將當前處理的字節(jié)流長度 加預定長度(例如1字節(jié)),返回步驟b;
[0069] d.針對通過功能碼校驗的字節(jié)流,按照該功能碼對應的數據結構,檢查當前字節(jié) 流中的數據結構是否與該功能碼匹配。如果通過檢查,則說明為當前處理的字節(jié)流具有合 法的帖結構;否則,將當前處理的字節(jié)流長度增加預定長度(例如1字節(jié)),返回步驟b。
[0070] (3)對于Mo化US TCP協(xié)議的帖結構,對每一個接收到的TCP應用帖,按Mo化US TCP 帖結構進行逐個組包,Mcxlbus TCP帖中的規(guī)約參數(功能碼)和數據長度相對應,因此含有 特定規(guī)約參數的帖應當具有一定的帖長度。當Modbus TCP帖中的規(guī)約參數與帖長度不匹 配,即不能通過校驗,則組包失敗。
[0071] S2.如果能夠組成完整的Mo化US帖結構,即組包成功,則進行從機地址檢驗W及功 能碼檢驗步驟,包括:
[0072] S21.提取Mo化US帖的從機地址W及Mo化US帖的功能碼。
[0073] S22.檢驗該從機地址是否為允許訪問的從機地址。如果是不允許訪問的從機地 址,則產生日志記錄及告警輸出,丟棄該包。
[0074] S23.如果是允許訪問的從機地址,則按照預設的功能碼白名單對提取出的功能碼 進行過濾,如果所提取的功能碼不在白名單中,則產生日志記錄及告警輸出,丟棄該包。
[0075] 當不想使得網絡中的任意主機(客戶端)通過發(fā)送從機(服務端)支持的功能碼,修 改從機(服務端)的數據,那么可W在白名單中排除一些具有"寫"功能的功能碼。例如,白名 單中不包括05、06、15、16。
[0076] 類似的,還可W通過設置白名單的方式控制用戶自定義的其他類型的功能碼,例 如可W使功能碼22~64包含在白名單之中,使功能碼65~72不包含在白名單之中。采用運 種設置方法,可W控制主機(客戶端)向從機(服務端)發(fā)送何種類型的功能碼。
[0077] 舉例說明,當提取的Mcxlbus帖的功能碼的為22時,則產生日志記錄及告警輸出,丟 棄該包。當提取的Mo化US帖的功能碼為65時,繼續(xù)執(zhí)行步驟S3。
[0078] S3. Mcxlbus帖類型檢驗步驟:
[0079] 檢驗Mcxlbus帖的功能碼類型,如果為讀取數據功能碼(即該命令為讀取命令),執(zhí) 行步驟S4;如果為寫數據功能碼(即該命令為寫命令),執(zhí)行步驟S5。
[0080] S4.當完整的Mo化US帖中包含的功能碼為讀取數據功能碼時,檢驗Mo化US帖中包 含的寄存器范圍是否在允許范圍內:
[0081 ] S41.提取Mo化US帖中包含的寄存器范圍;
[0082] S42.判斷所提取的寄存器范圍是否在允許讀取的寄存器范圍之內(寄存器范圍白 名單內)。
[0083] 按照預先定義的允許的寄存器范圍對Mo化U S帖進行過濾,如果該Mo化U S帖的寄存 器范圍不在允許讀取的寄存器范圍內,則產生日志記錄及告警輸出,丟棄該包;反之,將鏈 路層和傳輸層信息與Mo化US帖一起轉發(fā)到內部通訊端口(串口或TCP端口或UDP端口)。
[0084] S5.當完整的Mo化US帖中包含的功能碼為寫數據功能碼時,檢驗Mcxlbus帖中包含 的寄存器范圍是否在允許范圍內和并生成相應的工藝參數控制值:
[00化]S51.提取Mcxlbus帖中包含的寄存器范圍及工藝參數:
[0086] S52.判斷寄存器范圍是否在允許的寄存器范圍之內(寄存器范圍白名單內);
[0087] S53.按預先定義的工藝參數(如圖6a和6b中的標簽項)與寄存器范圍內的寄存器 的對應關系及編碼類型,生成與所述工藝參數匹配的控制值;
[0088] 工藝參數的編碼類型可W是布爾型、有符號整型、無符號整型、浮點型或BCD型。
[0089] 對于工藝參數和寄存器對應關系W及編碼類型作出如下示例說明:
[0090] 采用用戶自定義(組態(tài))的方法,在配置工具中自定義工藝參數與Mcxlbus寄存器模 型的映射關系:
[0091] 對于模擬型工藝控制參數(有符號整型、無符號整型、浮點型或BCD型等),映射關 系包括工藝控制參數對應的起始寄存器地址、在寄存器中的起始字節(jié)、數據的字節(jié)長度、編 碼類型。圖6(a)顯示了一個自定義的模擬型工藝控制參數與Mcxlbus寄存器的映射關系的示 例。
[0092] 對于布爾型工藝控制參數,映射關系包括工藝參數對應的寄存器地址、在寄存器 中的Bit位偏移量、Bit位數。圖6(b)顯示了一個自定義的布爾型工藝參數與Mcxlbus寄存器 模型的映射關系的示例。
[0093] 其中,工藝參數和寄存器的對應關系可W是一個工藝參數對應一個或者多個寄存 器,也可W是一個工藝參數對應一個寄存器的一個或者幾個Bit位,還可W是多個工藝參數 共享某個寄存器。
[0094] 工藝參數的長度可W是一個或多個字節(jié),對于有符號整型、無符號整型、浮點型或 BCD型,其工藝參數長度最多可達到8個字節(jié)。對于浮點型,其工藝參數長度可W是4個字節(jié) 或8個字節(jié)。工藝參數的原始值和工程值之間可W定義轉換關系,所述轉換關系可W是比例 關系,也可W是用于自定義的技術系數關系。
[00巧]S54.判斷工藝參數控制值是否為允許值:
[0096] 按照預先定義的允許的工藝參數控制值范圍(工藝參數控制值范圍白名單),對 Mo化US帖進行過濾,如果Mo化US帖包含的一個或者多個工藝參數控制值不在白名單內,貝U 產生日志記錄及告警輸出,丟棄該包;反之,將鏈路層和傳輸層信息與經過濾的Mcxlbus帖一 起轉發(fā)到內部通訊端口(串口或TCP端口或UDP端口)。
[0097] 在本發(fā)明的另一個實施例中,當執(zhí)行步驟S13后,如果接收的數據請求包成功地按 照相應的Mcxlbus協(xié)議類型的帖結構進行組包,但是該帖結構的首、尾還包含有非法的字節(jié) 流(完整的Mo化US帖結構之外的字節(jié)流),則去除非法字節(jié)流,保留合法的、完整的Mo化US 帖,并且執(zhí)行S2~S5步驟對其進行分析。
[0098] 根據本發(fā)明的另一方面,一種用于Mcxlbus網絡的安全防護系統(tǒng)1的實施例包括:
[0099] 完整性檢驗模塊11,接收外部請求端口傳輸的基于Mo化US協(xié)議的字節(jié)流,按 Mo化US協(xié)議類型的帖結構對所述字節(jié)流進行組包W形成相應的完整的Mo化US帖結構,根據 組包結果進行相應處理;
[0100] 含讀/寫數據的功能碼的Mo化US帖檢驗模塊12,對于含有讀取數據功能碼,檢驗所 述完整的Mcxlbus帖中包含的寄存器范圍是否在允許范圍內;對于寫數據功能碼,檢驗所述 完整的Mcxlbus帖中包含的寄存器范圍是否在允許范圍內,提取所述完整的Mcxlbus帖中包含 的工藝參數,根據所述工藝參數和所述寄存器范圍內的寄存器的對應關系W及編碼類型, 生成相應的控制值,并且判斷所述控制值是否為允許值。
[0101] 參照圖7,在另外一個實施例中,Mo化US網絡的安全防護系統(tǒng)1包括:
[0102] 完整性檢驗模塊11,接收外部請求端口傳輸的基于Mo化US協(xié)議的字節(jié)流,按 Mo化US協(xié)議類型的帖結構對所述字節(jié)流進行組包W形成相應的完整的Mo化US帖結構,根據 組包結果進行相應處理;
[0103] 從機地址檢驗模塊12,用于檢驗所述完整的Mo化US帖中包含從機地址是否為允許 訪問的從機地址;
[0104] 功能碼合法性檢驗模塊13,用于檢驗所述完整的Mcxlbus帖中包含功能碼是否在預 設的功能碼白名單內;
[0105] 含讀取數據功能碼的Mcxlbus帖檢驗模塊14,對于含有讀取數據功能碼,檢驗所述 完整的Mcxlbus帖中包含的寄存器范圍是否在允許范圍內;
[0106] 含寫數據功能碼的Mo化US帖檢驗模塊15,對于寫數據功能碼,檢驗所述完整的 Mcxlbus帖中包含的寄存器范圍是否在允許范圍內,提取所述完整的Mcxlbus帖中包含的工藝 參數,根據所述工藝參數和所述寄存器范圍內的寄存器的對應關系W及編碼類型,生成相 應的控制值,并且判斷所述控制值是否為允許值。
[0107] W上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可 W是或者也可W不是物理上分開的,作為單元顯示的部件可W是或者也可W不是物理單 元,即可W位于一個地方,或者也可W分布到多個網絡單元上??蒞根據實際的需要選擇其 中的部分或者全部模塊來實現(xiàn)本實施例方案的目的。本領域普通技術人員在不付出創(chuàng)造性 的勞動的情況下,即可W理解并實施。
[0108] 通過W上的實施方式的描述,本領域的技術人員可W清楚地了解到各實施方式可 借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當然也可W通過硬件?;谶\樣的理解,上 述技術方案本質上或者說對現(xiàn)有技術做出貢獻的部分可WW軟件產品的形式體現(xiàn)出來,該 計算機軟件產品可W存儲在計算機可讀存儲介質中,如R0M/RAM、磁碟、光盤等,包括若干指 令用W使得一臺計算機設備(可W是個人計算機,服務器,或者網絡設備等)執(zhí)行各個實施 例或者實施例的某些部分所述的方法。
[0109] 最后應說明的是:W上實施例僅用W說明本發(fā)明的技術方案,而非對其限制;盡管 參照前述實施例對本發(fā)明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可 W對前述各實施例所記載的技術方案進行修改,或者對其中部分技術特征進行等同替換; 而運些修改或者替換,并不使相應技術方案的本質脫離本發(fā)明各實施例技術方案的精神和 范圍。
【主權項】
1. 一種用于Modbus網絡的安全防護方法,包括:51. 接收外部請求端口傳輸的基于Modbus協(xié)議的字節(jié)流,按Modbus協(xié)議類型的幀結構 對所述字節(jié)流進行組包以形成相應的完整的Modbus幀結構,根據組包結果進行相應處理。2. 根據權利要求1所述的用于Modbus網絡的安全防護方法,其中,所述步驟S1包括: 對于接收到的Modbus ASCII協(xié)議類型字節(jié)流,根據所述包是否具有起始符和結束符以 及是否能夠通過CRC校驗,來判定所述包是否具有完整的Modbus幀結構;或 對于接收到的Modbus RTU協(xié)議類型的字節(jié)流: a. 對預定長度的字節(jié)流進行CRC校驗,和 b. 判斷通過CRC校驗的所述字節(jié)流中的功能碼是否為Modbus RTU幀結構所允許的功能 碼,如不是允許的功能碼,則改變所述字節(jié)流長度后返回步驟a進行CRC校驗。3. 根據權利要求1所述的用于Modbus網絡的安全防護方法,其中,所述步驟a進一步包 括:對于Modbus RTU協(xié)議類型的字節(jié)流,從字節(jié)流最小長度開始進行所述CRC校驗,如校驗 不通過,則將所述字節(jié)流長度增加預定字節(jié)后再進行CRC校驗,如果直到當前字節(jié)流長度達 到最大長度仍未通過CRC校驗,則移除所述字節(jié)流。4. 根據權利要求3所述的用于Modbus網絡的安全防護方法,其中,所述步驟S1還包括: c. 按照所述功能碼對應的數據結構,檢驗所述當前字節(jié)流中的數據結構是否與所述功 能碼匹配;若不匹配,則將所述字節(jié)流長度增加預定字節(jié),返回步驟a。5. 根據權利要求1-4任一項所述的用于Modbus網絡的安全防護方法,所述步驟S1還包 括: 當所述Modbus幀結構的首、尾部分包含有除完整的Modbus幀結構之外的非法字節(jié)流, 則去除所述非法字節(jié)流,保留完整的Modbus幀結構。6. 根據權利要求1-5任一項所述的用于Modbus網絡的安全防護方法,還包括:52. 檢驗所述完整的Modbus幀中包含從機地址是否為允許訪問的從機地址,檢驗所述 完整的Modbus幀中包含功能碼是否在預設的功能碼白名單內。7. 根據權利要求6所述的用于Modbus網絡的安全防護方法,還包括:53. 對于讀取數據功能碼,檢驗所述完整的Modbus幀中包含的寄存器范圍是否在允許 范圍內;54. 對于寫數據功能碼,檢驗所述完整的Modbus幀中包含的寄存器范圍是否在允許范 圍內,提取所述完整的Modbus幀中包含的工藝參數,根據所述工藝參數和所述寄存器范圍 內的寄存器的對應關系以及編碼類型,生成相應的控制值,并且判斷所述控制值是否為允 許值。8. 根據權利要求7所述的用于Modbus網絡的安全防護方法,其中,所述步驟S4還包括: 提取所述完整Modbus幀中包含的多個工藝參數,根據所述多個工藝參數和所述寄存器 范圍內的每一個寄存器或者每一個寄存器的Bit位的對應關系以及編碼類型,生成相應的 控制值,并且判斷每個所述控制值是否為允許值。9. 一種用于Modbus網絡的安全防護系統(tǒng),包括: 完整性檢驗模塊,接收外部請求端口傳輸的基于Modbus協(xié)議的字節(jié)流,按Modbus協(xié)議 類型的幀結構對所述字節(jié)流進行組包以形成相應的完整的Modbus幀結構,根據組包結果進 行相應處理; 含讀/寫數據的功能碼的Modbus幀檢驗模塊,對于讀數據的功能碼,檢驗所述完整的 Modbus幀中包含的寄存器范圍是否在允許范圍內;對于寫數據的功能碼,檢驗所述完整的 Modbus幀中包含的寄存器范圍是否在允許范圍內,提取所述完整的Modbus幀中包含的工藝 參數,根據所述工藝參數和所述寄存器范圍內的寄存器的對應關系以及編碼類型,生成相 應的控制值,并且判斷所述控制值是否為允許值。 1 〇.根據權利要求9所述的用于Modbus網絡的安全防護系統(tǒng),還包括: 從機地址檢驗模塊,用于檢驗所述完整的Modbus幀中包含從機地址是否為允許訪問的 從機地址; 功能碼合法性檢驗模塊,用于檢驗所述完整的Modbus幀中包含功能碼是否在預設的功 能碼白名單內。
【文檔編號】H04L1/00GK105847249SQ201610164736
【公開日】2016年8月10日
【申請日】2016年3月22日
【發(fā)明人】陳惠欣
【申請人】英賽克科技(北京)有限公司