歡迎(yíng)您訪問河(hé)南(nán)省日本熟WWW自動化係統有限公司官(guān)方網站! 控製(zhì)工程、物聯(lián)網(wǎng)、機器人、智能製造
谘詢熱線:0371-60298207 13383812899

Modbus 的RTU、ASCII、TCP傻(shǎ)傻搞不清楚?一文全解讀

發(fā)布日期:2022-08-12 15:31:59   來源:行業動態   瀏(liú)覽(lǎn)量:

今天來聊一聊Modbus,先看看(kàn)今天的主要內容: 

01 術語解讀 

02 背景 

03 協議原理 

04 傳輸方式 

05 Modbus RTU與Modbus ASCII有什麽區別 

06 Modbus TCP及其注意點 

07 功能碼作用 

08 Modbus協議安全分析

 
 

01 術語解讀

 

校驗碼:校驗碼通常是一組數字的最後一位,由前麵(miàn)的數(shù)字通過某種運算得出,用以檢驗(yàn)該組數據的正(zhèng)確性。代碼作為數據在向計算機或(huò)其它設(shè)備進行輸入時(shí),容易產生(shēng)輸入錯誤,為了減少這種輸入錯誤,編碼專家發明了各種校驗檢錯方法,並依據這些方法設置了校驗碼。常用的校驗有:累加和校驗SUM、字節異或(huò)校驗XOR、縱(zòng)向冗餘校驗(yàn)LRC、循環冗餘(yú)校驗CRC……

 

離散量輸入:主要用來讀(dú)取單個位(wèi)的數據,如IO的狀態;

 

線圈:開關輸出(chū)信號,主要用來(lái)寫入單個位(wèi)的數據,與離散量構成組成對位的操作;

 

輸入寄(jì)存器:主要用來讀取16位,也(yě)就是兩(liǎng)個字節的(de)數據;

 

保持寄(jì)存器:主要用來寫入16位的數據;

 

PLC:可(kě)編程邏輯控製器,是一種采用一類可編程的存儲器,用於其內(nèi)部(bù)存(cún)儲程序和執行邏輯運算、順序(xù)控製、定時、計數與算術操作等麵向用戶的指令,並通(tōng)過數字或模擬式輸入/輸出控製各種類型的機械或生產過程。

 

串口通信:隨著計算機係統的應用和微機網絡的發(fā)展,通信功能越(yuè)來越顯得重要。這裏所說的通(tōng)信是指計算機與外界的信息(xī)交(jiāo)換。因此,通信(xìn)既包括(kuò)計算機與外部設備之間(jiān),也包括計算機和計(jì)算機之間的信(xìn)息交換。由於串行(háng)通信是在一根傳輸線上一位一位的(de)傳送信息,所用的傳輸線少,並且可以借助現(xiàn)成的電話網進行信息傳送,因此特別適(shì)合於遠距離傳輸。對於那些與(yǔ)計算機相距不遠的(de)人-機交換設備和串行存儲的外部設備如終端、打印機、邏輯分(fèn)析儀、磁(cí)盤等,采用串(chuàn)行方式交換數據也很普(pǔ)遍。在實時控製和管理方麵,采用多台微機處理機組成分級分布控製係統中,各 CPU 之間的通信(xìn)一般都是串行方式。所以串行接口是微機應用係統常用的接口(kǒu)。許多外設和計算機按串(chuàn)行方式進行通信,這裏所說的串行方式,是指外(wài)設與接口電路之間的(de)信息傳送方式,實際上CPU 與接口之間仍按並行方式工作。

 

串口:串口是計算機上一種非常通用設備通信的(de)協議,不要與通用串行總線Universal Serial Bus(USB)混淆。大多數計算機包(bāo)含兩個基於RS232的(de)串口。串口同時也是儀器儀表(biǎo)設備通用的通(tōng)信協議;很多GPIB兼容的(de)設備也(yě)帶有RS-232口。同(tóng)時,串口通信協議也可以用於獲取遠程采(cǎi)集設(shè)備的數據。

 

