歡迎(yíng)您訪問河南省鲁大师官方网站自(zì)動化係統有限公司官方網站! 控製工程、物聯網、機器人、智能製造
谘詢熱線:0371-60298207 13383812899
您的位置:首頁 > 新聞動態 > 行業動態

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

發布日期:2022-08-12 15:31:59   來源:行業動態   瀏覽量:

今天(tiān)來聊一聊Modbus,先看看今天的主要內容(róng): 

01 術語解讀 

02 背(bèi)景 

03 協議原理 

04 傳輸方式 

05 Modbus RTU與Modbus ASCII有什麽區別 

06 Modbus TCP及其注意點 

07 功能碼作用 

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

 
 

01 術語解讀

 

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

 

離散量(liàng)輸入:主要用來讀取單個位的數據(jù),如IO的狀態;

 

線圈:開關輸出信號,主要(yào)用來寫入單個位的數據,與離散量構(gòu)成組成對位的(de)操作;

 

輸入寄存(cún)器(qì):主要用來讀取16位,也就(jiù)是兩個字節的數據;

 

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

 

PLC:可編程邏輯控製(zhì)器(qì),是一種采用一類可編程的存儲器,用於其內部存儲程序和執(zhí)行邏輯運算、順序控製、定時、計數與算術操作等麵向用戶的指令,並通過數字或模擬式輸入/輸出控製各種類型的機械或生產過程。

 

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

 

串口:串口是計算(suàn)機上一種非常通用設備通信的協議,不要與(yǔ)通用串行總線Universal Serial Bus(USB)混淆。大多數計算機包含(hán)兩個基(jī)於RS232的串口。串口同時也是儀器儀表設備通用的通信協議;很多(duō)GPIB兼(jiān)容的設備也(yě)帶有RS-232口。同時,串口(kǒu)通信協議也可以用(yòng)於獲取遠程采集設備的數據。

 

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

 

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

 

a. 波特率(lǜ):這是一個(gè)衡量通信速(sù)度的參數。它表示每秒鍾傳送的bit的個數。例如300波(bō)特表示每秒鍾發送300個bit。當我們提到時鍾周期時(shí),我們就是(shì)指波特(tè)率。例如如果協議需要4800波特(tè)率,那麽時鍾是4800Hz。這意味著串口通信在數據(jù)線上的采樣率為4800Hz。通常電話線的波特率為14400,28800和(hé)36600。波特率可以遠遠大於這些(xiē)值,但是波特(tè)率和距離成反比(bǐ)。高波(bō)特率常常用於放置的很近的儀器間的通信,典型的例子就是GPIB設備的通信。


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


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


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

 

圖片(piàn)

02 背景

圖片(piàn)

早在1971年,Modicon公司首次推出了Modbus協議,ModbusRTU和Modbus ASCII誕(dàn)生於此。後來施耐德電氣(SchneiderElectric)收購了Modicon公司,並(bìng)在1997年(nián)推(tuī)出了ModbusTCP協議。2004年,中國國家標(biāo)準(zhǔn)委員會正式把(bǎ)Modbus作為了國家標準,開(kāi)啟了Modbus為中國工業通信做貢獻的時代。

 

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

 

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

圖片

03 協議原理

圖片

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

 

一般(bān)使用上,監控係統(HMI)都為Master,PLC、電表、儀表等都為Slave,HMI係統(tǒng)一直PollingSlave的各種relayandregister最新數(shù)值,然後做顯示及各種邏輯計算及控製調整(zhěng)等處理。

 

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

 

圖片

04 傳(chuán)輸方式

 

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

 

Modbus 協議使用串口傳輸(shū)時可以選擇RTU或ASCII模式,並(bìng)規(guī)定了消息、數據結構、命令和應答方式(shì)並(bìng)需要對數據進行校驗。ASCII 模式(shì)采用LRC校驗,RTU模式采用16 位(wèi)CRC校驗。通過以太網傳輸(shū)時使用TCP,這種(zhǒng)模式不使用校驗,因為TCP協(xié)議是一(yī)個麵向連接的可靠協議。

 

05 Modbus RTU與Modbus ASCII有什麽區別圖(tú)片

 

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

 

