<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 手機與無(wú)線(xiàn)通信 > 設計應用 > 基于網(wǎng)絡(luò )引擎入侵檢測系統的研究與實(shí)現

基于網(wǎng)絡(luò )引擎入侵檢測系統的研究與實(shí)現

作者: 時(shí)間:2011-08-01 來(lái)源:網(wǎng)絡(luò ) 收藏

3)數據分析 數據分析模塊的功能是分析某一特定協(xié)議數據。一個(gè)數據分析函數檢查一種協(xié)議類(lèi)型的,這樣可以方便地進(jìn)行配置。一個(gè)協(xié)議數據可能有多個(gè)數據分析函數來(lái)處理它,這些函數地被放到一個(gè)鏈表中。一般情況下,數據分析盡可能地放到樹(shù)結構的葉子節點(diǎn)上或盡可能地靠近葉子節點(diǎn),因為樹(shù)根部分調用次數最多,過(guò)多的數據分析函數聚集在此會(huì )嚴重影響系統的性能。同時(shí)葉子節點(diǎn)上的協(xié)議明確,分析程序可以少做一些冗余的工作,也由此提高了系統的處理速度。數據分析函數不僅僅由數據包觸發(fā),也可以是系統定義的某一個(gè)事件來(lái)觸發(fā)。如時(shí)間、特定的數據包到來(lái)、管理員啟動(dòng)、某種數據分析的結果等都可以觸發(fā)一個(gè)數據分析函數的啟動(dòng)檢測。這些靈活的觸發(fā)方式提供了良好的可配置性,也提供了一個(gè)開(kāi)放的、分布的平臺使各種分析技術(shù)在一個(gè)系統中工作。
數據分析的方法是的核心。使用了快速的模式匹配算法,所有的攻擊方法被表示為模式信號,存放在特征數據庫中,當前的數據如果和數據庫中某種特征匹配,就指出這是這種入侵行為。如發(fā)現一個(gè)HTTP請求某個(gè)服務(wù)器上的“/cgi—bin/phf”,這很可能是一個(gè)攻擊者正在尋找系統的CGI漏洞。
本文設計這個(gè)體系結構時(shí)充分考慮了系統的開(kāi)放性,可以向系統中添加任何一種分析方法,也可以把多種分析方法同時(shí)運用到系統中,甚至在不關(guān)閉系統的狀態(tài)下向系統動(dòng)態(tài)地添加新的數據分析功能。這充分保證了系統的可靠安全服務(wù)。動(dòng)態(tài)添加數據分析功能是通過(guò)添加新的動(dòng)態(tài)連接庫中的數據分析函數來(lái)的。對于已經(jīng)有的分析功能,可以在入侵特征數據庫中添加新的入侵特征,以增強現有模式匹配分析方法的檢測能力。