串口通信的概念非(fēi)常簡單,串口按位(bit)發送和接(jiē)收字節。盡管比按字節(byte)的並行通信要慢,但(dàn)是串口可以在使用一(yī)根線發送數據的同時用另一根線接收數據。它很簡單並且能夠實現遠距離通信。比如IEEE488定義並(bìng)行通行狀態時(shí),規定設備線總常(cháng)不得超(chāo)過(guò)20米,並且任意兩個(gè)設備間的(de)長度不得超過2米;而對於串口而言,長度可達(dá)1200米。 

 

典型地,串口用於ASCII碼字符的(de)傳輸。通信使用3根線完成:地線、發送和接收。由於串口通信是異步的,端口能夠在一根線上發送數據同時在另一根線上接收數據。其他線用於握手,但是不是必須(xū)的。串口通信(xìn)最(zuì)重要的參數是波特率、數據(jù)位、停止位和奇偶(ǒu)校驗。對(duì)於兩個(gè)進行通行的端口,這些參數必須匹配:

 

a. 波特率(lǜ):這是一(yī)個衡量通信速度的參(cān)數。它表示每秒鍾傳送的(de)bit的個數。例如300波特表示每秒鍾發(fā)送300個bit。當我們提到時鍾(zhōng)周期時,我們就是指波特(tè)率。例如如(rú)果(guǒ)協議需要4800波特率,那麽時鍾是4800Hz。這意味著串口通信(xìn)在數據線上的采樣率為4800Hz。通常電話(huà)線的波特率為14400,28800和36600。波特率可以遠遠大於這些值(zhí),但是(shì)波特率和距離成反(fǎn)比。高波特率常常(cháng)用於放置(zhì)的很近的儀器間的通(tōng)信,典型的例子就是GPIB設備的通信。


b. 數據位:這是衡量通信中實際數據位的參數。當計算機發送一(yī)個信息包,實際(jì)的數據不會是8位的(de),標準的值是5、7和(hé)8位。如何設置取決於你想傳(chuán)送的信息(xī)。比(bǐ)如,標準的ASCII碼是0~127(7位)。擴展的(de)ASCII碼是0~255(8位)。如(rú)果數據使用簡單(dān)的文本(標準 ASCII碼),那麽每個數據包使用7位數據(jù)。每個包是指一個字節,包括開始/停止位,數據位和奇偶校驗位。由於實際數據位取決於通信協議的選取,術語“包”指任何(hé)通信的情況。


c. 停止位:用於表示(shì)單個包的最後(hòu)一位(wèi)。典型的(de)值為1,1.5和2位。由於數據是在傳輸線(xiàn)上定時的,並且每一個(gè)設備有其(qí)自(zì)己的時鍾,很(hěn)可能在通信中兩台設備間出現了(le)小小的(de)不同步。因此停(tíng)止(zhǐ)位不僅僅(jǐn)是表示傳輸的結(jié)束,並且提供計算機校正時鍾(zhōng)同步的機會。適用於(yú)停止位的位數越多(duō),不同時鍾同步的容忍程(chéng)度越(yuè)大,但是數據(jù)傳輸(shū)率同時也越慢。


d. 奇偶(ǒu)校驗位:在串口通信中一種(zhǒng)簡單的檢錯方(fāng)式。有四種檢錯方式:偶、奇、高和低。當然沒有校驗位也(yě)是可以的。對於偶和奇(qí)校驗的情況,串口會設置校驗位(數據位(wèi)後麵的一位),用一個值確保傳輸的數據有偶個或者奇個邏輯(jí)高位。例如,如果數據是011,那麽(me)對於偶校驗,校驗(yàn)位為0,保證邏(luó)輯高的(de)位數是偶數個。如果是奇校驗,校驗位1,這樣就(jiù)有3個(gè)邏輯高位。高位和低位不真(zhēn)正的(de)檢查數據,簡單置位邏輯高或者邏輯低校驗。這樣使得接收設備能(néng)夠知道(dào)一個位(wèi)的狀態,有(yǒu)機會判斷是否有噪聲幹擾了通信(xìn)或者(zhě)是否(fǒu)傳輸和接收數據是(shì)否不同步。

 

