999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

入侵檢測系統Snort工作原理簡析

2009-04-29 00:00:00晏金,苗放
電腦知識與技術 2009年25期

摘要:Snort是基于特征檢測的IDS (Intrusion Detection System),使用規則的定義來檢查網絡中有問題的數據包。Snort主要由四個軟件模塊組成,這些模塊使用插件模式和Snort結合,擴展起來非常方便。這四個主要部件包括包捕獲/解碼引擎、預處理器、檢測引擎、輸出插件。主要介紹了Snort的處理過程以及Snort的四個主要部件的工作原理。

關鍵詞:Snort; 括包捕獲/解碼引擎;預處理器;檢測引擎;輸出插件

中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2009)25-7105-03

Analyse the Working Principle of Intrusion Detection System with Snort

YAN Jin, MIAO Fang

(College of Information Engineering, Chengdu University of Technology, Chengdu 610059, China)

Abstract: Snort is a signature-based IDS(Intrusion Detection System), uses rules to check for errant packets in network. Snort has four components, most of which take plug-ins to customize Snort implementation.These components include packet capture/decoder engine,preprocessor,detection engine,output plug-ins. This paper porvides a detail introduction of Snort process and the four main components of Snort.

Key words:Snort; packet capture/decoder engine; preprocessor; detection engine; output plug-ins

隨著計算機及網絡的飛速發展,當越來越多的公司及個人成為Internet用戶后,計算機網絡安全作為一個無法回避的問題呈現在人們面前。企業和普通用戶傳統上采用防火墻作為網絡安全第一道防線,但是隨著攻擊者知識的日趨成熟,攻擊工具與手法的日趨復雜,單純的防火墻已經無法保護網絡安全。在這樣的背景下,自九十年代以來,入侵檢測一直是一個非?;钴S的研究領域,并產生了很多相應的入侵檢測系統,Snort就是其中最為知名的一個。

1 Snort 簡介

Snort是當前最流行的開放源代碼的NIDS(網絡入侵檢測系統),能夠運行在多種操作系統和硬件平臺上,包括很多不同版本的UNIX和Linux系統,以及Windows系統,硬件平臺包括基于intel、PA-RISC、PowerPC和Sparc的平臺。Snort是基于特征檢測的網絡入侵檢測系統,使用規則的定義來檢查網絡中有問題的數據包。一個規則被觸發后會產生一條告警信息。Snort有很多有用的功能,包括數據包嗅探和數據包記錄,以及入侵檢測。數據包嗅探是Snort最基本的功能,也是Snort工作的開始,Snort取得數據包后先用預處理插件處理,然后經過檢測引擎中的所有規則鏈,如果有符合規則鏈的數據包,就會被檢測出來。

Snort是一個可擴展的入侵檢測框架,Snort的預處理器、檢測引擎和報警模塊都是插件結構,插件程序按照Snort提供的插件函數接口完成,使用時動態加載,在不用修改核心代碼的前提下讓Snort的功能和復雜性擴展更容易。既保障了插件程序和Snort的核心代碼的緊密相關性,又保障了核心代碼的良好擴展性。

2 Snort的工作原理

1) 包捕獲/解碼引擎:首先,利用libpcap從網卡捕獲網絡上的數據包,然后數據包經過解碼引擎填入到鏈路層協議的包結構體中,以便對高層次的協議進行解碼,如TCP和UDP端口。

2) 預處理器插件:接著,數據包被送到各種各樣的預處理器中,在檢測引擎處理之前進行檢查和操作。每個預處理器檢查數據包是否應該注意、報警或者修改某些東西。

3) 規則解析和檢測引擎:然后,包被送到檢測引擎。檢測引擎通過各種規則文件中的不同選項來對每個包的特征和包信息進行單一、簡單的檢測。檢測引擎插件對包提供額外的檢測功能。規則中的每個關鍵字選項對應于檢測引擎插件,能夠提供不同的檢測功能。

4) 輸出插件:Snort通過檢測引擎、預處理器和解碼引擎輸出報警。

2.1 包捕獲/解碼引擎

2.1.1 數據包捕獲

Snort通過兩種機制來滿足網絡流量的需要:將網卡設置為混雜模式;利用libpcap從網卡捕獲網絡數據包。

