《入侵檢測與防御原理及實(shí)踐(微課版)》 課件 CH4 開源入侵檢測系統(tǒng)Snort2_第1頁
《入侵檢測與防御原理及實(shí)踐(微課版)》 課件 CH4 開源入侵檢測系統(tǒng)Snort2_第2頁
《入侵檢測與防御原理及實(shí)踐(微課版)》 課件 CH4 開源入侵檢測系統(tǒng)Snort2_第3頁
《入侵檢測與防御原理及實(shí)踐(微課版)》 課件 CH4 開源入侵檢測系統(tǒng)Snort2_第4頁
《入侵檢測與防御原理及實(shí)踐(微課版)》 課件 CH4 開源入侵檢測系統(tǒng)Snort2_第5頁
已閱讀5頁,還剩35頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

開源入侵檢測系統(tǒng)Snort2目錄Snort的體系結(jié)構(gòu)Snort的的部署方式Snort的工作模式Snort2的安裝與配置Snort2的命令行參數(shù)Snort2的預(yù)處理器Snort的體系結(jié)構(gòu)1Snort是著名的開源、跨平臺(tái)、輕量級(jí)的網(wǎng)絡(luò)入侵檢測系統(tǒng),遵循公共通用許可證GPL,采用易于擴(kuò)展的模塊化體系結(jié)構(gòu)。Snort最早是由程序員MartyRoesch在1998年用C語言開發(fā)的基于libpcap/winpcap/npcap的數(shù)據(jù)包嗅探器和日志記錄工具。Snort采用基于規(guī)則的網(wǎng)絡(luò)信息搜索機(jī)制,對(duì)數(shù)據(jù)包進(jìn)行內(nèi)容的模式匹配,從中發(fā)現(xiàn)入侵和探測行為。Snort能對(duì)網(wǎng)絡(luò)流量進(jìn)行實(shí)時(shí)捕獲,對(duì)協(xié)議進(jìn)行分析,可以自定義規(guī)則庫、預(yù)處理器及輸出插件等擴(kuò)充其功能,如果有與規(guī)則庫匹配的非法流量和可疑數(shù)據(jù),可以記錄到日志文件,并實(shí)時(shí)報(bào)警。Snort簡介包解碼器、預(yù)處理器、檢測引擎、報(bào)警輸出是SNORT系統(tǒng)的基本模塊,以插件形式存在,有很強(qiáng)的可擴(kuò)展性SNORT的體系結(jié)構(gòu)(1)包捕獲器:SNORT本身沒有捕獲數(shù)據(jù)包的模塊,只能借助Linux的捕包函數(shù)庫Libpcap或Windows的Winpcap直接從網(wǎng)卡獲得數(shù)據(jù)包,并將捕獲的數(shù)據(jù)包傳遞給包解碼器。(2)包解碼器:用于將包捕獲器傳遞過來的原始數(shù)據(jù)包進(jìn)行解碼,并將解碼后的數(shù)據(jù)包存放到SNORT定義的結(jié)構(gòu)體中,方便后續(xù)的預(yù)處理器和檢測引擎處理。(3)預(yù)處理器:用于將包解碼器解碼后的數(shù)據(jù)包進(jìn)行預(yù)處理操作,使之規(guī)范化,方便檢測引擎的檢測。另外,預(yù)處理器也可以檢測數(shù)據(jù)包是否有明顯的錯(cuò)誤,如果有則直接報(bào)警輸出。預(yù)處理器是插件形式存在的,SNORT中內(nèi)置了一些常用的預(yù)處理器,用戶可以根據(jù)需要有選擇地使用,也可根據(jù)添加自定義的預(yù)處理器。(4)檢測引擎:是SNORT系統(tǒng)最核心的模塊,通過規(guī)則庫判斷經(jīng)過解碼和預(yù)處理之后的數(shù)據(jù)包是否存在入侵行為。需在SNORT啟動(dòng)前提前配置好規(guī)則庫。(5)報(bào)警輸出:若數(shù)據(jù)包被檢測出錯(cuò)誤或非法,則由此模塊進(jìn)行記錄并報(bào)警。報(bào)警信息可以日志文件形式的保存,也可以保存在MYSQL、ORACLE等數(shù)據(jù)庫系統(tǒng)中。用戶也可以定制輸出插件,將檢測后的數(shù)據(jù)進(jìn)行直觀展示。(6)規(guī)則庫:是檢測引擎對(duì)數(shù)據(jù)包判斷是否非法的依據(jù),在SNORT啟動(dòng)時(shí)會(huì)對(duì)系統(tǒng)中的規(guī)則進(jìn)行初始化,初始化好的規(guī)則被加載到一個(gè)三維鏈表中。(7)日志文件或數(shù)據(jù)庫:用于記錄報(bào)警信息。SNORT的體系結(jié)構(gòu)Snort支持以內(nèi)聯(lián)(Inline)模式配置為IPS做阻斷,只不過功能較弱。最常見的部署方式還是作為IDS來使用,與現(xiàn)有設(shè)備形成異構(gòu),實(shí)現(xiàn)網(wǎng)絡(luò)流量的交叉檢查。Snort作為IDS部署時(shí),應(yīng)將其以并聯(lián)的方式掛接在所關(guān)注流量必經(jīng)的鏈路上??梢詫nort部署在防火墻兩側(cè),具體有以下3種部署方案。(1)部署防火墻外(2)部署在防火墻內(nèi)(3)防火墻內(nèi)外分別部署SNORT的部署方式Snort有嗅探器、數(shù)據(jù)包記錄器和入侵檢測3種工作模式。嗅探器模式:相當(dāng)于Wireshark、tcpdump這樣的數(shù)據(jù)包捕獲工具,用戶可以實(shí)時(shí)查看網(wǎng)絡(luò)接口流量。數(shù)據(jù)包記錄器模式:將抓取的數(shù)據(jù)包存儲(chǔ)到本地硬盤中,文件名為snort.log.timestamp。用戶可以使用Wireshark等軟件或者snort-r功能分析該流量文件。入侵檢測模式:最核心的模式,將捕獲的數(shù)據(jù)包與檢測規(guī)則進(jìn)行模式匹配,當(dāng)發(fā)現(xiàn)數(shù)據(jù)包匹配上某條規(guī)則,就會(huì)執(zhí)行這條規(guī)則中所定義的動(dòng)作。SNORT的工作模式SNORT2的關(guān)鍵文件SNORT的工作流程模塊名源文件名稱說明主模塊SNORT.c主控模塊plugbase.c完成插件的注冊、初始化解碼模塊decode.c解碼函數(shù)預(yù)處理模塊preprocessors保存預(yù)處理插件規(guī)則處理模塊rules.c完成所有與規(guī)則相關(guān)的工作parser.c完成—些輔助工作日志模塊log.c完成與日志記錄有關(guān)的功能SNORT的啟動(dòng)流程(1)調(diào)用初始化函數(shù)SnortInit(),完成命令行解析、輸出模塊注冊、預(yù)處理模塊注冊、規(guī)則選項(xiàng)模塊構(gòu)建、加載動(dòng)態(tài)插件等操作。(2)利用GetPacketSource()函數(shù)獲取數(shù)據(jù)源,確定需要進(jìn)行捕獲數(shù)據(jù)報(bào)文的網(wǎng)卡,或者存儲(chǔ)數(shù)據(jù)報(bào)文的文件;注冊控制處理器,初始化進(jìn)程文件和權(quán)限。SNORT的工作流程(3)調(diào)用函數(shù)SetPktProcessor()獲取數(shù)據(jù)包,判斷數(shù)據(jù)來源并標(biāo)注對(duì)應(yīng)的解碼函數(shù)。(4)調(diào)用封裝了Libpcap的DAQ函數(shù)庫的DAQ_Start()函數(shù),啟動(dòng)抓包流程。利用PacketLoop()函數(shù)循環(huán)抓包。SNORT能調(diào)用不同的解碼函數(shù)對(duì)捕獲的數(shù)據(jù)包進(jìn)行解析,根據(jù)檢測規(guī)則對(duì)異常協(xié)議進(jìn)行識(shí)別與報(bào)警。數(shù)據(jù)包的處理過程SNORT的工作流程利用捕包庫函數(shù)捕獲到數(shù)據(jù)鏈路層的所有流量,包解碼器按照數(shù)據(jù)包的類型逐層向上調(diào)用相應(yīng)的解碼函數(shù)解碼。解碼完畢后,識(shí)別出相應(yīng)的協(xié)議類型,該過程是在數(shù)據(jù)鏈路層完成的。接下來調(diào)用網(wǎng)絡(luò)層解碼函數(shù),對(duì)數(shù)據(jù)鏈路層解碼完畢后的數(shù)據(jù)包做相似的解碼工作。調(diào)用傳輸層解碼函數(shù)對(duì)數(shù)據(jù)包進(jìn)行最后的解碼,并把解碼后的數(shù)據(jù)包存放到系統(tǒng)定義好的數(shù)據(jù)結(jié)構(gòu)中供預(yù)處理器來處理。Snort2的安裝與配置2Snort2目前最高版本為2.9.20,有源碼版和Windows版Snort2的安裝安裝完成后還需要安裝Npcap,并對(duì)配置文件snort.conf進(jìn)行編輯。Snort2的安裝在WindowsXp/2003/Vista/2008上可以使用WinpcapWin7及以后上可以使用npcap,64bit,要匹配可以用snort-V查看Snort的版本和位數(shù),也可以用snort-W可以查看版本、位數(shù)、可用接口等,還可以確定捕包函數(shù)庫與Snort是否匹配。Snort2的安裝配置snort.conf文件1)設(shè)置網(wǎng)絡(luò)變量2)配置解碼器3)配置基礎(chǔ)檢測引擎4)配置動(dòng)態(tài)加載庫5)配置預(yù)處理器6)配置輸出插件7)自定義規(guī)則集8)自定義預(yù)處理器和解碼器規(guī)則集9)自定義共享對(duì)象規(guī)則集Snort的配置1.設(shè)置網(wǎng)絡(luò)相關(guān)變量IP變量ipvarHOME_NETanyipvarEXTERNAL_NETanyipvarDNS_SERVERS$HOME_NETipvarSMTP_SERVERS$HOME_NETipvarHTTP_SERVERS$HOME_NETipvarSQL_SERVERS$HOME_NETipvarTELNET_SERVERS$HOME_NETipvarSSH_SERVERS$HOME_NETipvarFTP_SERVERS$HOME_NETipvarSIP_SERVERS$HOME_NET Snort的配置(Snort.conf)1.設(shè)置網(wǎng)絡(luò)相關(guān)變量端口變量portvarHTTP_PORTS[80,81,311,383,……portvarSHELLCODE_PORTS!80portvarORACLE_PORTS1024:portvarSSH_PORTS22portvarFTP_PORTS[21,2100,3535]portvarSIP_PORTS[5060,5061,5600]portvarFILE_DATA_PORTS[$HTTP_PORTS,110,143]portvarGTP_PORTS[2123,2152,3386]ipvarAIM_SERVERS[/23,/23,/24,……Snort的配置(Snort.conf)1.設(shè)置網(wǎng)絡(luò)相關(guān)變量規(guī)則文件的路徑(可以是相對(duì)路徑,建議用絕對(duì)路徑)104行:(105和106也可以先注釋點(diǎn))varRULE_PATHD:\snort\rules 規(guī)則路徑varSO_RULE_PATHD:\snort\so_rules 共享函數(shù)庫規(guī)則路徑varPREPROC_RULE_PATHD:\snort\preproc_rules 預(yù)處理器規(guī)則路徑注釋掉113和114行#varWHITE_LIST_PATHD:\snort\rules 允許列表地址#varBLACK_LIST_PATHD:\snort\rules 屏蔽列表地址Snort的配置(Snort.conf)4.配置動(dòng)態(tài)加載庫可動(dòng)態(tài)加載的模塊改247行和250行dynamicpreprocessordirectoryD:\snort\lib\snort_dynamicpreprocessor 動(dòng)態(tài)預(yù)處理器庫路徑dynamicengineD:\snort\lib\snort_dynamicengine\sf_engine.dll 基本預(yù)處理器引擎路徑注釋掉253行#dynamicdetectiondirectory/usr/local/lib/snort_dynamicrules 動(dòng)態(tài)規(guī)則庫路徑Snort的配置(Snort.conf)5.配置預(yù)處理器用于將包解碼器解碼后的數(shù)據(jù)包進(jìn)行預(yù)處理操作,使之規(guī)范化,方便檢測引擎的檢測。也可以檢測數(shù)據(jù)包是否有明顯的錯(cuò)誤,如果有則直接報(bào)警輸出。預(yù)處理器是插件形式存在的,源文件名都是以spp_開頭的,SNORT中內(nèi)置了一些常用的預(yù)處理器,如:IP分片重組(frag2)、TCP流重組(stream4)、各種應(yīng)用層解碼等。用戶可以根據(jù)需要有選擇地使用,通常采用默認(rèn)值,也可根據(jù)添加自定義的預(yù)處理器。常見分類:模擬TCP/IP堆棧功能的插件:如IP分片重組、TCP流重組插件。各種解碼插件:如HTTP解碼插件、Unicode解碼插件、RPC解碼插件、Telnet協(xié)商插件等。規(guī)則匹配無法進(jìn)行攻擊檢測時(shí)所用的檢測插件:如端口掃描插件、Spade異常入侵檢測插件、Bo檢測插件、Arp欺騙檢測插件等。Snort的配置(Snort.conf)6.配置輸出插件在報(bào)文匹配某條規(guī)則需要輸出時(shí),調(diào)用相應(yīng)的輸出插件。它們的源文件名都以spo_開頭,這些插件分為日志和警告兩種類型放入兩個(gè)列表中,在規(guī)則匹配過程中和匹配結(jié)束之后調(diào)用,以便記錄日志和警告。輸出方式1)輸出到unified2文件:outputunified2:filenamesnort.log,limit128U2boat:用于將Unified2文件轉(zhuǎn)換為不同格式的工具。U2SpewFoo:用于將Unified2文件的內(nèi)容轉(zhuǎn)儲(chǔ)到stdout的輕量級(jí)工具。2)輸出到syslog:outputalert_syslog:LOG_AUTHLOG_ALERT3)輸出到pcap文件:outputlog_tcpdump:tcpdump.log4)輸出到數(shù)據(jù)庫:outputdatabase:alert,mysql,host=localhostuser=snortpassword=snorttestdbname=snortencoding=hexdetail=full Snort的配置(Snort.conf)7.定制snort規(guī)則集是檢測引擎對(duì)數(shù)據(jù)包判斷是否非法的依據(jù),在SNORT啟動(dòng)時(shí)會(huì)對(duì)系統(tǒng)中的規(guī)則進(jìn)行初始化,初始化好的規(guī)則被加載到一個(gè)三維鏈表中。#include<被包含文件的完整路徑和文件名>include$RULE_PATH/local.rulesalerticmpanyany->anyany(msg:"TestingICMPalert";sid:1000001;)Snort的配置(Snort.conf)Snort的使用3嗅探器:從網(wǎng)絡(luò)上讀取數(shù)據(jù)包并作為連續(xù)不斷的流顯示在終端上。snort–v-i4:輸出IP和TCP/UDP/ICMP的包頭信息snort–vd-i4:輸出IP和TCP/UDP/ICMP的包頭信息和應(yīng)用層的數(shù)據(jù)snort–vde-i4:輸出數(shù)據(jù)鏈路層、IP和TCP/UDP/ICMP的包頭信息以及應(yīng)用層的數(shù)據(jù)數(shù)據(jù)包記錄器:把數(shù)據(jù)包記錄到硬盤上的log目錄中(log目錄必須存在)snort–dev–l./logsnort–dev–l./log-h/24網(wǎng)絡(luò)入侵檢測系統(tǒng):此模式最復(fù)雜,且是可配置的,可以讓Snort分析網(wǎng)絡(luò)數(shù)據(jù)流以匹配用戶定義的規(guī)則,并根據(jù)檢測結(jié)果采取一定的動(dòng)作。snort–dev–l./log

-h/24–csnort.conf為了提高性能,建議不要使用ve這兩個(gè)參數(shù)Snort2的命令行參數(shù)c:\snort\bin>snort[options]<filters>主要snort參數(shù)介紹-A<alert>:設(shè)置<alert>的模式是full、fast,還是none;full模式是記錄標(biāo)準(zhǔn)的alert模式到alert文件中;fast模式只寫入時(shí)間戳、messages、IPs、ports到文件中,none模式關(guān)閉報(bào)警。-a:顯示ARP包。-b:把LOG的信息包記錄為TCPDUMP格式,所有信息包都被記錄為二進(jìn)制形式,這個(gè)選項(xiàng)對(duì)于fast記錄模式比較好,因?yàn)樗恍枰ㄙM(fèi)包的信息轉(zhuǎn)化為文本的時(shí)間。Snort在100Mbps網(wǎng)絡(luò)中使用“b”比較好。-c<cf>:使用配置文件<cf>,這個(gè)規(guī)則文件是告訴系統(tǒng)什么樣的信息要LOG,或者要報(bào)警,或者通過。-C:在信息包信息使用ASCII碼來顯示,而不是hexdump。Snort的命令行參數(shù)主要snort參數(shù)介紹-d:解碼應(yīng)用層-D:把Snort以守護(hù)進(jìn)程的方法來運(yùn)行,默認(rèn)情況下alert記錄發(fā)送到/var/log/snort.alert文件中去。-e:顯示第二層(數(shù)據(jù)鏈路層)的包頭信息。-F<bpf>:從<bpf>文件中讀BPF過濾器(filters),這里的filters是標(biāo)準(zhǔn)的BPF格式過濾器。-h<hn>:設(shè)置網(wǎng)絡(luò)地址,如一個(gè)C類IP地址,使用這個(gè)選項(xiàng),可限制數(shù)據(jù)進(jìn)出的方向。-i<if>:使用網(wǎng)絡(luò)接口參數(shù)<if>。-l <ld>:LOG信息包記錄到<ld>目錄中去。-M<wkstn>:發(fā)送WinPopup信息到包含<wkstn>文件中存在的工作站列表中去,這選項(xiàng)需要Samba的支持,wkstn文件很簡單,每一行只要添加包含在SMB中的主機(jī)名即可(注意不需要兩個(gè)斜杠\\)。Snort的命令行參數(shù)主要snort參數(shù)介紹-n<cnt>:指定在處理<cnt>個(gè)數(shù)據(jù)包后退出。-N:關(guān)閉Log記錄,但ALERT功能仍舊正常。-o:改變所采用的記錄文件,如正常情況下采用Alert→Pass→Log,而采用此選項(xiàng)是這樣的順序:Pass→Alert→Log,其中Pass是那些允許通過的規(guī)則而不記錄和報(bào)警,ALERT是不允許通過的規(guī)則,LOG指LOG記錄。-p:關(guān)閉雜亂模式嗅探方式,一般用來更安全的調(diào)試網(wǎng)絡(luò)-r<tf>:讀取tcpdump方式產(chǎn)生的文件<tf>,這個(gè)方法用來得到一個(gè)Shadow(ShadowIDS產(chǎn)生)文件,因?yàn)檫@些文件不能用一般的EDIT來編輯查看。-sLOG:報(bào)警的記錄到syslog中去,在LINUX機(jī)器上,這些警告信息會(huì)出現(xiàn)在/var/log/secure,在其它平臺(tái)上將出現(xiàn)在/var/log/message中。Snort的命令行參數(shù)主要snort參數(shù)介紹-S<n=v>:設(shè)置變量值,這可以用來在命令行定義Snortrules文件中的變量,如要在Snortrules文件中定義變量HOME_NET,可以在命令行中給它預(yù)定義值。-v:使用為verbose模式,把信息包打印在console中,這個(gè)選項(xiàng)使用后會(huì)使速度很慢,這樣結(jié)果在記錄多的是時(shí)候會(huì)出現(xiàn)丟包現(xiàn)象。-V:顯示SNORT版本并退出。-?:顯示幫助信息。-W:顯示可用接口以上這些參數(shù)大多可組合進(jìn)行使用。Snort的命令行參數(shù)Snort入侵檢測實(shí)例1.實(shí)現(xiàn)快速嗅探在命令行輸出檢測到的IP/TCP/UDP/ICMP數(shù)據(jù)。如果想要把數(shù)據(jù)的包頭信息在命令行顯示,可以使用:

snort-v-i4命令行中會(huì)打印出如下的信息:11/25-21:14:34.2352489:8080->:3635TCPTTL:52TOS:0x0ID:32998IpLen:20DgmLen:40DF***A****Seq:0xBAFF71D6Ack:0xAA0A104DWin:0x7ETcpLen:20Snort的命令行參數(shù)Snort入侵檢測實(shí)例1.實(shí)現(xiàn)快速嗅探如果打開-d開關(guān),將顯示HEX和ASCII形式的應(yīng)用數(shù)據(jù)(OSI模型的第七層),命令如下:snort-vd-i4命令行中會(huì)打印出如下的信息:11/25-22:53:33.081641->ICMPTTL:128TOS:0x0ID:41593IpLen:20DgmLen:60Type:8Code:0ID:1Seq:44ECHO6162636465666768696A6B6C6D6E6F70abcdefghijklmnop71727374757677616263646566676869qrstuvwabcdefghiSnort的命令行參數(shù)Snort入侵檢測實(shí)例2.實(shí)現(xiàn)記錄數(shù)據(jù)包確認(rèn)log目錄已經(jīng)存在,再使用下面的命令:snort-de-ld:\snort\log-i4-KASCII注意:這里少了-v選項(xiàng),這意味著Snort將不在屏幕上顯示輸出信息。命令的前部分使Snort進(jìn)入探測模式,它在d:\snort\log目錄下為每個(gè)用戶發(fā)起的連接創(chuàng)建文件。每個(gè)文件中包含的是以ASCII格式顯示的流量信息。Snort的命令行參數(shù)Snort入侵檢測實(shí)例2.實(shí)現(xiàn)記錄數(shù)據(jù)包確認(rèn)log目錄已經(jīng)存在,再使用下面的命令:snort-ld:\snort\log-b-i4進(jìn)入數(shù)據(jù)包記錄界面,同時(shí)在log目錄下會(huì)生成一個(gè)名如snort.log.xxxxxxxxxx的日志文件,所有的網(wǎng)絡(luò)流量將以二進(jìn)制的形式記錄下來,并以PCAP的格式寫入到該日志文件中。這樣做的優(yōu)點(diǎn):(1)允許利用開放源碼或者商業(yè)的探測器程序進(jìn)行瀏覽,例如,Wireshark等。(2)允許重放Snort或者探測程序。(3)速度快,基本上Snort可以得到所有的流量并寫入到文件??捎胹nort-de-rd:\snort\log\snort.log.xxxxxxxxxx重新讀入到Snort,用于解碼Snort的命令行參數(shù)高性能的配置方式在一個(gè)高數(shù)據(jù)流量(如大于100Mb/s)的網(wǎng)絡(luò)環(huán)境下運(yùn)行s

溫馨提示

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

評(píng)論

0/150

提交評(píng)論