圖片

02 背(bèi)景

圖片

早在1971年,Modicon公司首次推出了Modbus協議,ModbusRTU和Modbus ASCII誕生於此(cǐ)。後來施耐德電氣(SchneiderElectric)收購了Modicon公司,並在1997年推出了ModbusTCP協議。2004年,中國國家標準委員會正式把Modbus作為了國家標準,開啟了Modbus為中(zhōng)國工業通信做貢獻的時(shí)代。

 

通過此協議,控製器相互之間、控製器經由網絡和其(qí)它設備(bèi)之(zhī)間可以通信。Modbus協議具有標準、開放,可(kě)以支持多種電氣(qì)接口,數據幀格式簡單緊湊,數據傳輸量大(dà)、實時性好等特點,在工業控製係統中得到了廣泛的應用,已經(jīng)成為通用工業(yè)標準。深入分析Modbus協議實現原理和其安全性對提(tí)高工控(kòng)係統安全性有著重要的現實意(yì)義。

 

ModbusRTU和ModbusASCII主要用於串行通信領域,而ModbusTCP則常用於以太網通信(xìn)。現在(zài),Modbus已經(jīng)成為工業(yè)領域通(tōng)信協議標準,並且現在是工業電子設備之間相當常用的連接方式。

圖片

03 協議原理

圖片

Modbus使用一種簡(jiǎn)單的MasterandSlave主從協議(客戶機/服務器協議)進(jìn)行通信。客戶機作為主站,向服(fú)務器發送請求;服務器(從站(zhàn))接到(dào)請求後,對請求進(jìn)行分析並作出應(yīng)答。其(qí)中使用的通信幀被稱為應用數據單元(Application Data Unit,ADU),它包括通信(xìn)地址段、功能代碼段、數(shù)據段和校驗段,如下圖:

 

一般使用上,監控係統(HMI)都為Master,PLC、電(diàn)表、儀表等都(dōu)為Slave,HMI係統一直PollingSlave的各種relayandregister最(zuì)新數值,然後做顯示及各種邏輯計算及控(kòng)製調整等處理。

 

其中,功能代碼段和數據段組合稱為協議數據(jù)單元(Protocol Data Unit or Protocol Description Unit),PDU)。功能代碼段占用一(yī)個(gè)字節,取值範圍為1~255,其中128~255為保(bǎo)留值,用(yòng)於異常消息應答報文。1~127為功能代碼編號,其中(zhōng)65~72和100~110為用戶自定(dìng)義編碼(mǎ)。

 

圖片

04 傳(chuán)輸方式

 

Modbus 協議是一種應用層報文傳輸協(xié)議(yì),包括ASCII、RTU、TCP三種報文類型,協議本身並沒有定義物理(lǐ)層,隻是定義了控製器能夠認識和使用(yòng)的消息結構,而不管它(tā)們是經過何種網(wǎng)絡進行通信的。

 

Modbus 協(xié)議使用串口傳輸(shū)時(shí)可(kě)以選擇(zé)RTU或ASCII模式,並規定(dìng)了消息(xī)、數據結構、命令和應答方式並需要對數(shù)據進(jìn)行校(xiào)驗。ASCII 模式采用LRC校驗,RTU模式采用16 位CRC校(xiào)驗。通過以太網傳輸時使用TCP,這種模式不使用校驗(yàn),因為TCP協議是一個麵向連接(jiē)的可靠協議。

 

05 Modbus RTU與Modbus ASCII有什麽區別圖片

 

