Snort中文手冊(cè)_第1頁(yè)
Snort中文手冊(cè)_第2頁(yè)
Snort中文手冊(cè)_第3頁(yè)
Snort中文手冊(cè)_第4頁(yè)
Snort中文手冊(cè)_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、/snort- d- v- eSnail.W第 一 章snort 簡(jiǎn) 介snort有三種工作模式:嗅探器、數(shù)據(jù)包記錄器、網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng)。嗅探器模式僅僅是從網(wǎng)絡(luò)上讀取數(shù)據(jù)包并作為連續(xù)不斷的流顯示在終端上。數(shù)據(jù)包記錄器模式把數(shù)據(jù)包記錄到硬盤上。網(wǎng)路入侵檢測(cè)模式是最復(fù)雜的,而且是可配置的。我們可以讓snort分析網(wǎng)絡(luò)數(shù)據(jù)流以匹配用戶定義的一些規(guī)則,并根據(jù)檢測(cè)結(jié)果采取一定的動(dòng)作。嗅探器所謂的嗅探器模式就是snort從網(wǎng)絡(luò)上讀出數(shù)據(jù)包然后顯示在你的控制臺(tái)上。首先,我們從最基本的用法入手。如果你只要把TCP/IP包頭信息打印在屏幕上,只需要輸入下面的命令:/snort- v使用這個(gè)命令將使 snort只

2、輸出IP和TCP/UDP/ICMP的包頭信息。如果你要看到應(yīng)用層的數(shù)據(jù),可以使用:/snort- v d這條命令使snort在輸出包頭信息的同時(shí)顯示包的數(shù)據(jù)信息。如果你還要顯示數(shù)據(jù)鏈路層的 信 息, 就 使 用 下 面 的 命 令:/snort- vde注意這些選項(xiàng)開(kāi)關(guān)還可以分開(kāi)寫或者任意結(jié)合在一塊。例如:下面的命令就和上面最后的一條命令等價(jià):數(shù)據(jù)包記錄器如果要把所有的包記錄到硬盤上,你需要指定一個(gè)日志目錄,snort就會(huì)自動(dòng)記錄數(shù)據(jù)包:/ snort - dev -l ./log當(dāng)然,./log目錄必須存在,否則 snort就會(huì)報(bào)告錯(cuò)誤信息并退出。當(dāng) snort在這種模 式下運(yùn)行,它會(huì)記錄所

3、有看到的包將其放到一個(gè)目錄中,這個(gè)目錄以數(shù)據(jù)包目的主機(jī)的IP地 址 命 名, 例 如: 如果你只指定了 -l命令開(kāi)關(guān),而沒(méi)有設(shè)置目錄名,snort有時(shí)會(huì)使用遠(yuǎn)程主機(jī)的IP地址作為目錄,有時(shí)會(huì)使用本地主機(jī)IP地址作為目錄名。為了只對(duì)本地網(wǎng)絡(luò)進(jìn)行日志,你需要給出本地網(wǎng)絡(luò):./snort -dev - l ./log -h 192.168.1 .0/24 這個(gè)命令告訴snort把進(jìn)入C類網(wǎng)絡(luò)192.168.1 的所有包的數(shù)據(jù)鏈路、 TCP/IP以及應(yīng)用 層 的 數(shù) 據(jù) 記 錄 到 目 錄 /10g 中。如果你的網(wǎng)絡(luò)速度很快, 或者你想使日志更加緊湊以便以后的分析,那么應(yīng)該使用

4、二進(jìn)制的日志文件格式。 所謂的二進(jìn)制日志文件格式就是 tcpdump 程序使用的格式。 使用下面 的命令可以把所有的包記錄到一個(gè)單一的二進(jìn)制文件中:/ snort - l . /log - b注意此處的命令行和上面的有很大的不同。我們勿需指定本地網(wǎng)絡(luò),因?yàn)樗械臇|西都被記錄到一個(gè)單一的文件。你也不必冗余模式或者使用-d、-e功能選項(xiàng),因?yàn)閿?shù)據(jù)包中的所有內(nèi) 容 都 會(huì) 被 記 錄 到 日 志 文 件 中 。你可以使用任何支持tcpdump 二進(jìn)制格式的嗅探器程序從這個(gè)文件中讀出數(shù)據(jù)包,例如: tcpdump 或者Ethereal 。使用-r功能開(kāi)關(guān),也能使 snort讀出包的數(shù)據(jù)。snort在所

5、有運(yùn)行模式下都能夠處理tcpdump格式的文件。例如:如果你想在嗅探器模式下把一個(gè)tcpdump格式的二進(jìn)制文件中的包打印到屏幕上,可以輸入下面的命令:/snort - d v - r packet. log在日志包和入侵檢測(cè)模式下,通過(guò) BPF(BSD Packet Filter) 接口,你可以使用許多方式維護(hù)日志文件中的數(shù)據(jù)。例如,你只想從日志文件中提取ICMP包,只需要輸入下面的命令行:/snort - dvr packet.log i c m p網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng)snort最重要的用途還是作為網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng)(NIDS),使用下面命令行可以啟動(dòng)這種模式:./snort -dev -l .

6、/log -h 1 9 2. 1 6 8. 1. 0/ 2 4 -c snort. confsnort.conf 是規(guī)則集文件。snort會(huì)對(duì)每個(gè)包和規(guī)則集進(jìn)行匹配,發(fā)現(xiàn)這樣的包就采取相應(yīng)的行動(dòng)。如果你不指定輸出目錄,snort就輸出至ij / va r / l o g / s n o r t目錄。注意:如果你想長(zhǎng)期使用snort作為自己的入侵檢測(cè)系統(tǒng),最好不要使用-v選項(xiàng)。因?yàn)槭褂眠@個(gè)選項(xiàng),使 snort向屏幕上輸出一些信息,會(huì)大大降低snort的處理速度,從而在向顯 示 器輸 出 的 過(guò) 程 中丟 棄一些 包 。此外,在絕大多數(shù)情況下,也沒(méi)有必要記錄數(shù)據(jù)鏈路層的包頭,所以 -e選項(xiàng)也可以不

