Snort檢測原理與應(yīng)用課件_第1頁
Snort檢測原理與應(yīng)用課件_第2頁
Snort檢測原理與應(yīng)用課件_第3頁
Snort檢測原理與應(yīng)用課件_第4頁
Snort檢測原理與應(yīng)用課件_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

Snort檢測原理與應(yīng)用1、概述2、Snort規(guī)則3、Snort配置4、Snort檢測5、snort安裝1、概述

Snort是一個基于Libpcap的數(shù)據(jù)包嗅探器并可以作為一個輕量級的網(wǎng)絡(luò)入侵檢測系統(tǒng)(NIDS。所謂的輕量級是指在檢測時盡可能低地影響網(wǎng)絡(luò)的正常操作,一個優(yōu)秀的輕量級的NIDS應(yīng)該具備跨系統(tǒng)平臺操作,對系統(tǒng)影響最小等特征并且管理員能夠在短時間內(nèi)通過修改配置進行實時的安全響應(yīng),更為重要的是能夠成為整體安全結(jié)構(gòu)的重要成員。Snort作為其典型范例,首先可以運行在多種操作系統(tǒng)平臺,例如UNIX系列和Win2K(需要LibpcapforWin32的支持),與很多商業(yè)產(chǎn)品相比,它對操作系統(tǒng)的依賴性比較低:其次用戶可以根據(jù)自己的需要在短時間內(nèi)調(diào)整檢測策略。就檢測攻擊的種類來說,據(jù)最新數(shù)據(jù)表明Snort共有2I類共1271條檢測規(guī)則,其中包括對緩沖區(qū)溢出,端口掃描和CGI攻擊等等。Snort集成了多種告警機制來提供實時告警功能,包括:syslog、用戶指定文件、LTNIXSocket、通過SMBClient使用WinPopup對Window客戶端告警。Snort的現(xiàn)實意義是作為開源軟件填補了只有商業(yè)入侵檢測系統(tǒng)的空白,可以幫助中小網(wǎng)絡(luò)的系統(tǒng)管理員有效地監(jiān)視網(wǎng)絡(luò)流量和檢測入侵行為。2、Snort規(guī)則(1)規(guī)則描述語言規(guī)則是特征模式匹配的依據(jù),描述語言易于擴展,功能也比較強大

每條規(guī)則必須在一行中,其規(guī)則解釋器無法對跨行的規(guī)則進行解析邏輯上由規(guī)則頭和規(guī)則選項組成。規(guī)則頭包括:規(guī)則行為、協(xié)議、源/目的IP地址、子網(wǎng)掩碼、方向以及源/目的端口。規(guī)則選項包含報警信息和異常包的信息(特征碼),使用這些特征碼來決定是否采取規(guī)則規(guī)定的行動。

2、Snort規(guī)則(2)規(guī)則描述語言舉例alerttcpanyany->/24111(content:"|000186a5|";msg:"mountdaccess";)

從開頭到最左邊的括號屬于規(guī)則頭部分,括號內(nèi)的部分屬于規(guī)則選項。規(guī)則選項中冒號前面的詞叫做選項關(guān)鍵詞。注意對于每條規(guī)則來說規(guī)則選項不是必需的,它們是為了更加詳細地定義應(yīng)該收集或者報警的數(shù)據(jù)包。只有匹配所有選項的數(shù)據(jù)包,Snort才會執(zhí)行其規(guī)則行為。如果許多選項組合在一起,它們之間是邏輯與的關(guān)系。讓我們從規(guī)則頭開始。

2、Snort規(guī)則(3)規(guī)則頭:哪些數(shù)據(jù)包、數(shù)據(jù)包的來源、什么類型的數(shù)據(jù)包,以及對匹配的數(shù)據(jù)包如何處理。規(guī)則行為(ruleaction):Alert:使用選定的報警方法產(chǎn)生報警信息,并且記錄數(shù)據(jù)包;Log:記錄數(shù)據(jù)包;Pass:忽略數(shù)據(jù)包;Activate:報警,接著打開其它的dynamic規(guī)則;Dynamic:保持空閑狀態(tài),直到被activate規(guī)則激活,作為一條log規(guī)則

2、Snort規(guī)則(4)協(xié)議(protocol):每條規(guī)則的第二項就是協(xié)議項。當(dāng)前,snort能夠分析的協(xié)議是:TCP、UDP和ICMP。將來,可能提供對ARP、ICRP、GRE、OSPF、RIP、IPX等協(xié)議的支持。

IP地址:規(guī)則頭下面的部分就是IP地址和端口信息。關(guān)鍵詞any可以用來定義任意的IP地址。snort不支持對主機名的解析,所以地址只能使用數(shù)字/CIDR的形式,CIDR(無級別域內(nèi)路由)指明應(yīng)用于IP地址的掩碼。/24表示一個C類網(wǎng)絡(luò);/16表示一個B類網(wǎng)絡(luò);而/32表示一臺特定的主機地址。在規(guī)則中,可以使用否定操作符(negationoperator)對IP地址進行操作。它告訴snort除了列出的IP地址外,匹配所有的IP地址。否定操作符使用!表示。例如,使用否定操作符可以很輕松地對上面的規(guī)則進行改寫,使其對從外部網(wǎng)絡(luò)向內(nèi)的數(shù)據(jù)報警。

2、Snort規(guī)則(5)端口號:有幾種方式來指定端口號,包括:any、靜態(tài)端口號(staticport)定義、端口范圍以及使用非操作定義。any表示任意合法的端口號。靜態(tài)端口號表示單個的端口號,例如:111(portmapper)、23(telnet)、80(http)等。使用范圍操作符:可以指定端口號范圍。有幾種方式來使用范圍操作符:達到不同的目的,例如:logudpanyany->/241:1024記錄來自任何端口,其目的端口號在1到1024之間的UDP數(shù)據(jù)包

2、Snort規(guī)則(6)方向操作符(directionoperator):方向操作符->表示數(shù)據(jù)包的流向。它左邊是數(shù)據(jù)包的源地址和源端口,右邊是目的地址和端口。此外,還有一個雙向操作符<>,它使snort對這條規(guī)則中,兩個IP地址/端口之間雙向的數(shù)據(jù)傳輸進行記錄/分析,例如telnet或者POP3對話。下面的規(guī)則表示對一個telnet對話的雙向數(shù)據(jù)傳輸進行記錄:log!/24any<>/2423

2、Snort規(guī)則(7)規(guī)則選項:規(guī)則選項構(gòu)成了snort入侵檢測引擎的核心,它們非常容易使用,同時又很強大和容易擴展。在每條snort規(guī)則中,選項之間使用分號進行分割。規(guī)則選項關(guān)鍵詞和其參數(shù)之間使用冒號分割。下面是一些常用的規(guī)則選項關(guān)鍵詞,其中對部分重要關(guān)鍵詞進行詳細解釋:

2、Snort規(guī)則(8)

msg:在報警和日志中打印的消息;

logto:把日志記錄到一個用戶指定的文件,而不是輸出到標(biāo)準(zhǔn)的輸出文件;

ttl:測試IP包頭的TTL域的值;

tos:測試IP包頭的TOS域的值; id:測試IP分組標(biāo)志符(fragmentID)域是否是一個特定的值

ipoption/fragbits/dsize/flags/seq/……3、Snort配置(1)Snort本身的一些配置,例如變量、預(yù)處理插件、輸出插件、規(guī)則集文件等,也是通過解析規(guī)則進行的。在snort2.0版本中,有一個總體規(guī)則文件snort.conf,大部分配置規(guī)則都在此文件中。3、Snort配置(2)Include

varriables

在snort規(guī)則文件中可以定義變量。格式為:var<name><value>,例如:varMY_NET_x0013_/24,/24]<alerttcpanyany->$MY_NETany(flags:S;msg:"SYNMETApacket";)。最重要的默認變量是HOME_NET、EXTERNAL_NET、HTTP_PORTS、RULE_PATH等,分別表示本地網(wǎng)絡(luò)的IP地址范圍、外部網(wǎng)絡(luò)的IP地址范圍、web服務(wù)的端口、規(guī)則集文件的路徑。