2 檢測規則和匹配算法
中,最為關(guān)鍵的部分是數據分析模塊。該模塊中涉及到兩個(gè)問(wèn)題:如何描述入侵行為;使用什么算法來(lái)快速檢測入侵行為的存在。
中,本文使用了與SNORT兼容的檢測規則來(lái)描述入侵行為,使用一種改進(jìn)的Boyer-Moore-Horspool算法來(lái)進(jìn)行匹配。模式匹配是第一代和第二代入侵所使用的攻擊特征的數據包分析技術(shù)。它的分析速度快、誤報率小等優(yōu)點(diǎn)是其他分析方法不可比擬的。協(xié)議分析有效利用了協(xié)議的層次性和相關(guān)協(xié)議的知識,快速地判斷攻擊特征是否存在。它的高效使得匹配的計算量大幅度減小。
本文在網(wǎng)絡(luò )的數據分析模塊中使用協(xié)議分析和模式匹配結合的方法來(lái)分析網(wǎng)絡(luò )數據包。首先使用協(xié)議分析來(lái)判斷要進(jìn)行哪種類(lèi)型的特征檢測,然后使用檢測規則來(lái)進(jìn)行匹配。
2.1 檢測規則
每一個(gè)模式匹配的人檢測方法都需要一個(gè)已定的入侵模式。這就需要一種對入侵行為的描述方法?,F在的各種入侵中的描述方法各有不同,每個(gè)廠(chǎng)商定義自己的描述方法,每種方法各有優(yōu)缺點(diǎn)。在網(wǎng)安入侵檢測系統中,采用了Snort的入侵行為描述方法。Snort是一個(gè)開(kāi)放源代碼的輕量級的網(wǎng)絡(luò )的入侵檢測系統。這種描述方法簡(jiǎn)單、易于實(shí)現,能夠描述絕大多數的入侵行為。由于其簡(jiǎn)單,因此檢測速度比較快。每條規則分為邏輯上的兩部分:規則頭部和規則選項。規則頭部包含規則的操作、協(xié)議、源IP地址和目標IP地址及其網(wǎng)絡(luò )掩碼和端口。規則選項包括報警信息及需要檢測模式信息。以下是一個(gè)例子:
alert tcp any any->192.168.1.0/24 111(content:“|00 01 86 a5|”;msg:“mounted access”;)
以上規則描述了:任何使用TCP協(xié)議連接網(wǎng)絡(luò )IP地址192.168.1.1到192.168.1.255的任何主機的111端口的數據包中,如果出現了二進(jìn)制數據00 01 86 a5,便發(fā)出警告信息mounted access。在圓括號前的部分是規則頭部,在圓括號中的部分是規則選項。規則選項部分中冒號前面的詞組稱(chēng)為選項關(guān)鍵字。規則選項不是規則的必需部分,它只是用來(lái)定義收集特定數據包的特定特征。一條規則中不同部分必須同時(shí)滿(mǎn)足才能執行,相當于“與”操作。而同一個(gè)規則數據庫文件中的所有規則之間相當于一個(gè)“或”操作。規則頭部包含了定義數據包“從哪里來(lái),到什么地方去、干什么”以及發(fā)現滿(mǎn)足這個(gè)規則所有條件的數據包時(shí)應該干什么的信息。規則的第一項是規則操作,第二項是協(xié)議,第三項是IP地址和端口。規則操作說(shuō)明當發(fā)現適合條件的數據包時(shí)應該做些什么。有3種操作:alert、log和pass。
alert:使用選定的告警方法產(chǎn)生警報,并記錄這個(gè)數據包。
log:記錄該數據包。
pass:忽略該數據包。
規則頭部的第二部分是協(xié)議。
規則頭部的第三部分是IP地址和端口。關(guān)鍵字“any”可以用來(lái)定義任何IP地址。網(wǎng)絡(luò )不提供從主機名稱(chēng)到IP地址的轉換,所以IP地址規定為點(diǎn)分十進(jìn)制的IP地址格式,在IP地址后指定網(wǎng)絡(luò )掩碼。例如任何由外部網(wǎng)絡(luò )發(fā)起的連接可以表示為:
alert tcp ! 192.168.1.0/24 any->192.168.1.0/24 111
端口號可以用幾種方法指定:用“any”、數字、范圍以及用“非”操作符。“any”指定任意端口。靜態(tài)數值指定一個(gè)單一端口,如80為HTYP,23為T(mén)ELNET等。指定端口范圍用“:”,它可以指定一個(gè)范圍內的所有端口。如:
log udp any any->192.168.1.0/24 1:1024
記錄從任意主機發(fā)起的到目標網(wǎng)絡(luò )的任何主機上的1~1 024端口的UDP協(xié)議數據包。
log tcp any any->192.168.1.0/24:6000
記錄從任意主機發(fā)起的到目標網(wǎng)絡(luò )的任何主機上的端口號小于等于6 000的TCP協(xié)議數據。
log top any:1024->192.168.1.0/24 500:
2.2 匹配算法
匹配算法是檢測引擎的關(guān)鍵,它直接影響系統的實(shí)時(shí)性能。在網(wǎng)絡(luò )數據包搜索入侵特征時(shí),需要一個(gè)有效的字符串搜索算法。字符串搜索算法中,最著(zhù)名的兩個(gè)是KMP算法(Knuth-Morris-Pratt)和BM算法(Boyer-Moore)。兩個(gè)算法在最壞情況下均具有線(xiàn)性的搜索時(shí)間。在實(shí)用上,KMP算法并不比最簡(jiǎn)單的c庫函數strstr()快多少,而B(niǎo)M算法則往往比KMP算法快上3~5倍。但是BM算法還不是最快的算法,還有很多改進(jìn)的BM算法存在。
第一次匹配結果是在第二個(gè)字符處發(fā)現不匹配,于是要把子串往后移動(dòng)。但是該移動(dòng)多少呢?最簡(jiǎn)單的做法是移動(dòng)一個(gè)字符位置;KMP是利用已經(jīng)匹配部分的信息來(lái)移動(dòng);BM算法是做反向比較,并根據已經(jīng)匹配的部分來(lái)確定移動(dòng)量。Boyer-Moore-Hompool算法根據被比較串對齊的最后一個(gè)字符(r)來(lái)決定位移量的多少。本文的方法是根據緊跟在當前子串之后的那個(gè)字符(例子中的i)獲得位移量。
顯然,由于上一次匹配的失敗,移動(dòng)是必然的,因此,設移動(dòng)步數為N,則N≥1。但N的最大值是多少?如果這個(gè)字符在模式串中,顯然應該根據模式串的位置來(lái)決定。如果它在模式串中就沒(méi)有出現,顯然連它自己也不用比較了,因此可以移動(dòng)到該字符的下一個(gè)字符開(kāi)始比較。以上面的例子,子串“search”中并不存在“i”,則說(shuō)明可以直接跳過(guò)一大片,從“i”之后的那個(gè)字符開(kāi)始作下一步的比較,如下:
substring searching procedure
search^
比較的結果,第1個(gè)字符又不匹配,再看子串后面的那個(gè)字符,是“r”,它在子串中出現在倒數第3位,于是把子串向前移動(dòng)3位,使2個(gè)“r”對齊,如下:
substring searching procedure
search
這次匹配成功了?;仡櫿麄€(gè)過(guò)程,只移動(dòng)了兩次子串就找到了匹配位置,可以看出,用這個(gè)算法,每一步的移動(dòng)量都比BMH算法要大,所以比BMH算法更快。
以下是用類(lèi)封裝的搜索算法:
c.jpg

c++相關(guān)文章:c++教程




評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>