一種基于自學(xué)習(xí)規(guī)則的Modbus通信訪問(wèn)控制方法【
技術(shù)領(lǐng)域:
】[0001]本發(fā)明涉及一種針對(duì)Modbus通信的訪問(wèn)控制方法,其可檢測(cè)和防范Modbus主站向Modbus從站發(fā)起的異常請(qǐng)求,屬于工業(yè)控制網(wǎng)絡(luò)安全領(lǐng)域?!?br>背景技術(shù):
】[0002]隨著信息化與工業(yè)化進(jìn)程的不斷交叉融合,信息網(wǎng)絡(luò)技術(shù)在工業(yè)控制系統(tǒng)中得到了普及應(yīng)用,然而現(xiàn)有的工業(yè)控制系統(tǒng)大多未考慮網(wǎng)絡(luò)安全因素,同時(shí)關(guān)于工業(yè)控制系統(tǒng)后門、漏洞及攻擊隱患等方面的信息開始爆發(fā)性的傳播,導(dǎo)致工業(yè)控制系統(tǒng)的信息及網(wǎng)絡(luò)安全攻擊更為容易實(shí)施,工業(yè)控制系統(tǒng)信息安全問(wèn)題日益嚴(yán)峻。[0003]訪問(wèn)控制技術(shù)是一種實(shí)現(xiàn)在不同網(wǎng)絡(luò)或網(wǎng)絡(luò)安全域之間的安全保障方法,它能增強(qiáng)內(nèi)部網(wǎng)絡(luò)的安全性,確定哪些內(nèi)部服務(wù)允許外部訪問(wèn),以及允許哪些外部請(qǐng)求可以訪問(wèn)內(nèi)部服務(wù)。訪問(wèn)控制通過(guò)審查經(jīng)過(guò)的每一個(gè)數(shù)據(jù)包,判斷它是否有匹配的訪問(wèn)控制規(guī)則,根據(jù)規(guī)則的先后順序進(jìn)行一一比較,直到滿足其中的一條規(guī)則為止,然后依據(jù)規(guī)則做出相應(yīng)的處理。如果都不滿足,則采用默認(rèn)的處理操作,從而保護(hù)網(wǎng)絡(luò)的安全。目前的訪問(wèn)控制包括兩種方式:一種是黑名單方式,即阻攔傳輸流通行;另一種是白名單方式,即允許傳輸流通過(guò)。[0004]Netfilter/iptables是Linux下基于數(shù)據(jù)包過(guò)濾的訪問(wèn)控制方法,它在網(wǎng)絡(luò)層位置就可以直接檢查單一數(shù)據(jù)包所承載的數(shù)據(jù)內(nèi)容。Netfilter/iptables在網(wǎng)絡(luò)層截獲網(wǎng)絡(luò)數(shù)據(jù)包,根據(jù)訪問(wèn)控制的規(guī)則表,檢測(cè)網(wǎng)絡(luò)攻擊行為。數(shù)據(jù)包過(guò)濾是指在網(wǎng)絡(luò)層對(duì)數(shù)據(jù)包進(jìn)行分析、選擇,通過(guò)檢查數(shù)據(jù)流中每一個(gè)數(shù)據(jù)包的源IP地址、目的IP地址、源端口號(hào)、目的端口號(hào)、協(xié)議類型等因素或它們的組合來(lái)確定是否允許該數(shù)據(jù)包通過(guò)。[0005]然而,在工業(yè)控制系統(tǒng)中,Modbus協(xié)議是一種應(yīng)用層協(xié)議,現(xiàn)有基于Netfilter/iptables的訪問(wèn)控制方法只能完成數(shù)據(jù)包的網(wǎng)絡(luò)層及傳輸層關(guān)鍵字段的匹配,缺少針對(duì)Modbus協(xié)議的數(shù)據(jù)包深度解析技術(shù),無(wú)法實(shí)現(xiàn)對(duì)Modbus應(yīng)用數(shù)據(jù)的深度解析與檢測(cè)。同時(shí),現(xiàn)有的訪問(wèn)控制規(guī)則僅僅是以手動(dòng)方式輸入,無(wú)法根據(jù)網(wǎng)絡(luò)中捕獲的通信數(shù)據(jù)自動(dòng)生成訪問(wèn)控制規(guī)則?!?br/>發(fā)明內(nèi)容】[0006]有鑒于此,本發(fā)明的目的是提供一種基于自學(xué)習(xí)規(guī)則的Modbus通信訪問(wèn)控制方法,結(jié)合“縱深防御”的思想,解決工業(yè)控制系統(tǒng)脆弱性和安全防護(hù)問(wèn)題,保障工業(yè)控制系統(tǒng)的安全運(yùn)行。[0007]本發(fā)明的進(jìn)一步目的是提供一種基于自學(xué)習(xí)規(guī)則的Modbus通信訪問(wèn)控制方法,針對(duì)工業(yè)控制系統(tǒng)中廣泛使用的Modbus通信協(xié)議,完成應(yīng)用協(xié)議的深度解析,實(shí)現(xiàn)對(duì)Modbus主站與Modbus從站之間進(jìn)行訪問(wèn)控制,檢測(cè)與阻止異常的入侵行為。并且提供自學(xué)習(xí)規(guī)則功能,根據(jù)Modbus主站與Modbus從站之間的通信數(shù)據(jù),自動(dòng)生成Modbus訪問(wèn)控制規(guī)則,符合Modbus通信協(xié)議,提高規(guī)則輸入的效率。[0008]本發(fā)明為實(shí)現(xiàn)上述目的所采用的技術(shù)方案是:一種基于自學(xué)習(xí)規(guī)則的Modbus通信訪問(wèn)控制方法,包括以下步驟:[0009]步驟一:根據(jù)Modbus主站與Modbus從站具體通信情況,設(shè)置白名單或黑名單的Modbus訪問(wèn)控制規(guī)則;[0010]步驟二:利用Netfilter/iptables捕獲Modbus主站與Modbus從站之間通信的數(shù)據(jù)包;[0011]步驟三:將獲得的關(guān)鍵字段信息與設(shè)置的Modbus訪問(wèn)控制規(guī)則進(jìn)行匹配,執(zhí)行相應(yīng)的控制處理操作;[0012]步驟四:捕獲下一個(gè)數(shù)據(jù)包,重新執(zhí)行步驟二和步驟三。[0013]所述白名單或黑名單的Modbus訪問(wèn)控制規(guī)則包括,源IP地址——Modbus主站的IP地址、目的IP地址——Modbus從站的IP地址,目的端口號(hào)——Modbus協(xié)議端口號(hào)502、功能碼-Modbus主站對(duì)Modbus從站的訪問(wèn)操作、起始地址-Modbus主站訪問(wèn)Modbus從站的起始地址、地址數(shù)-Modbus主站從起始地址訪問(wèn)Modbus從站的地址數(shù)量、控制處理操作-允許或不允許Modbus主站訪問(wèn)Modbus從站。[0014]所述訪問(wèn)控制規(guī)則具備自學(xué)習(xí)規(guī)則功能,執(zhí)行如下步驟:[0015]設(shè)置自學(xué)習(xí)規(guī)則功能的自學(xué)習(xí)時(shí)間和自學(xué)習(xí)門限,自學(xué)習(xí)時(shí)間設(shè)置范圍為O?72小時(shí),自學(xué)習(xí)門限為O?10000;[0016]啟動(dòng)自學(xué)習(xí)規(guī)則功能,開始捕獲Modbus主站與Modbus從站之間的通信數(shù)據(jù)包,從通信數(shù)據(jù)包中解析出源IP地址、目的IP地址、目的端口號(hào)、功能碼、起始地址、地址數(shù)信息,存儲(chǔ)至關(guān)鍵參數(shù)數(shù)據(jù)庫(kù),此條信息的計(jì)數(shù)器置I;[0017]捕獲下一個(gè)Modbus通信數(shù)據(jù)包,解析出源IP地址、目的IP地址、目的端口號(hào)、功能碼、起始地址、地址數(shù)信息,將此信息與關(guān)鍵參數(shù)數(shù)據(jù)庫(kù)中的條目進(jìn)行匹配,若匹配成功,則將此條信息所對(duì)應(yīng)的計(jì)數(shù)器加I;若匹配不成功,則將此信息存儲(chǔ)至關(guān)鍵參數(shù)數(shù)據(jù)庫(kù)中,此條信息的計(jì)數(shù)器置I;[0018]對(duì)于每一個(gè)新捕獲的數(shù)據(jù)包,重新執(zhí)行上一步驟,直至到達(dá)設(shè)定的自學(xué)習(xí)時(shí)間;[0019]根據(jù)自學(xué)習(xí)門限及關(guān)鍵參數(shù)數(shù)據(jù)庫(kù)中每一條關(guān)鍵參數(shù)信息的計(jì)數(shù)器值,判斷是否自動(dòng)生成Modbus訪問(wèn)控制規(guī)則。[0020]所述判斷是否自動(dòng)生成Modbus訪問(wèn)控制規(guī)則的判斷準(zhǔn)則如下:若關(guān)鍵參數(shù)數(shù)據(jù)庫(kù)中某一條信息的計(jì)數(shù)器值大于或等于自學(xué)習(xí)門限時(shí),根據(jù)信息自動(dòng)生成Modbus訪問(wèn)控制規(guī)則,同時(shí)刪除此條關(guān)鍵參數(shù)信息;若關(guān)鍵參數(shù)數(shù)據(jù)庫(kù)中某一條關(guān)鍵參數(shù)信息的計(jì)數(shù)器值小于自學(xué)習(xí)門限時(shí),不生成Modbus訪問(wèn)控制規(guī)則,在關(guān)鍵參數(shù)數(shù)據(jù)庫(kù)中刪除相應(yīng)條目的信息。[0021]所述步驟二對(duì)于傳輸層為TCP協(xié)議,首先判斷是否為TCP三次握手?jǐn)?shù)據(jù)包,若是,則放行TCP三次握手?jǐn)?shù)據(jù)包;若不是或者傳輸層為UDP協(xié)議,則解析數(shù)據(jù)包獲得數(shù)據(jù)包的源IP地址、目的IP地址、目的端口號(hào)、Modbus應(yīng)用層數(shù)據(jù)信息,再通過(guò)數(shù)據(jù)包深度解析技術(shù)解析Modbus應(yīng)用層數(shù)據(jù),提取功能碼、起始地址、地址數(shù)信息。[0022]所述放行TCP三次握手?jǐn)?shù)據(jù)包包括以下步驟:[0023]獲取Modbus主站與Modbus從站之間通信的數(shù)據(jù)包的總長(zhǎng)度、IP首部長(zhǎng)度和TCP首部長(zhǎng)度;[0024]判斷數(shù)據(jù)包的總長(zhǎng)度是否等于IP首部長(zhǎng)度和TCP首部長(zhǎng)度之和,若不等于,則執(zhí)行Modbus訪問(wèn)控制規(guī)則的匹配;[0025]若等于,則獲取TCP首部中的syn和ack標(biāo)志位值,判斷syn標(biāo)志位是否為l、ack標(biāo)志位是否是O:若是,則認(rèn)為此數(shù)據(jù)包為TCP連接的第一次握手?jǐn)?shù)據(jù)包,允許此數(shù)據(jù)包通過(guò);[0026]若不是,則判斷syn標(biāo)志位是否為1、ack標(biāo)志位是否是1:若是,則認(rèn)為此數(shù)據(jù)包為TCP連接的第二次握手,允許此數(shù)據(jù)包通過(guò);[0027]若不是,則判斷syn標(biāo)志位是否為O、ack標(biāo)志位是否是1:若是,則認(rèn)為此數(shù)據(jù)包為TCP連接的第三次握手,允許此數(shù)據(jù)包通過(guò);若不是,則丟棄此數(shù)據(jù)包。[0028]所述步驟三對(duì)于白名單方式,將關(guān)鍵字段信息與白名單中的Modbus訪問(wèn)控制規(guī)則自上而下進(jìn)行逐條匹配,若與其中一條匹配,則對(duì)此數(shù)據(jù)包進(jìn)行放行,即允許此數(shù)據(jù)包通過(guò),訪問(wèn)Modbus從站;若與白名單中所有的Modbus訪問(wèn)控制規(guī)則都不匹配,則執(zhí)行白名單默認(rèn)的控制處理操作,對(duì)此數(shù)據(jù)包進(jìn)行丟棄,即不允許此數(shù)據(jù)包通過(guò),禁止訪問(wèn)Modbus從站。[0029]所述步驟三對(duì)于黑名單方式,將關(guān)鍵字段信息與黑名單中的Modbus訪問(wèn)控制規(guī)則自上而下進(jìn)行逐條匹配,若與其中一條匹配,則對(duì)此數(shù)據(jù)包進(jìn)行丟棄,即不允許此數(shù)據(jù)包通過(guò),禁止訪問(wèn)Modbus從站;若與黑名單中所有的Modbu當(dāng)前第1頁(yè)1 2 3