首先,讓我(wǒ)們來看看(kàn)Modbus的工作原理。

 

Modbus采用主從(Master-Salve)通信模式,僅(jǐn)有主設備(Master)能對傳輸進行初始化(huà),從設備(bèi)(Slave)根據主設備的請求(qiú)進行應答。典型的主(zhǔ)設備包(bāo)括現場儀表(biǎo)和顯示麵板,典型的(de)從設備(bèi)為可編(biān)程邏輯控製器(PLC)。

 

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

 

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

 

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

 

圖片

 

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

 

圖片

 

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

 

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

 

具體格式(shì)如下(xià)圖所示:

 

圖片(piàn)

圖片(piàn)

06 Modbus TCP及其注意(yì)點圖片

 

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

 

在modbus協議中:主機發送modbus請求,從機根據請求內容向主機返(fǎn)回響應。在(zài)modbus協議中,主機總是主動方,從機總是被動方。

 

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

 

在(zài)modbus tcp中:主機是客戶(hù)端,而從機是服務器端。千萬不要以為服務(wù)器端重要,主機也重要,所(suǒ)以主機就是服務器端。

 

6.2 是否可以多主機(jī)

 

通過前麵的分析,主機(jī)為客戶端那麽(me)modbustcp支持多個主機,在一個   局域(yù)網中可存在多個主機和多個從機。從機的連接能(néng)力(連接主機(jī)的數   量)由uIP的最大TCP連接個數(shù)決定。

 

6.3 modbus TCP協(xié)議簡(jiǎn)述

 

modbus TCP和modbus RTU基本相同,但(dàn)是(shì)也存在(zài)一些區別:

 

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

b.CRC校驗變得不再重要,甚至可以忽略。由於TCP數據包中(zhōng)已經(jīng)存在校驗,為了不重複造輪子,modbus TCP幹脆取消了CRC校驗。

 

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

 

圖片

 

在modbus TCP中包含一個MBAP頭,該頭包含以下幾個部分:

 

區域 長度 描述(shù) 客戶端 服務器(qì)

傳輸標(biāo)誌

2字節

MODBUS 請求和響應傳輸過程中(zhōng)序列(liè)號

客戶端生成

應答時複製(zhì)該值

協議標誌

2字節

Modbus協議默認為0

客戶端生成

應答時複製該值

長(zhǎng)度

2字節

剩餘部(bù)分的(de)長度

客(kè)戶端生成

應答時由(yóu)服務器端生成

單元標誌

1字節

從機標誌(從機地址)

客戶端生成

應答時複製(zhì)該值

 

注意(yì):

a.傳輸標誌可理解(jiě)為序(xù)列號,防止(zhǐ) MODBUS TCP通信錯位,例如後發生的響應先到了主機,而早發生的(de)響應(yīng)後到主機;

b.單元標誌可理解為(wéi)從機地址(zhǐ),此時已經不再重要。

 

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

 

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

 

圖片

07 功能碼(mǎ)作用

圖片

啟動Modbus事務處(chù)理的客戶機(jī)創建(jiàn)Modbus應(yīng)用數據單元。功能(néng)碼(mǎ)(PDU中的(de))向服(fú)務器指示將執行哪種操作。

 

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

 

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

 

在(zài)某(mǒu)種請求中,數據域可以(yǐ)是不存在的,在此情況下服務器不需要任何附(fù)加信息。功能碼(mǎ)僅說明操作。

 

功能碼的類型(xíng):

 

功能碼主要(yào)分為有效(xiào)功能碼、異常功能碼和(hé)錯誤功能碼。如果在一個正確(què)接收Modbus ADU中,不出現與(yǔ)請求Modbus功能有關的差錯,那麽服(fú)務器(qì)至客戶機(jī)的響應數據會(huì)包含請求中的正常功能碼。如果出現與請求Modbus功能有關的差錯,那(nà)麽響應數據會包含一個異常碼和錯誤碼。

 