7、用:./snort- d- h1 9 2. 1 6 8. 1. 0 / 2 4- l ./log- csnort. conf這是使用snort作為網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng)最基本的形式,日志符合規(guī)則的包,以 ASCII形式 保 存 在 有 層 次 的 目 錄 結(jié) 構(gòu) 中。網(wǎng) 絡(luò) 入 侵 檢 測(cè) 模 式 下 的 輸 出 選 項(xiàng)在NIDS模式下,有很多白方式來(lái)配置snort的輸出。在默認(rèn)情況下,snort以ASCII格式記錄日志,使用full報(bào)警機(jī)制。如果使用full報(bào)警機(jī)制,snort會(huì)在包頭之后打印報(bào)警消息。如果你不需要日志包,可以使用-N 選項(xiàng)。snort 有 6 種報(bào)警機(jī)制:full、fast、so

8、cket、syslog、smb(winpopup) 和 none 。其中有 4 個(gè)可以在命令行狀態(tài)下使用-A 選項(xiàng)設(shè)置。這 4 個(gè)是:-A fast :報(bào)警信息包括:一個(gè)時(shí)間戳 (timestamp)、報(bào)警消息、源/目的IP地址和端口。Afull是 默 認(rèn) 的 報(bào) 警 模 式-A unsock :把報(bào)警發(fā)送到一個(gè)UNIX套接字,需要有一個(gè)程序進(jìn)行監(jiān)聽(tīng),這樣可以實(shí)現(xiàn)實(shí)時(shí)報(bào)警Anone關(guān) 閉 報(bào) 警 機(jī) 制使用-s選項(xiàng)可以使snort把報(bào)警消息發(fā)送到 syslog,默認(rèn)的設(shè)備是 LOG_AUTHPRIV 和LOG_ALERT。可以修改 snort. conf 文件修改其配置。snort還可以使用S

9、MB報(bào)警機(jī)制,通過(guò) SAMBA把報(bào)警消息發(fā)送到 Windows 主機(jī)。為了使用這個(gè)報(bào)警機(jī)制,在運(yùn)行./configure腳本時(shí),必須使用-enable-smbalerts 選項(xiàng)。下 面 是 一 些 輸 出 配 置 的 例 子 :使用默認(rèn)的日志方式(以解碼的ASCII格式)并且把報(bào)警發(fā)給syslog :./snort - c snort. conf - l ./log - s - h /24使用二進(jìn)制日志格式和 SMB 報(bào)警機(jī)制:./snort - c s n o r t . c o n f - b - M WORKSTATIONS第二章編寫snort 規(guī)則基礎(chǔ):snort