3、Snort配置(3)預(yù)處理器:從snort-1.5開始加入了對預(yù)處理器(也叫預(yù)處理插件)的支持。有了這種支持,用戶和程序員能夠比較容易地編寫模塊化的插件,擴展snort的功能。預(yù)處理器在調(diào)用檢測引擎之前,在數(shù)據(jù)包被解碼之后運行。通過這種機制,snort可以以一種outofband的方式對數(shù)據(jù)包進行修改或者分析。預(yù)處理器可以使用preprocessor關(guān)鍵詞來加載和配置,格式如下:preprocessor<name>:<options>。例如:preprocessorminfrag:128。以下是一個預(yù)處理器的例子:

3、Snort配置(4)l

HTTPdecode預(yù)處理插件:HTTP解碼預(yù)處理模塊用來處理HTTPURI字符串,把它們轉(zhuǎn)換為清晰的ASCII字符串。這樣就可以對抗evasicewebURL掃描程序和能夠避開字符串內(nèi)容分析的惡意攻擊者。這個預(yù)處理模塊使用WEB端口號作為其參數(shù),每個端口號使用空格分開。格式:http_decode:<端口號列表>,例如:preprocessorhttp_decode:8080803、Snort配置(5)輸出插件:snort輸出模塊是從1.6版加入的新特征,使snort的輸出更為靈活。snort調(diào)用其報警或者日志子系統(tǒng)時,就會調(diào)用指定的輸出模塊。設(shè)置輸出模塊的規(guī)則和設(shè)置預(yù)處理模塊的非常相似。在snort配置文件中可以指定多個輸出插件。如果對同一種類型(報警、日志)指定了幾個輸出插件,那么當(dāng)事件發(fā)生時,snort就會順序調(diào)用這些插件。使用標(biāo)準(zhǔn)日志和報警系統(tǒng),默認情況下,輸出模塊就會將數(shù)據(jù)發(fā)送到/var/log/snort目錄,或者用戶使用-l命令行開關(guān)指定的目錄。在規(guī)則文件中,輸出模塊使用output關(guān)鍵詞指定:格式:outputname:<選項>,例如:outputalert_syslog:LOG_AUTHLOG_ALERT。下面是幾個常用的輸出插件:

4、Snort檢測(1)協(xié)議匹配。通過協(xié)議分析模塊,將數(shù)據(jù)包按照協(xié)議分析的結(jié)果對協(xié)議相應(yīng)的部分進行檢測。比如對TCP包的標(biāo)志位的匹配。

alerttcp$EXTERNAL_NETany->$HOME_NETany(msg:"SCANNULL";flags:0;seq:0;ack:0;reference:arachnids,4;classtype:attempted-recon;sid:623;rev:1;)其中就對TCP的flags、seq、ack進行了協(xié)議位置的匹配。協(xié)議匹配需要對特定協(xié)議進行分析,Snort對IP/TCP/UDP/ICMP進行了分析,但是沒有對應(yīng)用協(xié)議分析。其它一些商用的IDS進行了高層的應(yīng)用協(xié)議分析,可以顯著地提高匹配的效率。4、Snort檢測(2)字符串匹配。目前這是大多數(shù)IDS最主要的匹配方式,事件定義者根據(jù)某個攻擊的數(shù)據(jù)包或者攻擊的原因,提取其中的數(shù)據(jù)包字符串特征。通常IDS經(jīng)過協(xié)議分析后,進行字符串的匹配。

比如:Snort中的一條事件定義,alerttcp$EXTERNAL_NETany->$HTTP_SERVERS$HTTP_PORTS(msg:"WEB-ATTACKSpscommandattempt";flow:to_server,established;uricontent:"/bin/ps";nocase;sid:1328;classtype:web-application-attack;rev:4;)該事件中要進行匹配的字符串就是"/bin/ps"。字符串匹配主要就是算法問題,因為IDS的規(guī)則多數(shù)屬于字符串匹配,因此優(yōu)秀的字符串匹配算法也能夠顯著提高IDS的效率,比如Boyer-Moore、Aho-Corasick、Set-wiseBoyer-Moore算法。