Modbus是一種應用層協議,它定義了與基礎網(wǎng)絡無(wú)關(guān)的數據單(dān)元(ADU),可以在以太網(TCP/IP)或(huò)串行鏈路上(RS232、RS485等)進行通信(以太網ADU和串行ADU略有不同)。在串行鏈路上(shàng),Modbus協議有兩種傳輸模式——ASCII模式和RTU模式。其中,ASCII是英文“American Standard Code for Information Interchange”的縮寫,中(zhōng)文翻譯為(wéi)“美國國家信息交換標準編碼”;RTU是英文“ Remote Terminal Unit”的縮寫,中文翻譯為“遠(yuǎn)程終端設備”。

 

首先,讓我們(men)來看看Modbus的工作原理。

 

Modbus采用主從(Master-Salve)通信模式,僅有主設備(Master)能(néng)對傳輸(shū)進行初始化,從設備(Slave)根據主設備的請求進行應答。典型的主設(shè)備包括現場儀表和顯示麵板,典型的從設(shè)備為可編程邏輯控製器(PLC)。

 

在串行鏈路的主從通信中,Modbus主設備可以連接一個或N(最大為247)個從設備(bèi),主從設備之間的通信包括單(dān)播模式(shì)和廣播(bō)模(mó)式(shì)。

 

在廣播模式中,Modbus主設(shè)備(bèi)可(kě)同時向多(duō)個從設備發送請求(設備地址0用於廣播(bō)模式),從設備對廣播請求不(bú)進行響(xiǎng)應。

 

在單播模式中,主設備發送請求至某(mǒu)個特定的從(cóng)設備(每個Modbus從設備具有唯一地址),請求的消息幀中會包含功能代碼(mǎ)和數據,比如功能代碼“01”用來讀取離(lí)散量線圈的狀態。從設備接到請求後,進行應答並把消息反饋主(zhǔ)設備。

 

圖片

 

在主(zhǔ)從設備的通信中,可(kě)以使用ASCII模式或者RTU模(mó)式。在ASCII(AmericanStandard Code for Information Interchange)傳輸(shū)模式下,消息幀以英文(wén)冒號(“:”,ASCII3A Hex)開始,以回車和換號(CRLF,ASCII 0D and 0A Hex)符號結(jié)束,允許的傳輸的字符集為(wéi)十(shí)六進製的0~9和A~F;網絡中的從設備監視傳輸通路(lù)上是否有英文冒號(“:”),如果有的話,就對消(xiāo)息幀進行解碼,查看消息中的(de)地址是否與自己的地址相同,如果相同的話,就接收其中的數據;如果不同的話,則不予理會。

 

圖片

 

在ASCII模(mó)式下,每個8位的字節被拆分成兩(liǎng)個ASCII字符進行發送,比如十六進製數0xAF ,會被分解成ASCII字(zì)符“A”和(hé)“F”進行發送,發(fā)送的字符量比RTU增加一(yī)倍。ASCII模式的好處是允許兩(liǎng)個字符之間間隔的時間長達1s而不引發通信故障,該模式采(cǎi)用縱向冗餘校(xiào)驗(yàn)(Longitudinal Redundancy Check ,LRC)) 的方法(fǎ)來檢驗錯(cuò)誤,當控製器設為(wéi)在Modbus 網絡上(shàng)以RTU 模式通信,消息中的每(měi)個8Bit 字節(jiē)都(dōu)包含兩個4 Bit 的(de)十六進製字符,這(zhè)種模式沒有開始和結束標記。其優點是: 在同樣的波(bō)特(tè)率下,可傳送(sòng)更多的數據。

 

在RTU(RemoteTerminal Unit)模式下,每個字節可以傳輸兩個十六進製字符(fú),比如十六進製數0xAF,直接以十六進製0xAF(二進製(zhì):10101111)進行發送,因此它的發送密度比ASCII模式高一倍;RTU模式采用循環冗餘校驗(CRC),下麵是對RTU模(mó)式的總結:

 

具體格式如(rú)下圖所示:

 