10、使用一種簡(jiǎn)單的,輕量級(jí)的規(guī)則描述語(yǔ)言,這種語(yǔ)言靈活而強(qiáng)大。在開(kāi)發(fā)snort規(guī)則 時(shí)要記住幾個(gè)簡(jiǎn)單的原則。第一,大多數(shù)snort規(guī)則都寫在一個(gè)單行上,或者在多行之間的行尾用/分隔。Snort規(guī)則被分成兩個(gè)邏輯部分:規(guī)則頭和規(guī)則選項(xiàng)。規(guī)則頭包含規(guī)則的動(dòng)作,協(xié)議,源和目標(biāo)ip地址與網(wǎng)絡(luò)掩碼,以及源和目標(biāo)端口信息; 規(guī)則選項(xiàng)部分包含報(bào)警消息內(nèi)容和要檢查的包的具 體部分。卜面是一個(gè)規(guī)則范例:alert tcp any any -> /24111 (content:"|00 01 86 a5|" msg:"mountd access"第一

11、個(gè)括號(hào)前的部分是規(guī)則頭(rule header ),包含的括號(hào)內(nèi)的部分是規(guī)則選項(xiàng)( ruleoptions )。規(guī)則選項(xiàng)部分中冒號(hào)前的單詞稱為選項(xiàng)關(guān)鍵字( option keywords )。注意,不 是所有規(guī)則都必須包含規(guī)則選項(xiàng)部分,選項(xiàng)部分只是為了使對(duì)要收集或報(bào)警,或丟棄的包的定義更加嚴(yán)格。組成一個(gè)規(guī)則的所有元素對(duì)于指定的要采取的行動(dòng)都必須是真的。當(dāng)多個(gè)元素放在一起時(shí),可以認(rèn)為它們組成了一個(gè)邏輯與( AND )語(yǔ)句。同時(shí),snort規(guī)則庫(kù)文件中 的不同規(guī)則可以認(rèn)為組成了一個(gè)大的邏輯或(OR)語(yǔ)句。規(guī)則高級(jí)概念:Includesinclude允許由命令行指定的規(guī)則文件包含其他的規(guī)則文件。格式

12、:include:include file path/name>注意在該行結(jié)尾處沒(méi)有分號(hào)。被包含的文件會(huì)把任何預(yù)先定義的變量值替換為自己的變量引用。參見(jiàn)變量(Variables ) 一節(jié)以獲取關(guān)于在 SNORT規(guī)則文件中定義和使用變量的更多 信息。Variables變量可能在snort中定義。格式:var: <name> <value>例子:var MY_NET /24alert tcp any any -> $MY_NET any (flags: S; msg: "SYN packet"規(guī)則變量名可以用多種方法修改

13、??梢栽?quot;$"操作符之后定義變量。"?"和"-"可用于變量修改操作符。$var -定義變量。$(var)- 用變量"var"的值替換。$(var:-default)- 用變量"var"的值替換,如果"var"沒(méi)有定義用"default" 替換。$(var:?message)- 用變量"var”的值替換或打印出錯(cuò)誤消息"message"然后退出。例子:var MY_NET $(MY_NET:-/24)log

14、 tcp any any -> $(MY_NET:?MY_NET is undefined!) 23ConfigSnort的很多配置和命令行選項(xiàng)都可以在配置文件中設(shè)置。格式:configdirective>: <value>Directivesorder 改變規(guī)則的順序( snort -o )alertfile 設(shè)置報(bào)警輸出文件,例如: config alertfile: alertsclassification 創(chuàng)建規(guī)則分類。decode_arp 開(kāi)啟 arp 解碼功能。 (snort -a)dump_chars_only 開(kāi)啟字符傾卸功能。 (snort -C)du

15、mp_payload 傾卸應(yīng)用層數(shù)據(jù)。 (snort -d)decode_data_link 解碼第二層數(shù)據(jù)包頭。 (snort -e)bpf_file 指定 BPF 過(guò)濾器 (snort -F) 。例如: config bpf_file: filename.bpfset_gid 改變 GID (snort -g) 。例如: config set_gid: snort_groupdaemon 以后臺(tái)進(jìn)程運(yùn)行。 (snort -D)reference_net 設(shè) 置 本 地 網(wǎng) 絡(luò) 。 (snort -h). 例 如 : config reference_net: /24i

16、nterface 設(shè)置網(wǎng)絡(luò)接口 (snort-i )。例如:config interface: xl0alert_with_interface_name 報(bào)警時(shí)附加上接口信息。 (snort -I)logdir 設(shè)置記錄目錄(snort -l) 。例如: config logdir: /var/log/snortumask 設(shè)置 snort 輸出文件的權(quán)限位。 (snort -m). Example: config umask: 022pkt_count 處理 n 個(gè)數(shù)據(jù)包后就退出。 (snort -n). Example: config pkt_count: 13nolog 關(guān)閉記錄功能,報(bào)

17、警仍然有效。 (snort -N)obfuscate 使 IP 地址混亂 (snort -O)no_promisc 關(guān)閉混雜模式。 (snort -p)quiet 安靜模式,不顯示標(biāo)志和狀態(tài)報(bào)告。 (snort -q)checksum_mode 計(jì)算校驗(yàn)和的協(xié)議類型。 類型值: none, noip, notcp, noicmp, noudp,allutc 在時(shí)間戳上用 UTC 時(shí)間代替本地時(shí)間。 (snort -U)verbose 將詳細(xì)記錄信息打印到標(biāo)準(zhǔn)輸出。 (snort -v)dump_payload_verbose 傾卸數(shù)據(jù)鏈路層的原始數(shù)據(jù)包( snort -X )show_year

18、 在時(shí)間戳上顯示年份。 (snort -y)stateful 為 stream4 設(shè)置保證模式。min_ttl 設(shè)置一個(gè) snort 內(nèi)部的 ttl 值以忽略所有的流量。disable_decode_alerts 關(guān)閉解碼時(shí)發(fā)出的報(bào)警。disable_tcpopt_experimental_alerts關(guān)閉 tcp 實(shí)驗(yàn)選項(xiàng)所發(fā)出的報(bào)警。disable_tcpopt_obsolete_alerts 關(guān)閉 tcp 過(guò)時(shí)選項(xiàng)所發(fā)出的報(bào)警。disable_tcpopt_ttcp_alerts 關(guān)閉 ttcp 選項(xiàng)所發(fā)出的報(bào)警。disable_tcpopt_alerts 關(guān)閉選項(xiàng)長(zhǎng)度確認(rèn)報(bào)警。disa

19、ble_ipopt_alerts 關(guān)閉 IP 選項(xiàng)長(zhǎng)度確認(rèn)報(bào)警。detection 配置檢測(cè)引擎。 ( 例如: search-method lowmem )reference 給 snort 加入一個(gè)新的參考系統(tǒng)。規(guī)則頭規(guī)則動(dòng)作:規(guī)則的頭包含了定義一個(gè)包的 who , where 和 what 信息,以及當(dāng)滿足規(guī)則定義的所有屬性的包出現(xiàn)時(shí)要采取的行動(dòng)。規(guī)則的第一項(xiàng)是" 規(guī)則動(dòng)作 " ( rule action ) , "規(guī)則動(dòng)作"告訴snort 在發(fā)現(xiàn)匹配規(guī)則的包時(shí)要干什么。 在 snort 中有五種動(dòng)作: alert 、 log 、 pass 、 ac

20、tivate 和 dynamic.1、Alert-使用選擇的報(bào)警方法生成一個(gè)警報(bào),然后記錄(10g )這個(gè)包。2、Log-記錄這個(gè)包。3、Pass-丟棄(忽略)這個(gè)包。4、activate-報(bào)警并且激活另一條dynamic 規(guī)則。5、dynamic-保持空閑直到被一條 activate 規(guī)則激活,被激活后就作為一條10g規(guī)則執(zhí)行。你可以定義你自己的規(guī)則類型并且附加一條或者更多的輸出模塊給它,然后你就可以使用這些規(guī)則類型作為snort規(guī)則的一個(gè)動(dòng)作。下面這個(gè)例子創(chuàng)建一條規(guī)則,記錄到 tcpdump 。ruletype suspicioustype log outputlog_tcpdump: s

21、uspicious.log下面這個(gè)例子創(chuàng)建一條規(guī)則,記錄到系統(tǒng)日志和MySQL數(shù)據(jù)庫(kù)ruletype redalerttype alert outputalert_syslog: LOG_AUTH LOG_ALERToutput database: log, mysql, user=snort dbname=snort host=localhost協(xié)議規(guī)則的下一部分是協(xié)議。Snort當(dāng)前分析可疑包的ip協(xié)議有四種:tcp 、udp、icmp和ip。將來(lái)可能會(huì)更多,例如 ARP、IGRP、GRE、OSPF、RIP、IPX等。Ip地址規(guī)則頭的下一個(gè)部分處理一個(gè)給定規(guī)則的ip地址和端口號(hào)信息。關(guān)鍵字

22、 "any"可以被用來(lái)定義任何地址。Snort沒(méi)有提供根據(jù)ip地址查詢域名的機(jī)制。地址就是由直接的數(shù)字型ip地址和一個(gè)cidr塊組成的。Cidr塊指示作用在規(guī)則地址和需要檢查的進(jìn)入的任何包的網(wǎng)絡(luò) 掩碼。/24表示c類網(wǎng)絡(luò),/16表示b類網(wǎng)絡(luò),/32表示一個(gè)特定的機(jī)器的地址。例如, /24 代表從 到55的地址塊。在這個(gè)地址范圍的任何地址都匹配使用這個(gè)/24標(biāo)志的規(guī)則。這種記法給我們提供了一個(gè)很好的方法來(lái)表示一個(gè)很大的地址空間。有一個(gè)操作符可以應(yīng)用在 ip地址上,它是否定運(yùn)算符(negat

23、ion operator )。這個(gè)操作符 告訴snort匹配除了列出的ip地址以外的所有ip地址。否定操作符用"!"表示。下面這條 規(guī)則對(duì)任何來(lái)自本地網(wǎng)絡(luò)以外的流都進(jìn)行報(bào)警。alert tcp !/24 any -> /24 111 (content: "|00 01 86 a5|"msg: "external mountd access"-1這個(gè)規(guī)則的ip地址代表"任何源ip地址不是來(lái)自內(nèi)部網(wǎng)絡(luò)而目標(biāo)地址是內(nèi)部網(wǎng)絡(luò)的tcp包"。你也可以指定ip地址列表,一個(gè)ip地

24、址列表由逗號(hào)分割的ip地址和CIDR塊組成,并且要放在方括號(hào)內(nèi)":":此時(shí),ip列表可以不包含空格在ip地址之間。下面是一個(gè)包含ip地址列表的規(guī)則的例子。alert tcp !/24,/24 any -> /24,/24111 (content: "|00 01 86 a5|" msg: "external mountd access"端口號(hào)端口號(hào)可以用幾種方法表示,包括"any"端口、靜態(tài)端口定義、范圍、以及通過(guò)否定操作符。&quo

25、t;any"端口是一個(gè)通配符,表示任何端口。靜態(tài)端口定義表示一個(gè)單個(gè)端口號(hào),例如111表示portmapper , 23表示telnet , 80表示http 等等。端口范圍用范圍操作符 ":"表示。 范圍操作符可以有數(shù)種使用方法,如下所示:log udp any any -> /24 1:1024記錄來(lái)自任何端口的,目標(biāo)端口范圍在1到1024的udp流log tcp any any -> /24 :6000記錄來(lái)自任何端口,目標(biāo)端口小于等于6000的tcp流log tcp any :1024 -> 1

26、/24 500:記錄來(lái)自任何小于等于1024的特權(quán)端口,目標(biāo)端口大于等于 500的tcp流端口否定操作符用"!"表示。它可以用于任何規(guī)則類型(除了 any ,這表示沒(méi)有,呵呵)。 例如,由于某個(gè)古怪的原因你需要記錄除x windows端口以外的所有一切,你可以使用類似下面的規(guī)則:log tcp any any -> /24 !6000:6010方向操作符方向操作符"->"表示規(guī)則所施加的流的方向。方向操作符左邊的ip地址和端口號(hào)被認(rèn)為是流來(lái)自的源主機(jī),方向操作符右邊的ip地址和端口信息是目標(biāo)主機(jī),還有

27、一個(gè)雙向操作符"<>"。它告訴snort把地址/端口號(hào)對(duì)既作為源,又作為目標(biāo)來(lái)考慮。這對(duì)于記錄/分析雙向?qū)υ捄芊奖悖鐃elnet或者pop3會(huì)話。用來(lái)記錄一個(gè)telnet會(huì)話的兩側(cè)的流的范例 如下:log !/24 any <> /24 23Activate 和 dynamic 規(guī)則:注:Activate 和dynamic 規(guī)則將被tagging所代替。在snort的將來(lái)版本,Activate 和dynamic規(guī)則將完全被功能增強(qiáng)的tagging 所代替。Activate 和dynamic 規(guī)則對(duì)給了

28、snort更強(qiáng)大的能力。你現(xiàn)在可以用一條規(guī)則來(lái)激活另 一條規(guī)則,當(dāng)這條規(guī)則適用于一些數(shù)據(jù)包時(shí)。在一些情況下這是非常有用的,例如你想設(shè)置一條規(guī)則:當(dāng)一條規(guī)則結(jié)束后來(lái)完成記錄。Activate 規(guī)則除了包含一個(gè)選擇域:activates外就和一條alert規(guī)則一樣。Dynamic 規(guī)則除了包含一個(gè)不同的選擇域:activated_by 外就和log規(guī)則一樣,dynamic 規(guī)則還包含一個(gè)count域。Actevate 規(guī)則除了類似一條 alert規(guī)則外,當(dāng)一個(gè)特定的網(wǎng)絡(luò)事件發(fā)生時(shí)還能告訴snort加載一條規(guī)則。Dynamic 規(guī)則和log規(guī)則類似,但它是當(dāng)一個(gè) activate 規(guī)則發(fā)生后被動(dòng) 態(tài)

29、加載的。把他們放在一起如下圖所示:activate tcp !$HOME_NET any -> $HOME_NET 143 (flags: PA; content: "|E8C0FFFFFF|/bin" activates: 1; msg: "IMAP buffer overflow!"I:-:I-> $HOME_NET 143 (activated_by: 1; count:dynamic tcp !$HOME_NET any 50;)規(guī)則選項(xiàng)規(guī)則選項(xiàng)組成了 snort 入侵檢測(cè)引擎的核心,既易用又強(qiáng)大還靈活。所有的 snort 規(guī)則選項(xiàng)用

30、分號(hào) " ; "隔開(kāi)。規(guī)則選項(xiàng)關(guān)鍵字和它們的參數(shù)用冒號(hào) " : "分開(kāi)。按照這種寫法,snort中有 42 個(gè)規(guī)則選項(xiàng)關(guān)鍵字。msg - 在報(bào)警和包日志中打印一個(gè)消息。logto - 把包記錄到用戶指定的文件中而不是記錄到標(biāo)準(zhǔn)輸出。ttl - 檢查 ip 頭的 ttl 的值。tos 檢查IP 頭中TOS 字段的值。id - 檢查ip 頭的分片 id 值。ipoption 查看 IP 選項(xiàng)字段的特定編碼。fragbits 檢查 IP 頭的分段位。dsize - 檢查包的凈荷尺寸的值。flags -檢查tcp flags的值。seq -檢查tcp 順序號(hào)的值

31、。ack -檢查tcp 應(yīng)答(acknowledgement)的值。window 測(cè)試 TCP 窗口域的特殊值。itype - 檢查 icmp type 的值。icode - 檢查 icmp code 的值。icmp_id - 檢查 ICMP ECHO ID 的值。icmp_seq -檢查ICMP ECHO 順序號(hào)的值。content - 在包的凈荷中搜索指定的樣式。content-list在數(shù)據(jù)包載荷中搜索一個(gè)模式集合。offset - content選項(xiàng)的修飾符,設(shè)定開(kāi)始搜索的位置。depth - content選項(xiàng)的修飾符,設(shè)定搜索的最大深度。nocase - 指定對(duì)content字符串

32、大小寫不敏感。session - 記錄指定會(huì)話的應(yīng)用層信息的內(nèi)容。rpc - 監(jiān)視特定應(yīng)用 / 進(jìn)程調(diào)用的 RPC 服務(wù)。resp - 主動(dòng)反應(yīng)(切斷連接等) 。react - 響應(yīng)動(dòng)作(阻塞web 站點(diǎn)) 。reference - 外部攻擊參考ids 。sid - snort 規(guī)則 id 。rev - 規(guī)則版本號(hào)。classtype - 規(guī)則類別標(biāo)識(shí)。priority - 規(guī)則優(yōu)先級(jí)標(biāo)識(shí)號(hào)。uricontent -在數(shù)據(jù)包的URI 部分搜索一個(gè)內(nèi)容。tag - 規(guī)則的高級(jí)記錄行為。ip_proto - IP頭的協(xié)議字段值。sameip - 判定源 IP 和目的 IP 是否相等。statele

33、ss - 忽略劉狀態(tài)的有效性。regex - 通配符模式匹配。distance - 強(qiáng)迫關(guān)系模式匹配所跳過(guò)的距離。within - 強(qiáng)迫關(guān)系模式匹配所在的范圍。byte_test - 數(shù)字模式匹配。byte_jump - 數(shù)字模式測(cè)試和偏移量調(diào)整。msgmsg 規(guī)則選項(xiàng)告訴記錄和報(bào)警引擎 ,記錄或報(bào)警一個(gè)包的內(nèi)容的同時(shí)打印的消息。 它是一個(gè)簡(jiǎn)單的文本字符串,轉(zhuǎn)義符是"" 。格式:msg: "<message text>"logtologto 選項(xiàng)告訴 snort 把觸發(fā)該規(guī)則的所有的包記錄到一個(gè)指定的輸出日志文件中。 這在把來(lái)自諸如 nmap

34、 活動(dòng), http cgi 掃描等等的數(shù)據(jù)組合到一起時(shí)很方便。需要指出的是當(dāng)snort 工作在二進(jìn)制記錄模式下時(shí)這個(gè)選項(xiàng)不起作用。格式:logto:"filename"ttl這個(gè)規(guī)則選項(xiàng)用于設(shè)置一個(gè)要檢查的存活期的值。只有確切地匹配時(shí)它所進(jìn)行的檢查才成功。這個(gè)選項(xiàng)關(guān)鍵字用于檢測(cè) traceroute 。格式:ttl:<number>TOStos 關(guān)鍵字允許你驗(yàn)證 IP 頭中 TOS 字段為一個(gè)特殊的值。只有匹配時(shí)才執(zhí)行成功。格式:tos: <number>id這個(gè)選項(xiàng)關(guān)鍵字用于檢測(cè) ip 頭的分片 id 的值。有些黑客工具(以及別的程序)為了各種目的

35、設(shè)置這個(gè)域的值,例如一些黑客常使用 31337 。用一個(gè)簡(jiǎn)單的規(guī)則檢查這個(gè)值就可以對(duì)付他們。格式:id: <number>Ipoption如果數(shù)據(jù)包中使用了 IP 選項(xiàng), Ipoption 選項(xiàng)會(huì)查找使用中的某個(gè)特別 IP 選項(xiàng),比如源路由。這個(gè)選項(xiàng)的合法參數(shù)如下:rr - Record route (記錄路由)eol - End of list (列表結(jié)尾)nop - No op (無(wú)所作為)ts - Time Stamp (時(shí)間戳)sec - IP security option ( IP 安全選項(xiàng))lsrr - Loose source routing (松散源路由)ssrr

36、 - Strict source routing(嚴(yán)格源路由)satid - Stream identifier(流標(biāo)示符)松散和嚴(yán)格源路由是IP選項(xiàng)中最經(jīng)常被檢查的內(nèi)容,但是它們并沒(méi)有被用在任何廣泛使用 的Internet 應(yīng)用中。每一個(gè)特定的規(guī)則只能用這個(gè)選項(xiàng)一次。格式:ipoption: option;Fragbits這條規(guī)則檢測(cè)IP頭中的分段和保留位字段的值,共有三個(gè)位能被檢測(cè),保留位 RB(Reserved Bit ),更多分段位 MF (More Fragments ),和不分段位 DF (Don' t Fragment )。這些位可以結(jié)合在一起來(lái)檢測(cè)。使用下面的值來(lái)彳t表

37、這些位,R-RB , M-MF ,D-DF。你也可以使用修飾語(yǔ)對(duì)特殊的位來(lái)指出合理的匹配標(biāo)準(zhǔn):* + 所有標(biāo)記匹配特殊位外加任何其他* ; *-任何標(biāo)記匹配如果任何位被設(shè)置為* ; !如果指定位沒(méi)有設(shè)置就沒(méi)有標(biāo)記匹配。格式:fragbits: <bitvalues> 例子:alert tcp !$HOME_NET any -> $HOME_NET any (fragbits: R+; msg: "Rerserved bit set!" ®dsizedsize選項(xiàng)用于檢查包的凈荷的大小。它可以設(shè)置成任意值,可以使用大于/小于符號(hào)來(lái)指定范圍。例如,如

38、果你知道某個(gè)特定的服務(wù)有一個(gè)特定大小的緩沖區(qū),你可以設(shè)定這個(gè)選項(xiàng)來(lái)監(jiān)視緩沖區(qū)溢出的企圖。它在檢查緩沖區(qū)溢出時(shí)比檢查凈荷內(nèi)容的方法要快得多。 格式:dsize: <><number><><number>說(shuō)明:“>”號(hào)是可選的。contentcontent關(guān)鍵字是snort中比較重要的一個(gè)。它允許用戶設(shè)置規(guī)則在包的凈荷中搜索指定的內(nèi)容并根據(jù)內(nèi)容觸發(fā)響應(yīng)。當(dāng)進(jìn)行content選項(xiàng)模式匹配時(shí),Boyer-Moore模式匹配函數(shù)被調(diào)用,并且對(duì)包的內(nèi)容進(jìn)行檢查(很花費(fèi)計(jì)算能力) 。如果包的凈荷中包含的數(shù)據(jù)確切 地匹配了參數(shù)的內(nèi)容,這個(gè)檢查成功并且該規(guī)則

39、選項(xiàng)的其他部分被執(zhí)行。注意這個(gè)檢查是大小寫敏感的。Content關(guān)鍵字的選項(xiàng)數(shù)據(jù)比較復(fù)雜;它可以包含混合的文本和二進(jìn)制數(shù)據(jù)。二進(jìn)制數(shù)據(jù)一般包含在管道符號(hào)中("|"),表示為字節(jié)碼(bytecode )。字節(jié)碼把二進(jìn)制數(shù)據(jù)表示為 16進(jìn)制數(shù)字,是描述復(fù)雜二進(jìn)制數(shù)據(jù)的好方法。下面是包含了一個(gè)混合數(shù)據(jù)的snort規(guī)則范例。 格式:content: ! "content string>" 例子:alert tcp any any -> /24 143 (content: "|90C8 C0FF FFFF|/bin/sh

40、"msg: "IMAP buffer overflow!" -'注:多內(nèi)容的規(guī)則可以放在一條規(guī)則中,還有(:;/ )'不能出現(xiàn)在content規(guī)則中。如果一條規(guī)則前面有一個(gè) f那么那些不包含這些內(nèi)容的數(shù)據(jù)包將觸發(fā)報(bào)警。這對(duì)于關(guān)注那 些不包含一定內(nèi)容的數(shù)據(jù)包是有用的。offsetoffset規(guī)則選項(xiàng)被用作使用 content規(guī)則選項(xiàng)關(guān)鍵字的規(guī)則的修飾符。這個(gè)關(guān)鍵字修飾符指定模式匹配函數(shù)從包凈荷開(kāi)始處開(kāi)始搜索的偏移量。它對(duì)于cgi掃描檢測(cè)規(guī)則很有用,cgi掃描的內(nèi)容搜索字符串不會(huì)在凈荷的前4個(gè)字節(jié)中出現(xiàn)。小心不要把這個(gè)偏移量設(shè)置的太嚴(yán)格了,會(huì)有可能漏掉

41、攻擊!這個(gè)規(guī)則選項(xiàng)關(guān)鍵字必須和content規(guī)則選項(xiàng)一起使用。格式:offset: <number>depthdepth也是一個(gè)content 規(guī)則選項(xiàng)修飾符。它設(shè)置了內(nèi)容模式匹配函數(shù)從他搜索的區(qū)域的起始位置搜索的最大深度。它對(duì)于限制模式匹配函數(shù)超出搜索區(qū)域指定范圍而造成無(wú)效搜索很有用。(也就是說(shuō),如果你在一個(gè)web包中搜索"cgi-bin/phf",你可能不需要浪費(fèi)時(shí)間搜索超過(guò)凈荷的頭 20個(gè)字節(jié))。格式:depth: <number>例子:alert tcp any any -> /24 80 (content: &q

42、uot;cgi-bin/phf" offset: 3; depth:22; msg: "CGI-PHF access" 隼nocasenocase選項(xiàng)用于取消content規(guī)則中的大小寫敏感性。它在規(guī)則中指定后, 任何與包凈荷進(jìn)行比較的ascii字符都被既作為大寫又作為小寫對(duì)待。格式:nocase ;例子:alert tcp any any -> /24 21 (content: "USER root" nocase; msg:"FTP root user access attempt" 3fla

43、gs這個(gè)規(guī)則檢查tcp標(biāo)志。在snort中有9個(gè)標(biāo)志變量:F - FIN (LSB in TCP Flags byte)S - SYNR - RSTP - PSHA - ACKU - URG2 - Reserved bit 21 - Reserved bit 1 (MSB in TCP Flags byte)0 - No TCP Flags Set在這些標(biāo)志之間還可以使用邏輯操作符:+ ALL flag,匹配所有的指定的標(biāo)志外加一個(gè)標(biāo)志。* ANY flag,匹配指定的任何一個(gè)標(biāo)志。! NOT flag,如果指定的標(biāo)志不在這個(gè)數(shù)據(jù)包中就匹配成功。保留位可以用來(lái)檢測(cè)不正常行為,例如IP棧指紋攻擊

44、或者其他可疑的行為。格式:flags: <flag values>,mask value; 例子:alert any any -> /24 any (flags: SF,12; msg: "Possible SYN FIN scan"seq這個(gè)規(guī)則選項(xiàng)引用tcp順序號(hào)(sequence number )?;旧?,它探測(cè)一個(gè)包是否有一個(gè) 靜態(tài)的順序號(hào)集,因此很少用。它是為了完整性而包含進(jìn)來(lái)的。格式: seq: <number>ackack規(guī)則選項(xiàng)關(guān)鍵字引用 tcp頭的確認(rèn)(acknowledge )部分。這個(gè)規(guī)則的一個(gè)實(shí)用的

45、目 的是:檢查 nmap tcp ping , nmap tcp ping把這個(gè)域設(shè)置為 0,然后發(fā)送一個(gè) tcp ackflag置位的包來(lái)確定一個(gè)網(wǎng)絡(luò)主機(jī)是否活著。格式:ack: <number> 例子:alert any any -> /24 any (flags: A; ack: 0; msg: "NMAP TCP ping"Window這條規(guī)則選項(xiàng)指向 TCP窗口大小。這個(gè)選項(xiàng)檢查靜態(tài)窗口大小,此外別無(wú)他用。包括它只 是為了完整性。格式:window:!<number>Itype這條規(guī)則測(cè)試ICMP的type字段的

46、值。它被設(shè)置為使用這個(gè)字段的數(shù)字值。要得到所有可 能取值的列表,可以參見(jiàn) Snort包中自帶的decode.h 文件,任何ICMP的參考資料中也 可以得到。應(yīng)該注意的是,type字段的取值可以超過(guò)正常范圍,這樣可以檢查用于拒絕服務(wù)或flooding 攻擊的非法type 值白ICMP包。 格式:itype: <number>IcodeIcode規(guī)則選項(xiàng)關(guān)鍵字和itype規(guī)則非常接近,在這里指定一個(gè)數(shù)值,Snort會(huì)探測(cè)使用該 值作為code值白ICMP包。超出正常范圍的數(shù)值可用于探測(cè)可疑的流量。格式:icode: <number>SessionSession關(guān)鍵字用于從

47、TCP會(huì)話中抽取用戶數(shù)據(jù)。要檢查用戶在telnet , rlogin , ftp或web sessions中的用戶輸入,這個(gè)規(guī)則選項(xiàng)特別有用。Session規(guī)則選項(xiàng)有兩個(gè)可用的關(guān)鍵字作為參數(shù):printable 或all。Printable 關(guān)鍵字僅僅打印用戶可以理解或者可以鍵入的 數(shù)據(jù)。All關(guān)鍵字使用16進(jìn)制值來(lái)表示不可打印的字符。該功能會(huì)顯著地降低Snort的性能,所以不能用于重負(fù)載環(huán)境。它適合于對(duì)二進(jìn)制( tcpdump 格式)log文件進(jìn)行事后處 理。 格式:session: printable|all;例子log tcp any any <> /2

48、4 23 (session: printable;)Icmp_idIcmp_id 選項(xiàng)中查ICMP ECHO數(shù)據(jù)包中ICMP ID數(shù)值是否是指定值。許多秘密通道 (covert channel )程序使用靜態(tài)ICMP字段通訊,所以該選項(xiàng)在檢查這種流量時(shí)非常有 用。這個(gè)特別的插件用于增強(qiáng)由Max Vision 編寫的stacheldraht探測(cè)規(guī)則,但是在探測(cè)一些潛在攻擊時(shí)確實(shí)有效。格式:icmp_id: <number>Icmp_seqIcmp_seq選項(xiàng)中查ICMP ECHO 數(shù)據(jù)包中ICMP sequence字段數(shù)值是否是指定值。許多秘密通道(covert channel )程

49、序使用靜態(tài)ICMP字段通訊,所以該選項(xiàng)在檢查這種流 量時(shí)非常有用。這個(gè)特別的插件用于增強(qiáng)由Max Vision 編寫的stacheldraht探測(cè)規(guī)則,但是在探測(cè)一些潛在攻擊時(shí)確實(shí)有效。(我知道該字段的信息和icmp_id的描述幾乎完全相同,實(shí)際上它們就是同樣的東西!) 格式:icmp_seq: <number>Rpc這個(gè)選項(xiàng)查看 RPC請(qǐng)求,并自動(dòng)將應(yīng)用(Application )、過(guò)程(procedure )和程序版本(program version )譯碼,如果所有三個(gè)值都匹配的話,該規(guī)則就顯示成功。這個(gè)選項(xiàng)的格式為"應(yīng)用、過(guò)程、版本"。在過(guò)程和版本域中可

50、以使用通配符"*"。格式:rpc:number , number|*, number|*>alert tcp any any -> /24 111 (rpc: 100000,*,3; msg:"RPC getport(TCP)”alert udp any any -> /24 111 (rpc: 100000,*,3; msg:"RPC getport(UDP)"電alert udp any any -> /24 111 (rpc: 100083,*,*;

51、 msg:"RPC ttdb"意RespResp 關(guān)鍵字可以對(duì)匹配一條Snort 規(guī)則的流量進(jìn)行靈活的反應(yīng)( flexible reponse-FlexResp ) 。 FlexResp 代碼允許 Snort 主動(dòng)地關(guān)閉惡意的連接。 該插件合法的參數(shù)如下:rst_snd - 向發(fā)送方發(fā)送TCP-RST 數(shù)據(jù)包rst_rcv - 向接受方發(fā)送 TCP-RST 數(shù)據(jù)包rst_all - 向收發(fā)雙方發(fā)送TCP_RST 數(shù)據(jù)包icmp_net - 向發(fā)送方發(fā)送 ICMP_NET_UNREACHicmp_host -向發(fā)送方發(fā)送ICMP_HOST_UNREACHicmp_port -

52、向發(fā)送方發(fā)送ICMP_PORT_UNREACHicmp_all - 向發(fā)送方發(fā)送上述所有的 ICMP 數(shù)據(jù)包在向目標(biāo)主機(jī)發(fā)送多種響應(yīng)數(shù)據(jù)包時(shí),這些選項(xiàng)組合使用。多個(gè)參數(shù)之間使用逗號(hào)分隔。格式:resp: <resp_modifier, resp_modifier.;使用 resp 選項(xiàng)時(shí)要小心,因?yàn)楹苋菀拙蜁?huì)使snort 陷入無(wú)限循環(huán)中,例如如下規(guī)則:alert tcp any any -> /24 any (msg: "aiee!" resp: rst_all;)content_listcontent_list 關(guān)鍵字允許多內(nèi)容字符串被放

53、在一個(gè)單獨(dú)的內(nèi)容匹配選項(xiàng)中,被匹配的字符串被存放在指定的文件中,而且每個(gè)字符串要單獨(dú)占用一行。否則他們就等同于一個(gè)content 字符串。這個(gè)選項(xiàng)是react 關(guān)鍵字的基礎(chǔ)。格式;content-list: <file_name>下面是一個(gè)文件的內(nèi)容:# adult sites"porn""porn""adults""hard core"""React注意, 使用這個(gè)功能很容易使網(wǎng)絡(luò)流量陷入回路。 React 關(guān)鍵字以匹配一個(gè)規(guī)則時(shí)所作出的靈活的反應(yīng)為基礎(chǔ)?;镜姆磻?yīng)是阻塞一些引人注

54、意的站點(diǎn)的用戶的訪問(wèn)。響應(yīng)代碼允許snort 積極的關(guān)掉有冒犯行為的訪問(wèn)和/ 或發(fā)送一個(gè)通知給瀏覽者。這個(gè)通知可以包含你自己的注釋。這個(gè)選項(xiàng)包括如下的基本修飾詞:block 關(guān)閉連接并且發(fā)送一個(gè)通知warm 發(fā)送明顯的警告信息基本修飾詞可以和如下的附加修飾詞組合使用:msg 把 msg 選項(xiàng)的內(nèi)容包含進(jìn)阻塞通知信息中proxy<port_nr> 使用代理端口發(fā)送通知信息大量的附加修飾詞由逗號(hào)隔開(kāi), react 關(guān)鍵字將被放在選項(xiàng)的最后一項(xiàng)。格式:react: <react_basic_modifier, react_additional_modifier>例子:aler

55、t tcp any any <> /24 80 (content: "bad.htm" msg: "Not for children!" react: block, msg;) reference這個(gè)關(guān)鍵字允許規(guī)則包含一個(gè)外面的攻擊識(shí)別系統(tǒng)。 這個(gè)插件目前支持幾種特定的系統(tǒng), 它和支持唯一的 URL 一樣好。這些插件被輸出插件用來(lái)提供一個(gè)關(guān)于產(chǎn)生報(bào)警的額外信息的連接。確信先看一看如下地方:/snort-db格式:reference: <id system>,<id&

56、gt;例子:alert tcp any any -> any 7070 (msg: "IDS411/dos-realaudio" flags: AP;content: "|fff4 fffd 06|" reference: arachNIDS,IDS411;)alert tcp any any -> any 21 (msg: "IDS287/ftp-wuftp260-venglin-linux" flags:AP; content:"|31c031db31c9b046 cd80 31c031db|" r

57、eference:arachNIDS,IDS287;reference:bugtraq,1387;reference:cve,CAN-2000-1574; )Sid這個(gè)關(guān)鍵字被用來(lái)識(shí)別 snort 規(guī)則的唯一性。這個(gè)信息允許輸出插件很容易的識(shí)別規(guī)則的ID 號(hào)。sid 的范圍是如下分配的:<100 保留做將來(lái)使用100-1000,000 包含在 snort 發(fā)布包中>1000,000 作為本地規(guī)則使用文 件 sid-msg.map 包 含 一 個(gè) 從 msg 標(biāo) 簽 到 snort 規(guī) 則 ID 的 映 射 。 這 將 被 post-processing 輸出模塊用來(lái)映射一個(gè)ID 到

58、一個(gè)報(bào)警信息。格式:sid: <snort rules id>rev這個(gè)關(guān)鍵字是被用來(lái)識(shí)別規(guī)則修改的。修改,隨同 snort 規(guī)則 ID ,允許簽名和描述被較新的信息替換。格式:rev: <revision integer>Classtype這個(gè)關(guān)鍵字把報(bào)警分成不同的攻擊類。 通過(guò)使用這個(gè)關(guān)鍵字和使用優(yōu)先級(jí), 用戶可以指定規(guī)則類中每個(gè)類型所具有的優(yōu)先級(jí)。具有classification 的規(guī)則有一個(gè)缺省的優(yōu)先級(jí)。格式:classtype: <class name>在文件 classification.config 中定義規(guī)則類。這個(gè)配置文件使用如下的語(yǔ)法:config classification: <class name>,<class description>,<default priority>Priority這個(gè)關(guān)鍵字給每條規(guī)則賦予一個(gè)優(yōu)先級(jí)。一個(gè) classtype規(guī)則具有一個(gè)缺省的優(yōu)先級(jí),但這個(gè)優(yōu)先級(jí)是可以被一條priority 規(guī)則重載的。格式:priority:priori

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論