網卡的默認工作方式是忽略所有不是自己的MAC地址為目的地址的流量。通過將網卡設置成混雜模式,可以監聽網絡中的所有流量。

數據包捕獲函數庫是一個獨立的軟件工具,數據包捕獲庫函數能直接從網卡獲取數據包。Snort就是通過調用該庫函數從網絡設備上捕獲數據包。它工作在OSI模型的數據鏈路層。在不同的平臺上使用Snort系統,需要安裝不同版本的Libpcap,比如在Linux和Unix系統下需要安裝Libpcap,而在Windows系列系統下,就需要安裝Winpcap。

2.1.2 包解碼

對已經到達網卡并且被lipcap庫函數捕獲的數據包,Snort需調用解碼引擎對數據鏈路層的原始數據包進行解碼。Snort能夠識別以太網、802.11(無線局域網協議)、令牌環以及諸如IP、TCP和UDP等高層協議。Snort將捕獲的數據包解析后,存儲在內存中指針指向的數據結構中。

2.2 預處理器

Snort卓越的速度源于簡單的規則匹配,如果只對每個包進行數字和字符串的匹配,處理性能就能適應快速的高負載網絡。這種檢測系統的缺點是,如果攻擊模式很常見,就會產生很多誤報。如果模式過于特殊,又會產生漏報。造成這些缺陷的原因是特征語言的表達能力有限或IDS對協議的分析不夠,一些IDS通過復雜的方法解決這一問題。它們有些使用協議異常檢測來對不符合協議規范的包報警,有些則保持連接狀態,并只對處于以連接TCP會話中的包報警。Snort則通過預處理器來實現這些功能,Snort有多個預處理器,包括frag2,stream4,http_decode,Telnet_negotiation,portscan,rpc_decode等常用的預處理器。這些預處理器的主要功能為:

1) 包重組

2) 協議解碼

3) 異常檢測

2.2.1包重組

基于特征的檢測將包數據和定義良好的模式進行匹配。但是不能對跨包的數據進行檢測。通過frag2插件將分片重組到一個完整包中,可以確保攻擊者不能用IP分片來躲避檢測。通過stream4插件進行流重組,我們可以用單包特征機制在TCP會話中跨越多個包進行模式匹配。最后,通過stream4的狀態維護功能,特征匹配可以具備一些智能,來判斷哪些包應該丟棄,哪些包處于鏈接中。用一句話總結,包重組預處理器幫助Snort檢測匹配數據分布在多個包中的攻擊。

2.2.2協議解碼

基于規則的檢測提供簡單的串/位匹配的功能,但無法檢測HTTP協議中不同形式的URL,除非使用無限大的規則集。http_decode預處理器幫助Snort在規則匹配前規范化URL。簡單的規則匹配還可能因為數據中間插入的協議信息而失敗。Telnet_negotiation和rpc_decode預處理器去除數據中不應該進行模式匹配的部分,rpc_decode預處理合并RPC消息分片,Telnet_negotiation預處理器去除Telnet的協議協商過程。用一句話總結,協議解碼預處理對協議數據進行處理,使串匹配功能在更明確的數據上工作。

2.2.3異常檢測

基于規則的檢測由于其簡單性而工作可靠。它的過程精確,可以很容易地調整配置減少誤報,也容易進行優化。但是,有些攻擊無法通過這種模式來檢測。Snort發展了協議異常檢測: portscan預處理器允許Snort跟蹤在一個時間段內接收的掃描類型的包,對超過閾值的情況進行報警;Back Orifice預處理器使Snort不用巨大的規則集就可以檢測加密的Back Orifice流量。

2.3 規則解析和檢測引擎

Snort規則是基于文本的,它通常存在于Snort程序目錄中或者子目錄中。在啟動的時候,Snort讀取所有的規則文件,并且建立一個三維的鏈表。Snort使用列表匹配包和檢測。

2.3.1 規則解析

Snort規則是Snort入侵檢測系統的重要組成部分。規則集是snort的攻擊特庫,每條規則都對應一條攻擊特征,snort通過它來識別攻擊行為。每一條規包括兩個部分:規則頭部(Rule Header)和規則選項(Rule Option)。規則頭包含規則的行為、協議、源地址、目的地址、子網掩碼、源和目的端口信息。規則選項包含報警信息以及規則觸發時提供給管理員的參考信息。例如:

alert tcp any any-> 202.203.112.0/24 any(content:“proxy-connection”; msg:“proxy use”;)

這條規則述信息是:對任何訪問202.203.112網段,tcp報文中含有proxy-connection的流量報警。在這個例子中,左括號前面是規則頭。圓括號內的內容是規則選項,在規則選項中,content 后面的內容為關鍵字,及需要匹配的字符串,msg后面的內容為規則觸發時將顯示的信息。Snort的規則定義中可以沒有規則體,它們只是用來更好地定義所要進行的某種處理(記錄、報警、忽略等)的數據包類型。只有當規則中的每一個元素都為真時,才能觸發對應的規則動作。

2.3.2 檢測引擎

Snort 把具有相同條件的規則鏈接到一個集合中,用RTN結構來描述;規則選項對應于規則選項結點OTN(Optional Tree Node),包含一些特定的檢測標志、報警信息、匹配內容等條件,每個選項的匹配子函數(插件)放到FUNC 鏈表中。只有當規則的各個條件都為真時才觸發相應的操作。Snort 解析規則時,分別生成TCP、UDP、ICMP 和IP 這4 個不同的規則樹,每一個規則樹包含獨立的三維鏈表:RTN(規則頭),OTN(規則選項)和FUNC(指向匹配子函數的指針)。

當Snort 捕獲一個數據報時,首先對其解碼,然后進行預處理,再利用規則樹對數據報進行匹配。在規則樹匹配過程中:根據該數據報的IP 協議決定與哪個規則樹進行匹配;然后與RTN 結點依次進行匹配,當與某個規則頭相匹配時,接著向下與OTN 結點進行匹配。每個OTN 結點都包含了一條規則的全部選項,它包含的一組函數指針就是用來實現對這些條件的匹配操作。當檢測得知數據報與某個OTN 結點的所有條件相符合時,即判斷此數據報為攻擊報文。

為提高規則匹配的速度,Snort 采用了Boyer- Moore 字符串匹配算法、二維列表遞歸檢索(RTN 和OTN)以及函數指針列表(稱為“三維列表”)等方法。

3 輸出插件

抓包引擎從網絡獲取數據包并發送給分析模塊,如果包觸發了報警或日志事件,那么數據就發送給相應的輸出插件。輸出插件在預處理器和抓包引擎執行完之后調用Snort報警和日志子系統時執行。

Snort輸出插件的功能可以分為7個部分:版權和頭信息;頭文件、依賴關系和全局變量;關鍵字注冊;參數分析和函數列表鏈;數據處理,格式化和存儲;處理預處理器參數;清理和退出。下面詳細描述插件的各功能。

1) 版權和頭信息現存的每一個輸出插件都含有鮮明的版權信息,版權信息可以由插件開發者自主添加。插件的頭詳細描述了插件的用途,需要的參數、結果以及其他注釋。

2) 頭文件,依賴關系和全局變量 就絕大部分應用而言,文件以及它們之間的依賴關系對程序至關重要,而且要自釋其意。全局變量在整個插件的任何部分都可以使用。

3) 關鍵字注冊輸出插件通過配置文件和命令行引用和調用。用戶必須為插件定義關鍵字并把該關鍵字連接到Snort,以便分析該關鍵字時作相應的特殊處理。

4) 參數分析和函數列表鏈大部分插件在聲明時需要傳遞參數,因此有必要寫一些代碼來處理這些數據。例如,當使用日志功能時,可能需要指定一個用于存儲日志的日志文件名。除了分析參數,插件還必須鏈接Snort主引擎內的函數。

5) 數據處理、格式化和存儲數據處理、格式化和存儲是插件最主要的功能,可以這么說,如果沒有數據處理、格式化和存儲這些功能,輸出插件就不完整,沒有用。

6) 處理預處理器參數在有預處理器參數存在時,必須寫數據處理代碼來處理這些參數,這樣在分析開始之前,Snort和輸出插件就能區分預處理器單元。

7) 清理和退出,在絕大多數情況下,需要在插件中包含清理內存、應用連接以及打開套接字的退出處理代碼,這樣可以提高Snort的執行效率。