圖片(piàn)

圖片

06 Modbus TCP及其注意點圖片(piàn)

 

6.1 主機(jī)和從機、服務端和客戶端

 

在modbus協議中:主機發送modbus請求,從機根據(jù)請求(qiú)內容向(xiàng)主機返回響應。在modbus協(xié)議中,主機總是主動方,從機總是被動方(fāng)。

 

在網絡應用中:在(zài)網絡應用中存在客戶端和服務器端,客戶端(例如瀏覽器)發送請求到服務器,服務器向客戶端返回內容(例(lì)如HTML文本)。

 

在modbus tcp中(zhōng):主機(jī)是客戶端,而從機是服務器端。千萬不要以為服務器端重要,主機也重要,所以主機就是服務(wù)器端。

 

6.2 是否可以多主機

 

通過前麵的分析,主機為客戶端那(nà)麽modbustcp支持(chí)多個(gè)主機,在一個   局域網中可存在多個主機和多個從機。從機的連接能力(連(lián)接主機的數   量)由uIP的最大TCP連接個數決定。

 

6.3 modbus TCP協議簡述

 

modbus TCP和modbus RTU基本相同,但是也存在一些(xiē)區別:

 

a.從機地址變得不再重要,多數情況下忽略(luè)。從某種(zhǒng)意義上說(shuō)從機地址被IP地址取代;

b.CRC校驗變得(dé)不再重要,甚至可以忽(hū)略。由於TCP數據包(bāo)中已經存在校驗,為了不重複造輪子,modbus TCP幹脆取消了CRC校驗。

 

TCP 模式是為了讓Modbus 數據順利在以太網上傳輸產生的,使用TCP502 端口。該協議物理層,數據鏈路層,網絡層,傳輸層都是基於TCP 協議,隻在應用層,將(jiāng)Modbus 協議(yì)修改後封(fēng)裝進去; 接收端將該TCP 數據包拆封後,重(chóng)新獲得原(yuán)始Modbus 幀,然後按照Modbus 協議規(guī)範進行(háng)解析,並將返回的數據包重新封裝進TCP 協議中,返回到發送(sòng)端。與串行鏈路傳輸的數據格式不同(tóng),TCP 模式去除(chú)了附加(jiā)地址和校驗,增加了報文頭,其具體格式如圖4所示。

 

圖片

 

在modbus TCP中包含一個MBAP頭,該頭包(bāo)含以下幾個(gè)部分:

 

區域 長度(dù) 描述 客戶端 服務器

傳(chuán)輸標誌

2字節

MODBUS 請求和響應傳輸過程中序列號

客戶端生成

應答時複製(zhì)該值(zhí)

協議(yì)標誌

2字節

Modbus協議默認(rèn)為(wéi)0

客戶(hù)端生成

應(yīng)答時複製該值

長度

2字節

剩餘部分的長(zhǎng)度

客戶端生成

應答(dá)時由服務(wù)器端生成

單元標誌

1字節

從機標誌(從機地(dì)址)

客戶端生(shēng)成

應答時複製該值

 

注意:

a.傳輸標誌可理解為序列號,防止 MODBUS TCP通信錯位,例(lì)如後發生的響應先到了主機,而(ér)早發生的響應後到(dào)主(zhǔ)機;

b.單元標誌(zhì)可理解為從機地址,此時已經不再重(chóng)要。

 

6.4 modbus tcp 和 TCP IP的關(guān)係

 

modbus TCP可以理解為發生在TCP上的應用層協議,既然是TCP協議那麽一(yī)個(gè)完整的MODBUSTCP報文必然包括TCP首部,IP首(shǒu)部和Ethernet首部。

 

圖片

07 功能碼作用

圖片

啟動Modbus事務處理(lǐ)的客戶機創建Modbus應用數據單元。功能碼(PDU中的)向服務器指示將執行哪(nǎ)種操作。

 

