分模塊概述Snort插件機制
Snort作為一款輕量級的入侵檢測系統,其廣受追捧的原因不僅是免費的特性,并且Snort插件機制也是十分完善的。本篇文章簡單的通過分模塊來概述Snort插件機制
1. 預處理插件
以spp_開頭的文件。預處理插件在規則匹配誤用檢測之前運行,完成的功能主要為
①模擬TCP/IP堆棧功能的插件,如TIP碎片重組、TCP流重組插件
②各種解碼插件:http解碼插件、unicode解碼插件、rpc解碼插件、telnet解碼插件等
③規則匹配無法進行攻擊檢測時所用的插件:端口掃描插件、spade異常入侵檢測插件、bo檢測插件、arp欺騙檢測插件等。從各預處理插件文件名可對此插件功能做出推斷。
2. 處理插件
以sp_開頭的文件。處理插件在規則匹配階段的ParseRuleOption中被調用,輔助完成基于規則的匹配過程。每個規則處理函數通常對應規則的選項中的一個關鍵字,實現對這個關鍵字的解釋。其主要功能為:
①檢查協議各字段,如TCPFlag、IcmpType、IpId、FragBits、Rpc、Dsize等;
②輔助功能,例如關閉連接、會話記錄、攻擊響應、嚴重級別等。
3. 輸出插件
以spo_開頭的文件,又分為日志和警告兩種類型在兩個列表中,在規則匹配過程中和匹配結束后調用,以便記錄日志和警告。如同其它插件,它們也對應一個關鍵字,規則中相應關鍵字將激活這些插件的運行。輸出插件和預處理插件除了注冊到不同的列表中之外,其它的過程很相似處理插件的過程其實也是大同小異,只是在初始化過程中有所不同而己。輸出和預處理插件的初始化通常只有一次,在內存中只有一個實例,所以被注冊到一個列表中處理插件則完成每個匹配規則的一部分功能,所以處理插件為每個匹配規則初始化一次,然后插入到規則樹。
4. Snort的總體流程
Snort的入侵檢測流程分成兩大步第I步是規則的解析流程,包括從規則文件中讀取規則和在內存中組織規則,其過程為
①讀取規則文件
②依次讀取每條規則
③解析規則,用相應的規則語法表示
④在內存中對規則進行組織,建立規則語法樹。
第II步是使用這些規則進行匹配的入侵流程。其過程為對從網絡上捕獲的每一條數據報文和在第I步建立的規則樹進行匹配,若發現存在一條規則匹配該報文,就表示檢測到一個攻擊,然后按照規則規定的行為進行處理若搜索完所有的規則都沒有找到匹配的規則,則視此報文正常。以上即是對總體架構的梗概分析。
【編輯推薦】