今天來聊一聊Modbus,先看看今天的主要內容:
01 術語解讀
02 背景
03 協議原理
04 傳輸方式
05 Modbus RTU與Modbus ASCII有什(shí)麽區別
06 Modbus TCP及其注(zhù)意點
07 功能碼作(zuò)用
08 Modbus協議安全分析
01 術語解讀
校驗(yàn)碼:校驗碼通常是一組數字的(de)最後一位,由(yóu)前麵的數字通過某種運算得出,用以檢驗該(gāi)組數據的正確性。代碼作為數(shù)據在(zài)向計算機或其(qí)它設備進行輸入時,容易產生(shēng)輸入錯誤,為了減少這種輸入錯誤,編碼專家(jiā)發明了各種校驗檢錯方法,並依據這些方法(fǎ)設置了校驗碼。常用的校驗有:累加和校(xiào)驗SUM、字節異或校驗XOR、縱(zòng)向(xiàng)冗餘(yú)校驗LRC、循環冗(rǒng)餘(yú)校驗(yàn)CRC……
離散量輸入:主要用來讀取單個位的數據,如IO的(de)狀態;
線圈:開關輸出信號(hào),主要用來寫入單(dān)個位的數據,與離散量構成組成對位的操作;
輸入寄存器:主要用來(lái)讀取16位(wèi),也就是兩個字節的數據;
保(bǎo)持寄存器:主要用來寫入(rù)16位的數據;
PLC:可編程邏(luó)輯(jí)控製器,是一種采用一類可編程的存儲器,用於其內部存儲程序(xù)和執行邏輯運算、順序控製、定時、計數(shù)與算術操作等麵向用戶(hù)的(de)指令,並通過數字或模擬式輸入(rù)/輸出控製各種類型的機械或(huò)生產過程。
串口通信:隨著計算機係統的應用和微機網絡的發展,通信功能越來越顯得重要。這裏所說的通信是指計算機與外界的信息交(jiāo)換。因此,通信既包括計算機與外部設備之間,也包括計算機和計算機之(zhī)間的信息交換。由於串行通信是(shì)在一(yī)根傳輸線上一位一位的傳送信息,所用的傳輸線少,並且可(kě)以借助現(xiàn)成的電話網進行信息傳送,因此特別適合於遠距離傳輸。對於那些與計算機相距不遠的人-機交換設備和串行存儲的外部(bù)設備如終端、打印機、邏輯分析儀、磁盤等,采用(yòng)串行方式交換數據也很(hěn)普遍。在實時控製和管理方麵(miàn),采用多台微機處理機組成分級分布控製(zhì)係統中,各(gè) CPU 之間的通信一(yī)般都是串行方式。所(suǒ)以串行接口是微機應用係統常用的接口。許多外設和計(jì)算機按串行方式(shì)進行通信,這裏所(suǒ)說的串行方式(shì),是(shì)指外設與接口電路之間的信息傳送方式,實際上CPU 與接口(kǒu)之(zhī)間仍按並行方式工作(zuò)。
串口:串口是計算機上一種非常通(tōng)用設備通信的協議,不要與通(tōng)用串行總線(xiàn)Universal Serial Bus(USB)混淆。大多(duō)數計算機包含兩個基於(yú)RS232的串口。串口同時也是儀器儀表設備通用的通信協議;很(hěn)多GPIB兼容的(de)設備也帶有RS-232口。同時,串口通信協議也可以用於獲取遠程采集設備的數(shù)據。
串口通信的(de)概念非常簡單,串口按位(bit)發送和接收字節。盡管比按字節(byte)的並行通信要慢,但是串口可以在使用一根線發送數據的(de)同時用另(lìng)一根線接收數據。它(tā)很(hěn)簡單並且能夠(gòu)實(shí)現遠距離通信。比如IEEE488定義並行通行狀態時,規定設備(bèi)線總常不得超過20米,並且任(rèn)意兩個設備間的長度不得超過2米;而對於串口而言,長度可(kě)達1200米。
典型地,串口用於ASCII碼字符的(de)傳輸。通信(xìn)使用3根線完成:地線、發送和(hé)接(jiē)收。由(yóu)於串(chuàn)口(kǒu)通信是異步的,端口能夠在一根(gēn)線上發送數(shù)據同時在另一(yī)根線上(shàng)接收數據。其他線用於握手,但是不是必須的。串口通信最(zuì)重要的參數是(shì)波特率(lǜ)、數據位、停止位和奇偶校驗。對(duì)於兩個進行通行的端口,這些參數必須匹配:
a. 波特率:這是一個衡量通信速度的參數。它表示每(měi)秒鍾傳送的bit的個數。例如300波特(tè)表示每秒鍾發送300個bit。當我們提到時鍾周期時,我們就是指波特率。例如如果協議需要4800波特率,那麽時鍾是4800Hz。這意味著串口通信(xìn)在數據線上的采樣率為(wéi)4800Hz。通常(cháng)電話線的波特率為14400,28800和(hé)36600。波特率可以遠遠大於(yú)這些值,但是波特率和距離成(chéng)反比。高波(bō)特率常常用於放(fàng)置的很近的(de)儀器間的通信,典型的例子就是GPIB設備的通信。
b. 數據(jù)位:這是衡量(liàng)通信(xìn)中實際(jì)數據位的參數。當(dāng)計算機發送一個信息包,實際的數據不會是8位的(de),標準的值(zhí)是5、7和8位(wèi)。如何設置取決於你想傳送的信息。比如,標準的ASCII碼是0~127(7位)。擴展的ASCII碼是(shì)0~255(8位)。如果數據使(shǐ)用簡單的文本(標準 ASCII碼),那(nà)麽每個數據(jù)包使用7位數據。每個包是(shì)指(zhǐ)一個字節,包括開始/停止位,數據位和奇偶(ǒu)校驗位。由於實際數據位取決於(yú)通信協議的選取,術語“包(bāo)”指任(rèn)何通(tōng)信的情(qíng)況。
c. 停止位:用於表示單個包的最後一位。典型的值(zhí)為(wéi)1,1.5和2位。由於數據是(shì)在傳輸線上定時的,並且每一個設備有其自己的時鍾,很可能在通信中兩台設備間出現了小(xiǎo)小的不同步。因此停止位不僅僅是表示傳(chuán)輸的結束,並(bìng)且提供計算機校正時(shí)鍾同步的機會。適用於停止位的位數越多,不同時鍾同步的(de)容(róng)忍程度越大,但是數據(jù)傳輸率同時也越慢。
d. 奇(qí)偶校驗位:在(zài)串口通(tōng)信中一種簡單的(de)檢錯(cuò)方式。有四種檢(jiǎn)錯方式:偶、奇、高和低。當然沒有校驗位也(yě)是可以的。對於偶和奇校驗的情(qíng)況,串口會設置(zhì)校驗位(數(shù)據(jù)位後麵的一位),用(yòng)一個值確保傳輸的數據有偶個或者奇個邏輯高位。例如,如果數據是011,那麽對於偶校(xiào)驗,校驗位為0,保證邏輯高的位數是(shì)偶數個(gè)。如果是奇校驗,校驗位(wèi)1,這樣就有3個邏輯高位。高位和低位不(bú)真正的檢(jiǎn)查數據,簡單置位邏輯高或者(zhě)邏輯低校驗。這(zhè)樣使得接收設備能夠知道一(yī)個位的狀態,有機會判斷是否(fǒu)有噪聲幹擾了(le)通信或者是否傳輸(shū)和接收數據是否不同步。
02 背景
早在1971年,Modicon公司首次推出了(le)Modbus協議,ModbusRTU和Modbus ASCII誕生於此。後來施耐德電氣(SchneiderElectric)收購(gòu)了Modicon公司,並在1997年推出了ModbusTCP協議。2004年,中國國家標準委員會正式把Modbus作為了國家標準,開啟了Modbus為中(zhōng)國工(gōng)業通信做貢獻的(de)時代。
通(tōng)過此協議,控製器相互之間、控製器(qì)經由網絡和其它設備之間可以通信。Modbus協議(yì)具有標準、開放(fàng),可以支持多種電氣接口,數(shù)據幀格式簡單緊湊(còu),數據傳輸量大、實時性好等特點,在工業控(kòng)製(zhì)係(xì)統中(zhōng)得到了廣泛的應用,已經成為通用工業標準。深入分析Modbus協議實(shí)現原理和其安全(quán)性對提高工控係統安全性有著重要的現實意義。
ModbusRTU和ModbusASCII主要用於串行(háng)通信領域,而ModbusTCP則常用於以太網通(tōng)信。現在,Modbus已經成為工(gōng)業領域通信協議標準,並且現在是工業電子(zǐ)設備之間相當常用的連接方式。
03 協議原理(lǐ)
Modbus使用一種簡單的MasterandSlave主從協議(客戶機/服務器協議(yì))進行通信(xìn)。客戶機作為主站,向服務器發送請求;服務器(從站)接到請求後,對請求進行分析(xī)並作出應答。其中使用的通信幀被稱為應用數據單元(Application Data Unit,ADU),它包括通信地址段、功能代碼段、數據段和(hé)校(xiào)驗段,如下圖:
一般(bān)使用上,監控係(xì)統(tǒng)(HMI)都為Master,PLC、電表、儀表等都為Slave,HMI係統一直PollingSlave的各種relayandregister最新數值,然後做顯示及各種邏輯計算及控製(zhì)調整等(děng)處理。
其中,功能代碼段和數據段組合稱為協(xié)議數據單元(Protocol Data Unit or Protocol Description Unit),PDU)。功能(néng)代(dài)碼段占用一個字節,取值範圍(wéi)為1~255,其中128~255為保留值,用於異常消息應(yīng)答報文。1~127為(wéi)功能代碼編(biān)號,其中65~72和100~110為用戶自(zì)定義編碼。
04 傳輸方式
Modbus 協議是一(yī)種應用層報文傳輸協議,包括ASCII、RTU、TCP三(sān)種報文類型,協議本身並沒有定義物理層,隻是(shì)定義了控(kòng)製器能夠認識和使用的消息結構,而不(bú)管它們是(shì)經過(guò)何種網絡進行通信的。
Modbus 協議使用串口傳(chuán)輸時可以(yǐ)選擇RTU或ASCII模式,並規定了消息(xī)、數據結構、命令和應答方式並需要對數據進行校驗。ASCII 模式采用LRC校驗,RTU模式采用16 位CRC校驗。通過以太網傳輸時使用TCP,這種模式不使用校驗(yàn),因為(wéi)TCP協議是一個麵向連接的可靠協議。
05 Modbus RTU與(yǔ)Modbus ASCII有什(shí)麽區別
Modbus是(shì)一種應用層協議,它定義了與基(jī)礎網絡無關的數據單(dān)元(ADU),可以(yǐ)在以太網(TCP/IP)或串行鏈(liàn)路上(RS232、RS485等)進行通信(以太網(wǎng)ADU和串行ADU略有不同)。在串行鏈路上,Modbus協議有兩種傳輸模式——ASCII模式和RTU模(mó)式。其中,ASCII是英文(wén)“American Standard Code for Information Interchange”的(de)縮寫,中文翻譯為“美國國家信息交換標(biāo)準編碼”;RTU是英文“ Remote Terminal Unit”的縮寫,中文翻譯為“遠(yuǎn)程終(zhōng)端設備”。
首先,讓我們來看(kàn)看Modbus的工作原理。
Modbus采用主從(Master-Salve)通信模式(shì),僅有主設備(bèi)(Master)能(néng)對傳輸進(jìn)行初始化,從設備(Slave)根據主設備的請求進(jìn)行應答。典型的主設備包括現場儀表和顯示麵(miàn)板,典型的從設備為可編程邏(luó)輯控(kòng)製器(PLC)。
在串行鏈路的主從通信中,Modbus主設備可以連接一個或N(最大(dà)為247)個從設備,主從設備之間的通信包括單播模式和(hé)廣播模式。
在廣播模式中,Modbus主設備可同時向多個從設備發送請求(設備地址0用於廣播模式),從設備對廣播請求不進(jìn)行響(xiǎng)應(yīng)。
在單(dān)播模式中,主設備發送請求至某(mǒu)個特(tè)定(dìng)的從設備(每個Modbus從設備具有唯一地址),請求的消息幀(zhēn)中會包含功能代碼和數據(jù),比如功能代碼“01”用來讀取離散量線(xiàn)圈的狀態。從設備(bèi)接到請(qǐng)求後,進(jìn)行應(yīng)答並把消息反饋主設備。
在主從設備的通信中,可以使用ASCII模式或者RTU模式。在(zài)ASCII(AmericanStandard Code for Information Interchange)傳輸模式下,消息幀以英文冒號(“:”,ASCII3A Hex)開始,以回車和換號(CRLF,ASCII 0D and 0A Hex)符號結束,允許的傳輸的字符(fú)集為十六進製的0~9和A~F;網絡(luò)中的從設備監視傳(chuán)輸通路上是否有英(yīng)文(wén)冒號(“:”),如果有的話,就對消息幀進行解碼,查看消(xiāo)息(xī)中的地址是否與自己的地址相同,如果相同的話,就接收其中的數(shù)據;如果不同的話,則不予理會。
在(zài)ASCII模式下,每個(gè)8位的字(zì)節被(bèi)拆分成兩個ASCII字符進行發送,比如十六進製(zhì)數0xAF ,會(huì)被分解成ASCII字符“A”和“F”進行發送,發送的字符量比RTU增加一倍(bèi)。ASCII模(mó)式的好處是允許兩個字符之間間隔的時間長達1s而不引發通信故障,該模式采用縱向(xiàng)冗餘校驗(Longitudinal Redundancy Check ,LRC)) 的方(fāng)法(fǎ)來檢驗錯誤,當控製器設為在Modbus 網絡上以RTU 模式通信,消息中的(de)每個8Bit 字節(jiē)都包含兩個4 Bit 的十六進製字符,這(zhè)種模式沒有開始和結束標記。其優點(diǎn)是: 在同樣的波特率下,可傳送更多的數據。
在(zài)RTU(RemoteTerminal Unit)模式下,每個字節可以傳輸兩個十六進製字符,比如十六進製數0xAF,直接以(yǐ)十六進製0xAF(二進製:10101111)進行(háng)發送,因此它的發送密度比ASCII模式高(gāo)一(yī)倍;RTU模式采用循環冗餘校驗(CRC),下麵是對(duì)RTU模式的(de)總結:
具體格式如下(xià)圖所示:
06 Modbus TCP及其注意點
6.1 主機和從機、服務端和客戶端
在modbus協議中:主機發送modbus請求,從機根據請求內容向主機(jī)返回響應。在modbus協議中,主機總是(shì)主動方,從機總是被動方。
在網絡應用中:在網絡應用中存在客戶端和(hé)服務器端(duān),客戶端(例如瀏覽器)發送請求到服務器,服務器向客戶端返回內(nèi)容(例如HTML文本)。
在modbus tcp中:主機是客戶端,而從機是服(fú)務器端。千萬不要以(yǐ)為服務器端重要,主機也重要,所以主機(jī)就是服務(wù)器端(duān)。
modbus TCP和modbus RTU基本相同,但是也存在一些區別:
a.從機(jī)地址變得不再重要,多數情況下忽略。從某(mǒu)種意(yì)義上說從(cóng)機地址被IP地址取代;
b.CRC校驗變得不再重要,甚至(zhì)可以忽略。由於TCP數(shù)據包中已經存在校驗,為了不重複造輪子,modbus TCP幹脆取消了CRC校驗。
TCP 模式是為了讓(ràng)Modbus 數據順利在以太網上傳輸產生(shēng)的,使用TCP502 端口。該協議物(wù)理層,數據鏈路層,網絡層,傳輸層都是基於TCP 協議,隻在應用層,將Modbus 協(xié)議修改後封裝進去; 接收端(duān)將該TCP 數(shù)據包拆(chāi)封後,重新獲得原始Modbus 幀,然後(hòu)按照Modbus 協議規範進行解析,並將返回的(de)數據包重新封裝進TCP 協議中,返回到發(fā)送端。與串行鏈路傳(chuán)輸的(de)數據格式不同,TCP 模式去除了附加地址(zhǐ)和(hé)校驗,增加了報文頭,其(qí)具體格(gé)式如圖4所示。
在modbus TCP中包含一個MBAP頭,該頭包含以下幾個部分:
區域 | 長度 | 描述 | 客戶端 | 服務器 |
傳(chuán)輸標誌 |
2字節 |
MODBUS 請求(qiú)和響應傳輸過程中序列號 |
客戶端生成(chéng) |
應答時複製該值 |
協議標誌 |
2字節 |
Modbus協議(yì)默認為0 |
客(kè)戶端生成 |
應答時複製該值 |
長度 |
2字節 |
剩餘部分的長度 |
客戶端生成 |
應答時由服務器端生成 |
單元標誌 |
1字節(jiē) |
從機標誌(從機地址) |
客戶端生成 |
應答時複製該值 |
注(zhù)意:
a.傳輸(shū)標誌可理解為序列號,防止 MODBUS TCP通信錯位,例如後發生的響(xiǎng)應先到了(le)主機,而早(zǎo)發生的響應後到(dào)主機;
b.單元標誌可理解為從機地址,此時已經不再重要。
modbus TCP可以理解為發(fā)生在TCP上(shàng)的應用層協議,既然是TCP協(xié)議那麽(me)一個完整的MODBUSTCP報文必然包括(kuò)TCP首部,IP首部和Ethernet首(shǒu)部。
07 功能碼作用
啟動Modbus事務處理的客戶機創建Modbus應用數據單元。功能碼(PDU中的)向服務器指示將執行哪種操作。
用(yòng)一個字節編碼Modbus數據單元(yuán)的功能碼域。有效範圍(wéi)是十製(zhì)製1-255(128-255為(wéi)異(yì)常響應保留)。當從客戶機向服務器發送報文時,功能碼域通過服務器執(zhí)行哪種操作。
從客戶機向服務器發送的報文數(shù)據域(yù)包括附加信(xìn)息,服務器使用這個(gè)信息執行功能碼定義(yì)的操作(zuò)。這個(gè)域還包括離散項目和寄存器地址、處理項目(mù)的數量以及域中的實際數據字節數。
在某種請求中,數據域可以是不存在的,在此(cǐ)情況下服務器不需要任何(hé)附加信息。功(gōng)能碼僅說明操作。
功能碼的類型:
功能碼(mǎ)主要分為有效功能碼、異常功能碼和錯誤功能碼(mǎ)。如果在一個正確接收Modbus ADU中,不出現與請求Modbus功能有關的差錯,那(nà)麽服務器至客戶機(jī)的響應數據會包含請求中的正常功能碼。如果出現與請求Modbus功能有關的差錯,那麽響應數據會包含一個異常碼(mǎ)和錯誤碼。
例如,客戶(hù)機能夠讀一組離散量輸出或輸入的(de)開/關狀態,或者用戶能夠讀/寫一組寄(jì)存器數據內容。當服務器對客戶機響應時,它使用功能碼域來指示正常(cháng)(無差錯)響應或出現某(mǒu)種差錯(稱為異常響(xiǎng)應)。對於一(yī)個(gè)正常響應來說,服務器僅對原始功能碼響應。
對於異常(cháng)響應,服務器(qì)返回一個與客戶(hù)機(jī)等同的碼,設置該原始(shǐ)功能碼的最高有效位(wèi)為邏輯1,並加該異常碼(mǎ)後增加錯誤碼,以通知客戶機異常原(yuán)因。
有效功能碼:
有效功能碼(mǎ)有二十幾種,但是一般使用上都以1、2、3、4、5、6、15、16等八種最為常用,以及(jí)另外(wài)特殊使用的20、21兩種,此為General Reference Register,絕大部(bù)份的Modbus設備並不會提供此Register。於PLC上主要的控製數據有下列四(sì)種型式。此八種功能碼就是處理這些(xiē)控製(zhì)資料,詳細說明如(rú)下各點:
控製數據(jù)四種型式:
DI:DigitalInput(數字輸入,離散輸入),一(yī)個地址一個數據位,用戶隻能讀取它的狀態,不能修(xiū)改。以一個 bit表示 On/Off,用來記錄(lù)控製信號的狀態輸入,例如:開關,接觸點,馬達運轉,超限switch…等等。於PLC上被稱(chēng)為Input relay、input coil等。
DO:DigitalOutput(數字輸出,線圈輸出),一個地址一個數據位,用戶可以置位、複位,可以回讀狀態。以一個 bit表示 On/Off,用來輸出控(kòng)製信號,以激活或停止馬達,警鈴,燈光…等等。於(yú)PLC上被稱為Output relay、Output coil等。
AI:Analog Input(模擬輸入,輸入寄存器),一個地址16位數據,用戶隻能讀(dú),不能修改,,以16 bits integer表示一個數值,用來記錄控製信號(hào)的數值輸入,例如:溫度、流量、料量、速度、轉速、文件(jiàn)板開度、液位、重量…等等(děng)。於PLC上被稱為Input register。
AO:AnalogOutput(模擬輸出,保持寄存器),一個地址16位數據,用戶可以寫,也可以回讀,以(yǐ)16 bits integer表示一個數值,用來輸出控製信號的數值,例如:溫度、流量、速度、轉速、文件板開度、飼料量…等等設(shè)定值(zhí)。於PLC上被稱為(wéi)Output register、Holding register。
08 Modbus協議安全分析
Modbus 協議是典型的工控網協議,研究其安全性對於加強工業控製網絡的安全性有重要意義。一般來說,協(xié)議(yì)安全性問題可以分為兩種,一種是(shì)協議自身的(de)設計和(hé)描(miáo)述引(yǐn)起的安全問題; 另一種是協議的不正確實現引起(qǐ)的(de)安(ān)全問題。Modbus 協議也存在著這兩方麵的問題。
絕大多數工控協(xié)議在設計之初,僅僅考慮了功能實現、提高效率、提高可靠(kào)性等方麵,而沒考慮過安全性問題。Modbus 協議也不例外,盡管其已經成為事實上的工業標準。從前麵原理分(fèn)析可以看(kàn)出其本身的安全性問題是: 缺乏(fá)認(rèn)證、授權、加密等安全防護機製和功能碼(mǎ)濫用問題。
(1)缺(quē)乏認證
認證的(de)目的是(shì)保證收到的信息來自合法的用戶,未認證用戶向設備發送控製命令不會被執行。在Modbus 協議通信過程中,沒有任何認證方麵的相關定義,攻擊(jī)者隻(zhī)需要找到一個合(hé)法的地址就可以使用功能碼就能建(jiàn)立一個Modbus 通信會話,從而擾亂整個或者部分控製過程。
(2)缺(quē)乏授權
授權是保(bǎo)證不同的特權操作需要由擁有不同權限的認證用戶來完成,這樣可大(dà)大降低誤操作與內部攻擊的概率(lǜ)。目前,Modbus 協(xié)議沒有基於角色的訪問控製機製,也沒有對用戶分類,沒有對用戶的權限進行劃分,這會導(dǎo)致任意用戶可(kě)以執行(háng)任(rèn)意(yì)功能。
(3)缺乏(fá)加密
加密可(kě)以保證通信(xìn)過程中(zhōng)雙方的信息不被第三方非法獲取。Modbus 協議通信過(guò)程中,地址和命令全部采用明文傳輸(shū),因此數據可以很容易的(de)被攻擊者捕獲和解(jiě)析,為攻擊者提供便利。
(4)功能碼(mǎ)濫(làn)用
功能碼是Modbus 協議中的一項重要(yào)內容,幾乎所有的通信都包含功(gōng)能碼。目前,功能(néng)碼濫用是導致Modbus 網絡異常的一個主要因素。例如不合法報文長度,短周期的無用命令,不正確的報文長度,確認異常代碼延遲等都(dōu)有可能導致拒(jù)絕服務攻擊(jī)。
雖然Modbus 協議獲得了廣泛的應用,但是在實(shí)現具體的工業控(kòng)製係統時,開發者並不具備安全(quán)知識或者沒有意識到安全問題。這樣就導致(zhì)了使用Modbus 協議的係(xì)統中可能存在各種(zhǒng)各樣的安全漏洞。
(1)設計安全問題
Modbus 係(xì)統開發者重點關注(zhù)的是其功能實現問題,安全問題在設計時很少被注意到。設計安全是指設計時(shí)充分考慮安全性,解決Modbus 係統可能出現的各(gè)種異常和非(fēi)法操(cāo)作等問題。比如在通信(xìn)過程中,某個節點被惡意控製後發出非法(fǎ)數(shù)據,就需要考(kǎo)慮這些數據的判別(bié)和處理問題。
(2)緩衝區溢出漏洞
緩衝區(qū)溢出(chū)是指在向緩衝區內填充數據時超過了緩衝(chōng)區本身的容量導致(zhì)溢(yì)出的數據覆蓋在合法數據上,這是在軟件(jiàn)開(kāi)發中最常見也是(shì)非常危險(xiǎn)的漏洞,可以導致係統崩(bēng)潰,或者被攻擊者利用來控製(zhì)係統。
Modbus 係統開發者(zhě)大多不具備安全開發知(zhī)識,這(zhè)樣(yàng)就會產生很多的(de)緩衝區溢出漏洞,一旦被惡意者利用會導致嚴重的後果(guǒ)。
(3)Modbus TCP 安全問題
目前,Modbus 協議已經可以在通用計算機和通用操作係統上實現,運行於TCP /IP 之上(shàng)以滿足(zú)發展需要。這樣,TCP /IP 協議自身存在的安全問題不可避免地會影響到工控網絡(luò)安全。非法網絡(luò)數據獲取,中間人,拒絕服務, IP 欺騙,病毒木馬等在IP 互聯網中的常用攻擊手段都會影(yǐng)響Modbus 係統安全。
目前,Modbus 係統采(cǎi)取的安(ān)全防護措施普遍不足,這裏(lǐ)參考信息安全(quán)業內研究並結合工控係(xì)統自身的安全問題,提出了一些安全建議,能夠有(yǒu)效地降低工業控製係統麵臨的威脅。
(1)從源頭開始
工控網(wǎng)絡漏洞,很大一部分是其實現過程出現的漏洞。如果從源頭開始控製,從Modbus 係統的需求設計(jì)、開(kāi)發實現、內部測試和部署等階段,全生命周期的介入安全手段,融入(rù)安全設計、安全(quán)編碼以及安全測試等技術,可以極大地消除安全漏洞,降低整個Modbus 係統的安全風險。
(2)異常行為檢測
異常行為代(dài)表著可能發生威脅,不管是有沒有攻擊者,因(yīn)此開發針對Modbus 係統的專用異常行為檢測設備可以極大提高工(gōng)控網絡的安全性。針對Modbus 係統,首先要分析其存在的各種(zhǒng)操作行為,依據“主體,地點,時間,訪問方式,操作,客體”等行為描述成一個六元組模型; 進而分析其行為是(shì)否屬於異(yì)常; 最終決定(dìng)采取記(jì)錄或者報警等措施。
(3)安全(quán)審(shěn)計(jì)
Modbus 的安全審計就是對(duì)協議數據進行(háng)深度解碼分析,記錄操作的時間(jiān)、地點、操作者和(hé)操作行為等關鍵信息,實現對Modbus 係統的安全審計日誌記錄(lù)和審計功能,從而提供安全事件(jiàn)爆發後的時候追(zhuī)查能力。
(4)使用網絡安全設備
使用入侵防禦和防火牆等網絡安全設備。防火牆(qiáng)是一個串行(háng)設(shè)備,通過設置,隻允許特定的地址訪(fǎng)問服務端,禁止外部地址訪問Modbus 服務器,可以有效的防(fáng)止外部入(rù)侵; 入侵(qīn)防(fáng)禦設備(bèi)可以分析Modbus協議(yì)的具體操作內容,有效地檢測並阻止來自內部(bù)/外(wài)部的異常操作和(hé)各種滲透攻擊行為,對內網(wǎng)提供保護功能。
本文來源於網(wǎng)絡,版權歸原作者所有,但因轉載眾多,無法確(què)認原作(zuò)者,故僅標(biāo)明轉載來源。