用(yòng)一個字節編碼Modbus數據單元的功能碼域。有效範圍是十製製1-255(128-255為異常響應保留)。當從客戶機向服務器發送報文時,功能碼域通過服務器執行哪種操作。

 

從客戶機向服務器發送的(de)報文數據域包括附加信息,服務器使用這個信息執行功能碼定義的操作。這個域(yù)還包括離散項目和寄存器地址(zhǐ)、處理項目的數量以(yǐ)及域(yù)中的實際(jì)數(shù)據(jù)字節(jiē)數。

 

在某種請求中,數據域可以是不存在的,在此(cǐ)情況下服務器不需要任何附加信息。功能碼僅說明操作(zuò)。

 

功能碼的類型:

 

功能(néng)碼主要分為有效功能碼、異常功能碼和錯誤功能碼。如果在一個正確接收(shōu)Modbus ADU中,不出現與(yǔ)請求(qiú)Modbus功能有關的差錯,那麽服務器至客戶機(jī)的響應數據會包(bāo)含請求中的正(zhèng)常功能碼。如果出現與請求Modbus功能有(yǒu)關的(de)差錯,那麽響(xiǎng)應數據會包含一個異(yì)常碼(mǎ)和錯誤碼。

 

例如,客戶機能夠讀一組(zǔ)離散量輸出或輸入的開/關狀態,或者用戶能夠讀/寫一組寄存器數據內容(róng)。當服務器(qì)對客戶機響應時,它使用功能碼(mǎ)域來指示正常(無差錯)響應或出現某種差錯(稱為異常響應)。對於一個正常(cháng)響應來說,服務器僅對原始功能(néng)碼響應。

 

對於異常響應,服務器返回一個與客戶(hù)機等同的碼,設置該原始功能碼的最高有效位為邏輯(jí)1,並(bìng)加該異常碼(mǎ)後(hòu)增加錯誤碼,以通知客戶(hù)機異常原因。

 

有效功能碼:

 

有效(xiào)功(gōng)能碼有二十幾種,但(dàn)是一(yī)般使用上都以1、2、3、4、5、6、15、16等八種(zhǒng)最為常用,以及另外特殊使用的20、21兩種,此為General Reference Register,絕大部份的Modbus設(shè)備並不會提供此Register。於PLC上主要的控製數據有下列四種型(xíng)式。此八種功能碼就是處理這(zhè)些控製(zhì)資料,詳細說明如下(xià)各點:

 

控製數據四種型式:

 

DI:DigitalInput(數字輸入,離散輸入),一個地址一個數據位(wèi),用戶隻能讀取它的狀態(tài),不能修改。以(yǐ)一個 bit表示(shì) On/Off,用來(lái)記(jì)錄控(kòng)製信號的狀態輸入,例如:開關,接觸點,馬達運(yùn)轉,超限switch…等等。於PLC上被稱為Input relay、input coil等。

 

DO:DigitalOutput(數字(zì)輸出,線圈(quān)輸出),一個地址一個數據位,用(yòng)戶(hù)可以(yǐ)置位、複位,可(kě)以回讀狀態。以一個 bit表示 On/Off,用來輸出控(kòng)製信號,以激(jī)活或停止馬達,警鈴,燈光…等(děng)等。於PLC上被稱為Output relay、Output coil等。

 

AI:Analog Input(模擬(nǐ)輸(shū)入(rù),輸(shū)入寄存器),一個地址16位數據,用戶隻能讀,不能修改(gǎi),,以16 bits integer表示一個數(shù)值(zhí),用來記錄控製信號的數值輸入,例如:溫(wēn)度、流量、料量、速度、轉速、文件(jiàn)板開度、液位、重量(liàng)…等等(děng)。於PLC上被稱為(wéi)Input register。

 

AO:AnalogOutput(模擬輸出(chū),保持寄存器),一個地址16位數據,用戶可以寫,也可以回讀(dú),以(yǐ)16 bits integer表示一個數值,用來輸出控製信號的數值,例如:溫度、流量、速(sù)度、轉速、文件板開度(dù)、飼料量…等等設定值。於PLC上被稱為Output register、Holding register。

 