Snort能夠使用輸出插件來匯報和表示數據,Snort支持多種日志格式,包括直接的文本頭、PCAP、UNIX syslog、XML文本數據庫和多種關系數據庫,這些輸出插件使得報警和日志以更加靈活的格式和表現形式呈現給管理員。如果沒有輸出插件來處理、存儲和格式化數據,包分析和流量分析是沒有任何意義的。

4 結論

因為Snort是基于特征/規則匹配的NIDS,所以Snort的檢測速度非常卓越。同時,基于特征/規則匹配的檢測技術不可避免的伴隨著許多漏報和誤報,但是,Snort的設計者具有前瞻性的將所有的Snort模塊都設計成插件模式,擴展非常靈活,各式各樣的插件可以最大限度的避減少漏報和避免誤報??偟膩碚f,對于專業的IDS管理員,根據當前網絡環境合理的配置Snort ,并及時更新規則庫,基本上能夠抵御所有已知的攻擊,和大多數企業級的NIDS一樣,對于新的攻擊手段,Snort“反應”也不夠迅速,Snort需要在異常檢測和主動防御方面繼續加強。

參考文獻:

[1] Brian Caswell,等. Snort2.0入侵檢測[M].宋勁松,譯.北京:國防工業出版社,2004:148-149.

[2] 李洪宇.基于Snort系統特殊字符串匹配算法的研究[D].哈爾濱:哈爾濱理工大學,2005.

[3] 何欣.基于Snort的入侵檢測系統的研究與實現[D].武漢:華中科技大學,2004.

[4] 谷曉鋼,江榮安,趙銘偉.Snort的高校規則匹配算法[J].計算機工程,2006, 32(18):155-156.

[5] 李曉芳,姚遠.入侵檢測工具Snort的研究與使用[J].計算機應用與軟件, 2006, 23(3):123-124.

主站蜘蛛池模板: 日韩欧美国产三级| 男女精品视频| 婷婷开心中文字幕| 四虎综合网| 国产女人在线| 国产成人精品无码一区二| 国产91视频观看| 成人福利在线免费观看| 毛片久久久| 久久男人资源站| 欧美精品1区| 日本欧美中文字幕精品亚洲| 97超级碰碰碰碰精品| 99精品视频在线观看免费播放| 波多野结衣亚洲一区| 狠狠五月天中文字幕| 国产另类视频| 欧美日韩中文字幕在线| 亚洲美女一级毛片| 亚洲精品在线观看91| 中文字幕久久精品波多野结| 免费人成又黄又爽的视频网站| 日韩毛片免费视频| 欧洲亚洲一区| 国产一级毛片网站| 亚洲成人www| 亚洲精品成人片在线播放| 美女高潮全身流白浆福利区| 国产精品永久久久久| P尤物久久99国产综合精品| 99久久99这里只有免费的精品| 国产美女自慰在线观看| 毛片基地视频| 中国毛片网| 色老二精品视频在线观看| 99精品福利视频| 色噜噜狠狠狠综合曰曰曰| 亚洲第一极品精品无码| 99ri国产在线| 亚洲精品无码抽插日韩| 午夜a视频| 三级国产在线观看| 熟妇丰满人妻| 国产精品福利导航| 麻豆精品在线视频| 天天综合色天天综合网| 亚洲bt欧美bt精品| 欧洲欧美人成免费全部视频| 男人的天堂久久精品激情| 国产jizz| 2020久久国产综合精品swag| 国产亚洲精品yxsp| 欧美精品不卡| 一区二区在线视频免费观看| 亚洲精品视频网| 国内99精品激情视频精品| 99ri精品视频在线观看播放| 亚洲最新地址| 亚洲成人播放| 黄色在线不卡| 久热re国产手机在线观看| 亚洲综合久久一本伊一区| 91精品啪在线观看国产| 好吊妞欧美视频免费| 久久久国产精品无码专区| 欧美日本不卡| 97综合久久| 国产精品亚洲片在线va| 国产无遮挡猛进猛出免费软件| 日本五区在线不卡精品| 亚洲视频色图| 国语少妇高潮| aa级毛片毛片免费观看久| 久久久久青草大香线综合精品| 中文字幕免费播放| 成色7777精品在线| 色香蕉网站| 久久情精品国产品免费| 欧美精品三级在线| 热99re99首页精品亚洲五月天| 99久久精品国产精品亚洲| 性做久久久久久久免费看|