4、Snort檢測(3)大小匹配,或者長度匹配。多數(shù)情況下,這也應(yīng)該屬于字符串匹配的一種,不過,這種匹配方式對數(shù)據(jù)包中某段數(shù)據(jù)的長度而不是對具體的字符串進行匹配。

比如,通過數(shù)據(jù)長度限制來對緩沖區(qū)溢出攻擊進行檢測。比如:alerttcp$EXTERNAL_NETany->$HTTP_SERVERS$HTTP_PORTS(msg:"WEB-IISISAPI.idaattempt";uricontent:".ida?";nocase;dsize:>239;flow:to_server,established;classtype:web-application-attack;reference:bugtraq,1065;sid:1243;rev:6;)其中的關(guān)鍵字dsize

就是對數(shù)據(jù)包的負載進行匹配,如果請求的命令總長度大于239,那么就檢測出一條.ida溢出企圖的事件。

4、Snort檢測(4)累積匹配,或者量匹配。通過對某些事件出現(xiàn)的量(次數(shù)或者單位時間次數(shù))來產(chǎn)生新的事件,比如,某個IP在1分鐘內(nèi)統(tǒng)計出了100條CGI事件,那么就屬于一次CGI掃描事件。Snort的一些預(yù)處理插件可以進行此類匹配,例如portscan。

4、Snort檢測(5)邏輯匹配,或者是集合匹配。一些有更強事件檢測能力的IDS,通過對不同類型的事件組合來進行判斷,從而獲得新的事件。少數(shù)IDS對多種事件的組合來構(gòu)成邏輯推理,增強檢測的智能。Snort對此類匹配支持的功能較弱,僅在stream等預(yù)處理插件中有一些。

4、Snort檢測(6)4、Snort檢測(7)4、Snort檢測(8)4、Snort檢測(9)對規(guī)則頭解析的結(jié)果填入RTN,對規(guī)則選項解析的結(jié)果填入OTN。抓取數(shù)據(jù)包后Snort要先進行一定程度的協(xié)議解析工作,主要是用相應(yīng)的指針指向數(shù)據(jù)的各個域,這可以加快以后檢測的匹配速度。然后數(shù)據(jù)包需要經(jīng)過各個預(yù)處理器進行預(yù)處理,例如IP碎片重組、HTTP解碼等。接下來就進入Snort的模式匹配過程,主要是遍歷規(guī)則樹試圖匹配各個規(guī)則節(jié)點。如前所述,Snort主要進行的是協(xié)議匹配、字符串匹配和長度匹配,而檢測引擎中沒有兩次或者多次匹配的過程,也就是累計匹配和邏輯匹配,因此它不能檢測分布事件,也不能檢測流量異常,而只能通過端口協(xié)議字符串等來檢測那些具有字符串?dāng)?shù)據(jù)特征的特定拒絕服務(wù)攻擊工具的事件,這可以從snort的DDOS規(guī)則集看得出來。當(dāng)然Portscan和Stream4等預(yù)處理器的增加使snort在累計匹配和邏輯匹配上有一些表現(xiàn),比如,Portscan預(yù)處理器可以跟蹤端口掃描事件的速率。4、Snort檢測(9)從Snort提供的規(guī)則也可以得到上面的結(jié)果,因為規(guī)則中所體現(xiàn)的基本都是對IP、ICMP、TCP、UDP這樣的三、四層上的協(xié)議進行了解析,而對更上面的協(xié)議,比如第七層的應(yīng)用協(xié)議等基本沒有作協(xié)議分析,這些規(guī)則中主要進行的也是前三種方式的單包匹配。當(dāng)然這里的重點不是在匹配算法上,而更看重整個檢測的結(jié)構(gòu)和過程。首先能夠看到的問題就是snort的規(guī)則樹形結(jié)構(gòu)過于簡單,也就造成可能某些RTN下的OTN鏈比較龐大;沒有對高層協(xié)議分析也是一個大問題,因為,協(xié)議分析可以更有效地定位匹配位置,加快匹配速率。因此,現(xiàn)在很多IDS將規(guī)則樹更平坦,盡量讓深度和寬度不失調(diào),同時進行高層協(xié)議分析,這一代的IDS結(jié)構(gòu)也就基本如此了。同時,有些IDS采用多層引擎的方式,來實現(xiàn)和加強累計匹配和邏輯匹配的檢測能力。其實現(xiàn)在Snort的結(jié)構(gòu)發(fā)展也基本是對這些問題的解決。Snort獲取免費下載地址:Snort-1.8.tar.gz:源代碼包,適用于linux/solaris環(huán)境Snort-1.8-sol-2.7-sparc-local:二進制包,適用于solaris環(huán)境Snort-1.8-win32-source.zip:源代碼包,適用于win32/9x/nt/2000環(huán)境底層庫的安裝與配置(一)Libpcap:提供的接口函數(shù)主要實現(xiàn)和封裝了與數(shù)據(jù)包截獲有關(guān)的過程,下載網(wǎng)址:/libpcap.tar.zLibnet:提供的接口函數(shù)主要實現(xiàn)和封裝了數(shù)據(jù)包的構(gòu)造和發(fā)送的過程,下載網(wǎng)址:/projects/libnet/dist/libnet-1.0.2a.tar.gz底層庫的安裝與配置(一)NDISpacketcaptureDriver:win32/9x/net/2000環(huán)境下抓包和處理數(shù)據(jù)包而提供的驅(qū)動程序,下載地址:/~mike/netgroup-serv.poloto.it/winpcap/install/default.htmLibcap的安裝檢查libcap檢查在/usr/local/lib/目錄下是否有l(wèi)ibpcap.a在/usr/include/pcap/目錄下是否有pcap.h,pacp-namedb.h以及net子目錄,在/usr/include/pcap/net/目錄下是否有bpf.h文件。如果有,說明libcap已安裝成功,否則#tar–zxvf

