snort規則檢測引擎初探

2021-08-03 06:20:35 字數 1624 閱讀 3509

目前的產品開發過程中,涉及到了對應用層協議型別的檢測。考慮到要構建高效的規則匹配引擎,於是再次研究了snort的規則引擎。

主要目的還是開闊下設計思路和借鑑一些方法。

良好的規則設計是今後配置規則和擴充套件的基礎。

snort 採用資料結構 ruletreenodes(rtn) 和 opttreenodes(otn) 儲存規則資料, 形成二維鍊錶結構。有關 snort 所用到的資料結構參考原始碼資料報 rules. h 檔案。rtns 組成橫向鍊錶, 每個rt n節點下又由多個otns組成縱向鍊錶, 進而構成1棵規則樹, 這樣每1個otn節點就對應1條規則。規則邏輯圖如下圖所示。1個rtn對應著若干個otn, 這就是snort組織規則庫的特點。如果在1個規則檔案中定義了n條檢測x攻擊活動的規則, 而且它們具有相同的源/目的的ip(src/des ip)和埠號(src/ des port), 為了加快檢測速度, 這n條檢測規則就共用1個煉表頭(chain header) , 其中記錄了源/目的 ip 和埠號, 而每條規則的檢測特徵將儲存到不同的鍊錶選項(chain option) 結構中, 這樣在進行規則檢測時只檢測 1 次 rtn。

摘錄:snort規則庫的研究與改進_王喆.pdf

規則樹的生成,如果snort以網路入侵檢測的模式執行,在對網路資料報進行檢測前,首先要對規則檔案(snort.conf)進行解析,建立規則庫。在組織規則庫時,首先按規則型別(規則行為:alert,pass,log,activation,dynamic)分類,針對每種規則型別按協議型別(ip/tcp/icmp/uolp)分成相應鍊錶。所有的規則都會被分配到這些鍊錶中。通過原始碼分析,這一過程用到的主要函式是parserulesfile(),parserule(),pro-cessheadnode()和parseruleoptions()。parserule()處理單個規則。它對規則語句進行分解,提取規則型別,如果是alert,pass,log,active或dynamic型別,則利用processheadnode()和parseruleoptions(),按協議的不同完成相應煉表頭和鍊錶選項的新增,從而形成規則樹。在按規則型別進行處理還有preprocess,output等型別,遇到這些型別的規則,則呼叫相應的函式對其進行預處理外掛程式或者輸出外掛程式的解析。

摘錄:snort規則及規則處理模組分析.pdf

在 snort 的入侵檢測模式中,基於規則的模式匹配是其檢測的核心機制。它的入侵檢測流程分成

兩大步:第一步是規則的解析流程,包括從規則檔案中讀取規則和在記憶體中組織規則;第二步是使

用這些規則進行匹配。為了提高規則匹配的速度, snort 採用了 boyer-moore 字串匹配演算法、二維

列表遞迴檢索( rtn 和 otn)以及函式指標列表等方法。在保持這些方法的基礎上,本文試圖對規

則匹配的次序進行動態調整,以提高資料報匹配效率,從而提高 snort 的整體效能。

利用高效的ac匹配演算法;

針對跨包是將一條流多個包組合層乙個大包,不支援跨包;

1、規則引擎的構建需要以上幾個步驟完成;良好的規則設計可以方便以後針對漏洞的暴露新增規則;

2、規則高效的資料結構組織;

3、如何優化規則匹配演算法;

4、對於跨包的檢測;

snort 檢測nmap snort 檢測

snort 檢測 snort 檢測系統 系統環境 rhel6 x86 64 selinux and iptables disabled 1.snort 安裝 yum install y gcc mysql mysql server mysql devel flex bsion pcre devel ...

snort 規則編寫

snort規則分為兩個部分 規則的頭部和規則選項。首先,規則頭部包含著規則 動作 協議 源位址和目標位址 源埠 目標埠。第二部分是規則選項,它包含著乙個警告訊息和某資料報有關部分的資訊 如果要採取某個動作的話,就應當看一些這種資訊 例如 alert tcp any any 192.168.1.0 2...

Web流量檢測與繞過(基於Snort規則)

流量特徵處理 實戰snort是乙個翻譯,他自己不會說英文 抓包 只會把聽到的英文 從libpcap抓到的包 翻譯成中國話說出來 分析後,展示給我們 snort2.9以上的版本能把更多語言翻譯成中國話 支援更多抓包的框架 能翻譯了,比如 one對應一,handsome boy對應大瑞大 優美的中國話 ...