歡迎您訪問河南省粉色视频官网自動化係(xì)統有限(xiàn)公司官方網站! 控製工程、物聯(lián)網、機(jī)器人、智能製造
谘詢熱線:0371-56699562 13383812899
您的(de)位置(zhì):首頁 > 新聞動態 > 行業動態

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

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

今天來聊一聊Modbus,先看看今天的主要內容: 

01 術(shù)語解讀 

02 背景(jǐng) 

03 協議原理 

04 傳(chuán)輸方式 

05 Modbus RTU與Modbus ASCII有什麽區(qū)別 

06 Modbus TCP及(jí)其注意點 

07 功能碼作用 

08 Modbus協議(yì)安全分析

 
 

01 術語解讀

 

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

 

離散量輸入:主(zhǔ)要用來讀取單個位的數據,如IO的狀態(tài);

 

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

 

輸入寄存器:主要用(yòng)來讀取(qǔ)16位,也就是兩個字節的數據;

 

保持寄存器:主要用來(lái)寫(xiě)入16位的數據;

 

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

 

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

 

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

 

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

 

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

 

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


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


c. 停止位:用於表示單個包的(de)最後一位。典型的值為1,1.5和2位。由於數據是在傳輸線上定時的,並且每一(yī)個設備有其自己的時鍾,很可能在通信中兩台設備間出(chū)現了小小的不同步。因此停止(zhǐ)位不僅僅是表(biǎo)示傳輸的結束,並且提供計算機校正時鍾同步的機會。適用於停止(zhǐ)位的位數越(yuè)多,不同時鍾同步的容忍程度(dù)越大,但是數據(jù)傳輸率同時也越慢。


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

 

圖片(piàn)

02 背景

圖片

早在1971年,Modicon公司(sī)首次推出了Modbus協(xié)議(yì),ModbusRTU和(hé)Modbus ASCII誕生於此。後來施耐(nài)德電氣(SchneiderElectric)收購了Modicon公司,並在1997年推(tuī)出了(le)ModbusTCP協議。2004年,中國國家標準委(wěi)員會正式把Modbus作為了國家標準,開啟了Modbus為中國(guó)工業通信做貢獻的時代。

 

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

 

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

圖片

03 協議原理

圖片

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

 

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

 

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

 

圖片

04 傳輸方(fāng)式

 

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

 

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

 

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

 

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

 

首先,讓我(wǒ)們來(lái)看看Modbus的工作原理。

 

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

 

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

 

在廣(guǎng)播模式中,Modbus主設(shè)備可同時向多個(gè)從設備發送請求(設備地址0用於廣播模式),從設備對廣播請(qǐng)求不進行響應。

 

在單播模(mó)式中,主設(shè)備發送請求至某個特定的從設備(每個Modbus從設備具有唯一地址),請求(qiú)的消息幀中會包含功(gōng)能(néng)代碼(mǎ)和數(shù)據,比如功能代碼“01”用來(lái)讀取離散量(liàng)線圈的狀態(tài)。從設備接到請求後,進行應答並(bìng)把消息反饋(kuì)主設備。

 

圖片

 

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

 

圖片

 

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

 

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

 

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

 

圖片

圖片

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

 

6.1 主機和從機、服務端和客戶端

 

在modbus協議(yì)中:主機(jī)發送modbus請求,從機根據請求內容向主機返回響應。在modbus協議中,主機總(zǒng)是主動方,從機總是被動方。

 

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

 

在modbus tcp中:主機是客戶端,而(ér)從機是服務器端。千萬不要(yào)以為服務(wù)器端重要,主機也重要,所以主機就(jiù)是服務器端。

 

6.2 是否(fǒu)可以多主機

 

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

 

6.3 modbus TCP協議簡述

 

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

 

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

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

 

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

 

圖片

 

在modbus TCP中包含一個MBAP頭,該頭包含以下(xià)幾個部分(fèn):

 

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

傳輸標誌

2字節

MODBUS 請求(qiú)和響應(yīng)傳輸(shū)過程中序列號

客戶端生(shēng)成

應答時複製該值

協(xié)議標誌

2字節

Modbus協議默認為0

客戶端生成

應答時複製該值