libpcap.tar.z

解開壓縮包#cd

libpcap#./configure#make#makecheck#makeinstallLibnet的安裝#tar–zxvflibnet-1.0.2a.tar.gz#cdlibnet-1.0.2a#./configure#make#makeinstallNDISpacketcaptuerDriver安裝1、win9x執(zhí)行下載的自解壓文件packet95.exe,并把解壓后的文件放到某一臨時目錄下打開控制面板->網(wǎng)絡(luò)->添加協(xié)議->選擇“磁盤安裝”->選擇“BPFPacketcaptureDriverforwin95/98vx.xx”->確定->重起計算機2、winnt執(zhí)行下載的自解壓文件packetnt.exe,以后同上3、win2000執(zhí)行下載的自解壓文件packet2k.exe,以后同上Snort安裝1.linux環(huán)境下安裝#tar–zxvfsnort-1.8.tar.gz#cdsnort-1.8#./configure#make#makeinstall至此,/usr/local/bin/目錄下已經(jīng)存在snort文件,說明安裝已成功。Snort安裝2.win32環(huán)境下的安裝解開snort-1.8-win32-source.zip用vc++6.0打開位于snort-1.8-win32-source\snort-1.7\win32-prj\snort.dsw文件選擇“win32Release”編譯選項進行編譯。在Release目錄下會生成所需的snort.exe可知性文件。Snort使用Libpcap命令行Snort命令行Snort-?可以列出相應(yīng)參數(shù)及其解釋Snort存在三種運行方式—嗅探器、抓包器、NIDS。使用祥解參見USAGE和SnortUserManual.pdf過濾器用來限制主機、網(wǎng)絡(luò)和協(xié)議的范圍,可以使用邏輯運算符把若干個過濾器聯(lián)合起來。整個過濾器由一個或多個元語組成,而每個元語則由一個或多個關(guān)鍵字加上一個相關(guān)值(字符串或數(shù)字)組成。關(guān)鍵字分為以下幾類:屬性類關(guān)鍵字:說明后面所根值得意義,這類關(guān)鍵

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論