例如,客戶機能夠讀一組離散量輸出或輸(shū)入的開/關狀態,或者用戶能夠讀/寫一組寄存(cún)器數據內容。當服務器對客戶機響應時,它使用功能碼域來指示正常(無差錯(cuò))響應或出現某種(zhǒng)差錯(cuò)(稱為異常響應)。對於一個正常響應來說,服務器僅對原始功能碼響應(yīng)。

 

對於異常響應,服(fú)務器返回一個與客戶機等(děng)同的碼,設置該原(yuán)始功能碼的最高有(yǒu)效位(wèi)為邏輯1,並加該異常碼後增加錯誤碼,以通知客(kè)戶機異常原因。

 

有效功能碼:

 

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

 

控製(zhì)數據四種型式:

 

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

 

DO:DigitalOutput(數字輸出,線圈輸出),一個地址一個數據位,用戶可以置位、複位,可以回讀狀態。以一個 bit表示 On/Off,用來輸出控製信號,以激活(huó)或停止馬達,警鈴,燈光…等等。於PLC上被稱為Output relay、Output coil等。

 

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

 

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

 

圖片圖片

 

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

圖片

Modbus 協議是典型的工控網協議,研究其(qí)安(ān)全性對於加強(qiáng)工業控製網絡的安全性有重要意(yì)義。一般來說,協議安全性問題可以分為兩種,一種是協議自身的設計(jì)和描述引起的安全問題; 另一種是協議(yì)的不正確實現引起(qǐ)的(de)安全問題。Modbus 協議也存在著(zhe)這兩方麵的問題。

 

8.1Modbus 協議的固有(yǒu)問題

 

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

 

(1)缺乏認證

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

 

(2)缺乏授權

授權(quán)是(shì)保證不同的特權操(cāo)作需要由(yóu)擁有不同權限的認證用戶來完成,這樣可大大(dà)降低誤(wù)操作與內部攻擊的概(gài)率。目前,Modbus 協議沒有基於角色的訪問控製機製,也沒有對用戶分類,沒有對用戶的權限進(jìn)行劃(huá)分,這會導致(zhì)任意用(yòng)戶可以執行任(rèn)意功能。

 

(3)缺乏加密

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

 

(4)功能碼濫用

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

 

8.2協議實現(xiàn)產生的問題

 

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

 

(1)設(shè)計安全問題

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

 

(2)緩衝區溢(yì)出漏洞

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

 

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

 

(3)Modbus TCP 安全問題

目前,Modbus 協議已經可以在通用計算機和通用操(cāo)作係統上實現,運行於(yú)TCP /IP 之(zhī)上以滿足發展(zhǎn)需要。這樣,TCP /IP 協議自身存在的安全問題不可避免地會影響到工控網絡安全。非法網絡(luò)數據獲取,中間人,拒絕服務, IP 欺騙,病毒木馬等在IP 互聯網中的常(cháng)用攻擊手段都會影響Modbus 係統安全。

 

8.3安全建議(yì)

 

目(mù)前,Modbus 係統采取的安全防護措(cuò)施普遍(biàn)不足,這裏(lǐ)參考信息安全業內研究並結合工控係統(tǒng)自身的安全問題,提(tí)出了一些安全建議,能夠有效(xiào)地降低工業控製係統麵臨的威脅。

 

(1)從源頭開始

工控網絡漏洞,很大一部分是(shì)其實現過程(chéng)出(chū)現的(de)漏洞。如果從源頭開始控製,從Modbus 係統的需求(qiú)設計、開發實現、內部測(cè)試和部(bù)署等階段(duàn),全生命周期的介(jiè)入安全手段,融入安全設計、安全編碼以及安全測試等技術,可以極大地消除安全漏洞(dòng),降(jiàng)低整個Modbus 係(xì)統的(de)安全風險(xiǎn)。

 

(2)異常行為檢測

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

 

(3)安全審計

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

 

(4)使用網絡安全設備(bèi)

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

 

本文來源(yuán)於網絡,版權歸原作(zuò)者所有,但因轉載眾多,無法確認原作者,故僅標明轉載來源。

 

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

下一篇(piān):施耐德電氣開放自動(dòng)化平台初體驗(3)

相關推薦

鲁大师官方网站-鲁大师免费观看日韩-鲁大师免费mv在线观看网站-鲁大师APP免费下载