長度

2字(zì)節

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

客戶端生成

應答時由服務器端生(shēng)成

單元標誌

1字節

從機(jī)標誌(zhì)(從(cóng)機地(dì)址)

客(kè)戶端(duān)生成

應答時複製(zhì)該值

 

注意:

a.傳(chuán)輸標誌可理(lǐ)解為序列號,防止 MODBUS TCP通信錯位,例如後發生的(de)響應先到了主機,而早發生的響應後到主機;

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

 

6.4 modbus tcp 和 TCP IP的(de)關係

 

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

 

圖片

07 功能碼(mǎ)作用

圖片

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

 

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

 

從客戶機向服務器發送的報文(wén)數據域包括附(fù)加(jiā)信息(xī),服務器使用這個信息執行功能碼定義的操(cāo)作。這個域還包括離散項目和寄存(cún)器(qì)地址、處(chù)理項目的數量以及域中的實際數據(jù)字(zì)節數。

 

在某種請求中,數據(jù)域可以是不存在(zài)的,在此情況下服務器(qì)不需要任何附加信息。功能(néng)碼僅說明操(cāo)作。

 

功(gōng)能碼(mǎ)的(de)類型:

 

功能碼主要分為有(yǒu)效功能碼、異常功能碼和錯誤(wù)功能(néng)碼。如果在(zài)一個正確接(jiē)收Modbus ADU中,不出現與請(qǐng)求Modbus功能有關的差(chà)錯,那麽(me)服務器至客戶機的(de)響(xiǎng)應數據會包含請求中的正常功能碼。如果出現與請求Modbus功能有關的差錯,那麽響應數據會包含一個異常碼和錯誤碼。

 

例如,客(kè)戶機能夠讀一組離散量輸出或輸入的開/關狀態(tài),或(huò)者用戶能夠讀/寫一組寄存器數據內容。當服(fú)務器對客戶機響應時,它使(shǐ)用功能碼域來指示正常(cháng)(無差(chà)錯)響應或出現某種差錯(稱為異常響應)。對於一個正常(cháng)響應來說,服務(wù)器僅對原始功能碼響應。

 

對於異常響應,服務器返回一個與客戶機等(děng)同的碼,設置該原始功能碼的最高(gāo)有效位為邏輯1,並加該異常碼後增(zēng)加錯(cuò)誤碼,以通知客戶機異常原因。

 

有效功能碼:

 

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

 

控製數據四種型式:

 

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

 

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

 

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

 

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

 

圖片圖片

 

08 Modbus協議安全分析

圖片

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

 

8.1Modbus 協(xié)議的固有問題

 

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

 

(1)缺乏認證

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

 

(2)缺乏授權

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

 

(3)缺乏加密

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

 

(4)功能碼濫用

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

 

8.2協議實現產生的問題

 

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

 

(1)設計安全問(wèn)題

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

 

(2)緩衝區溢出漏洞(dòng)

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

 

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

 

(3)Modbus TCP 安全問題

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

 

8.3安全建議

 

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

 

(1)從源頭開始

工控網絡(luò)漏洞,很大一(yī)部分是其實現過程出現的漏(lòu)洞。如果從源頭開始控製,從Modbus 係(xì)統的需求設計、開發實現、內部測試和部署等階段,全生命周期的介入安全手段,融入安全設計(jì)、安全編碼以及安全測試等技術,可以極大地消除安全漏洞,降低整個Modbus 係統的安(ān)全風險。

 

(2)異常行為檢(jiǎn)測

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

 

(3)安(ān)全審計

Modbus 的安全(quán)審計就(jiù)是對協議數據進行深度解碼分析,記錄(lù)操作的(de)時間、地點、操作者和操作行為等(děng)關鍵信息,實現對Modbus 係(xì)統的安全審計日誌記錄和審計功能,從(cóng)而提(tí)供(gòng)安全事(shì)件爆發後的時候追查能(néng)力。

 

(4)使用網絡安全設備

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

 

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

 

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

下(xià)一篇:施(shī)耐德電氣開放自動(dòng)化平台初體驗(3)

相關推薦

粉色视频官网_粉色导航APP_午夜粉色视频_粉色视频污在线观看