圖片圖片

 

08 Modbus協議安全(quán)分析(xī)

圖片

Modbus 協議是典型的工控網協(xié)議,研(yán)究其安全性(xìng)對於加強工業控製網(wǎng)絡的安全性有重要(yào)意義。一般來說(shuō),協議安全性問題可以(yǐ)分為兩種(zhǒng),一種是協議自身(shēn)的設計和描述(shù)引起的安全問題; 另一種是協議的不正確實(shí)現引起的安全問題。Modbus 協議也存在著這兩方麵的問題。

 

8.1Modbus 協議的固有問題

 

絕大多數(shù)工控協議(yì)在設計之初,僅僅考慮了功能實(shí)現、提高(gāo)效率(lǜ)、提高(gāo)可靠性等方麵,而沒考慮過(guò)安全性問題。Modbus 協議(yì)也不例外,盡管其(qí)已經成為事實上的工業標(biāo)準。從(cóng)前麵(miàn)原理分析可以看出其本身的(de)安(ān)全性問題是: 缺乏認證、授權、加密等(děng)安全防護機製和功能碼濫用問題。

 

(1)缺乏認證

認證的目的是保證收到的信息(xī)來自(zì)合法(fǎ)的(de)用戶,未認(rèn)證用戶向設備發(fā)送控製命令不會被執行。在Modbus 協議通信過程中,沒(méi)有任(rèn)何認證方麵的相關定義,攻(gōng)擊者隻需要找到(dào)一個合法的(de)地址就可以使用功能碼(mǎ)就能(néng)建立一個Modbus 通信會話(huà),從而擾亂整個或者(zhě)部分控製過程。

 

(2)缺乏授(shòu)權

授權是保證不同的特(tè)權操作需要由擁有不同權限的認證用戶(hù)來完成(chéng),這樣(yàng)可大大降低誤操作與內部攻擊的概率。目前,Modbus 協議沒有基於角色的(de)訪問控製機製,也沒有對用戶分類,沒(méi)有對用戶的權限進行劃分,這會導致任意用戶可以執行任意功能。

 

(3)缺乏加密

加密可以保證通信過程中雙方的信息不被第三方非法獲取。Modbus 協議通(tōng)信過程中,地址(zhǐ)和命令全部采用明文傳輸,因此數據可以很容易的被攻擊者捕獲和解析,為攻擊者(zhě)提供便利。

 

(4)功能碼濫用

功能碼是Modbus 協(xié)議中的一項重要內容,幾(jǐ)乎(hū)所有的通信都包含功能碼。目前,功能碼濫用是導致Modbus 網絡異常的一個(gè)主要因素。例如不合法報文長度,短(duǎn)周期的無用命令,不正確的報文長度,確認異常代碼延遲等都有(yǒu)可能導致拒絕(jué)服務攻擊。

 

8.2協議實現產生的問題

 

雖然Modbus 協議獲得了(le)廣泛的應用,但是在實現具體的工業控製係統(tǒng)時,開發者並不具備(bèi)安全知識或者沒有意識到安全問題。這樣就導致了(le)使用Modbus 協議的係統中可能存在各種各樣的安全漏洞(dòng)。

 

(1)設計安全問題

Modbus 係統(tǒng)開發者重點關(guān)注的是其功能實現問題,安全問題在設計(jì)時很少被注意到。設計安全是指設計時(shí)充分考慮安全性,解決Modbus 係統可能出現的各種異常和非法操作等問題。比如在通信過程中,某個節點被惡意控製後發出非(fēi)法數據,就需要考慮這些數據的判別和處理問題。

 

(2)緩衝區溢出漏洞

