歡迎您訪問河南(nán)省天天综合7799自動化係統有限公司(sī)官方網站! 控製工程、物聯網(wǎng)、機器人、智能製造
谘詢熱線:0371-60298207 13383812899

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

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

今天來聊(liáo)一聊Modbus,先看看今天的主要內(nèi)容: 

01 術語解讀 

02 背景 

03 協議原理 

04 傳輸方式 

05 Modbus RTU與Modbus ASCII有什麽區別 

06 Modbus TCP及其注意點 

07 功能碼作用 

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

 
 

01 術語解讀

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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


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


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


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

 

圖片

02 背景

圖片

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

 

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

 

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

圖片

03 協議原理

圖(tú)片

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

 

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

 

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

 

圖片

04 傳輸(shū)方式

 

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

 

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

 

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

 

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

 

首(shǒu)先,讓我(wǒ)們來看看Modbus的工作原理。

 

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

 

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

 

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

 

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

 

圖片

 

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

 

圖(tú)片

 

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

 

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

 

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

 

圖片

圖片

06 Modbus TCP及其注意點圖片

 

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

 

在modbus協議中:主機(jī)發送(sòng)modbus請求,從(cóng)機根據請求內容(róng)向主機返回響應。在modbus協議中,主(zhǔ)機(jī)總是(shì)主動方,從機總是被動方。

 

在網絡應用中:在網絡(luò)應(yīng)用中存在客戶端(duān)和服務器(qì)端,客戶端(例如瀏覽器)發(fā)送(sòng)請求到服務器,服務器(qì)向客戶端返(fǎn)回內容(例如HTML文本)。

 

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

 

6.2 是否可以多主機

 

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

 

6.3 modbus TCP協議(yì)簡述

 

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

 

a.從機(jī)地址變得不再重要,多數情況(kuàng)下忽略。從某種意義上(shàng)說從機地(dì)址被IP地(dì)址取代;

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

 

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

 

圖片

 

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

 

區域 長度 描述 客戶端 服務器

傳輸標誌

2字節

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

客戶端生成(chéng)

應答時複製該值

協議標誌

2字節

Modbus協議默(mò)認為0

客戶端(duān)生成

應答時複製該值

長度

2字節

剩餘部(bù)分的長度

客戶端生成

應答時由服務器端生成

單元標誌

1字節

從機標誌(從機地址)

客戶端生成

應答時複製該值

 

注意:

a.傳輸(shū)標誌可理解為序列(liè)號,防(fáng)止(zhǐ) MODBUS TCP通信錯位,例如後(hòu)發生的響應先到(dào)了主機,而早發生的響應後到主機;

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

 

6.4 modbus tcp 和 TCP IP的關係

 

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

 

圖片

07 功能碼(mǎ)作用

圖片

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

 

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

 

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

 

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

 

功能碼的類型:

 

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

 

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

 

對於異常響應(yīng),服務器返回一個與(yǔ)客戶機等同的碼,設置該原始功能碼的最高有效位為(wéi)邏輯1,並加該異(yì)常碼後增加錯誤碼,以通知客戶機異常原因。

 

有(yǒu)效功能碼:

 

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

 

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

 

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

 

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

 

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

 

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

 

圖片圖片

 

08 Modbus協議安全分析

圖片

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

 

8.1Modbus 協議的固有問題

 

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

 

(1)缺乏(fá)認證

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

 

(2)缺乏授權

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

 

(3)缺乏加密

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

 

(4)功能碼濫用(yòng)

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

 

8.2協議實(shí)現產生的問題

 

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

 

(1)設計安全問題

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

 

(2)緩衝(chōng)區溢出漏洞

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

 

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

 

(3)Modbus TCP 安全問題

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

 

8.3安全建議

 

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

 

(1)從源頭開始

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

 

(2)異常行為(wéi)檢測(cè)

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

 

(3)安全審計

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

 

(4)使用網絡安全設備

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

 

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

 

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

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

相關推薦

天天综合7799|AV熟女网址|日本人人操|日本人人干人人操蜜臀69A|7799看看在线视频播放|日本在线久久久久99人妻一区二区三区四区