緩衝區溢出是指在向緩衝區內填(tián)充數據時超過了緩衝區本身的容量導致溢出的數據覆蓋在(zài)合法數據上,這是(shì)在軟件開發中最常見也是非常危險的漏洞,可以導致係統崩(bēng)潰,或者被攻擊者利用來控製係統。

 

Modbus 係統開發者大(dà)多不(bú)具備安全開發知識,這樣就會產(chǎn)生很多的緩衝區溢出漏洞,一旦被惡意者利用會導致嚴重的後果。

 

(3)Modbus TCP 安全問題(tí)

目前,Modbus 協議(yì)已經可以在(zài)通用計算機和通用操作係統上實現,運行於TCP /IP 之上以滿(mǎn)足發展需(xū)要。這樣,TCP /IP 協議(yì)自身存在的安全問題不可避免地會影響到工控網絡安全。非(fēi)法網絡數據獲取,中間人,拒絕服務, IP 欺騙(piàn),病毒木(mù)馬等在IP 互聯網中的常用攻擊手段都會(huì)影響Modbus 係統(tǒng)安全。

 

8.3安全建議

 

目前,Modbus 係統采取的安全防護措施普遍不足,這裏參考信息安全業內研究並結合工控係統自(zì)身的安全問題,提出了一些安全建議,能夠有效地降低工業控製係統麵臨的威脅。

 

(1)從源頭(tóu)開始

工控網絡漏洞,很(hěn)大一部分是其實現過程出現(xiàn)的漏洞。如果從源頭開始控製,從Modbus 係統的需求(qiú)設計、開發實(shí)現(xiàn)、內(nèi)部測試和部署等階段,全生命周期的(de)介(jiè)入安全手(shǒu)段,融入安全設計、安全(quán)編碼以及安(ān)全測試等技術(shù),可以極大地消除安全漏洞,降低整個(gè)Modbus 係統的安全風險。

 

(2)異(yì)常行為檢測

異常行為代表著可能發生威脅,不管(guǎn)是有沒有攻擊者,因此開發針(zhēn)對Modbus 係統的專用異常行為(wéi)檢測設備可以極大提高工控(kòng)網絡的安全(quán)性。針對Modbus 係統,首先要分析其存在的各種操作行為,依據“主體,地點,時間,訪問方式,操作,客體”等行為描述成一個六元組模(mó)型; 進而分析其行為是否屬於異常; 最終決定采取記錄或者報警等措施。

 

(3)安全審計(jì)

Modbus 的安全審計就是對協議數據進行(háng)深(shēn)度解碼分(fèn)析,記錄操作的時間、地點、操作者和操作行為等關鍵信息,實現對Modbus 係統(tǒng)的安全審(shěn)計日誌(zhì)記錄和審計功能,從而提供安全事件爆(bào)發後的時候追查能力。

 

(4)使用網絡(luò)安全設備

使用入侵防禦和防火牆等網(wǎng)絡(luò)安全設(shè)備。防(fáng)火(huǒ)牆(qiáng)是(shì)一(yī)個串行設備,通過設置,隻允許特定的地址訪問服務端,禁止外部地址訪問(wèn)Modbus 服務器,可以有效的防止外部入侵; 入侵(qīn)防(fáng)禦設備可以分析Modbus協議的具體操作內(nèi)容,有效地檢測並阻止來自內部(bù)/外部的異常操(cāo)作和各種滲透攻擊行為,對(duì)內(nèi)網提供保(bǎo)護功能。

 

本文來源於網(wǎng)絡,版(bǎn)權歸原作者(zhě)所有,但因轉(zhuǎn)載眾多,無法確認原作者,故僅標明轉載來源。

 

上一篇:施耐德電氣開放自(zì)動化平台初體驗(4)

下一篇:施耐德電氣開放自動化平台初(chū)體(tǐ)驗(3)

相關推薦

日本熟WWW|91麻豆精品在线观看_视频精品在线一区二区三区_中文日产幕无限码一区_成人无码视频在线观看网址_国产亚洲精品高清在线_91Pro网站视频在线观看