<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Snort

      snort有三種工作模式:嗅探器、數據包記錄器、網絡入侵檢測系統。嗅探器模式僅僅是從網絡上讀取數據包并作為連續不斷的流顯示在終端上。數據包記錄器模式把數據包記錄到硬盤上。網路入侵檢測模式是最復雜的,而且是可配置的。我們可以讓snort分析網絡數據流以匹配用戶定義的一些規則,并根據檢測結果采取一定的動作。

      嗅探器

      嗅探器模式是snort從網絡上讀出數據包然后顯示在你的控制臺上。

      如果你只要把TCP/IP包頭信息打印在屏幕上,使用這個命令將使snort只輸出IP和TCP/UDP/ICMP的包頭信息;

      ./snort -v

      如果你要看到應用層的數據,這條命令使snort在輸出包頭信息的同時顯示包的數據信息;

      ./snort -vd

      如果你還要顯示數據鏈路層的信息,就使用下面的命令:

      ./snort -vde

      注意這些選項開關還可以分開寫或者任意結合在一塊。例如:下面的命令就和上面最后的一條命令等價:

      ./snort -d -v –e

       

      數據包記錄器

      如果要把所有的包記錄到硬盤上,你需要指定一個日志目錄,snort就會自動記錄數據包:

      ./snort -dev -l ./log

      當然,./log目錄必須存在,否則snort就會報告錯誤信息并退出。當snort在這種模式下運行,它會記錄所有看到的包將其放到一個目錄中,這個目錄通常以數據包目的主機的IP地址命名,例如:192.168.10.1

      PS:如果你只指定了-l命令開關,而沒有設置目錄名,snort有時會使用遠程主機的IP地址作為目錄,有時會使用本地主機IP地址作為目錄名。

      只對本地網絡進行日志,-h這個命令告訴snort把進入C類網絡192.168.1的所有包的數據鏈路、TCP/IP以及應用層的數據記錄到目錄./log中:

      ./snort -dev -l ./log -h 192.168.1.0/24

      如果你的網絡速度很快,或者你想使日志更加緊湊以便以后的分析,那么應該使用二進制的日志文件格式。所謂的二進制日志文件格式就是tcpdump程序使用的格式。使用下面的命令可以把所有的包記錄到一個單一的二進制文件-b命令中:

      ./snort -l ./log -b

      注意此處的命令行和上面的有很大的不同。我們勿需指定本地網絡,因為所有的東西都被記錄到一個單一的文件。你也不必冗余模式或者使用-d、-e功能選項,因為數據包中的所有內容都會被記錄到日志文件中。

      使用任何支持tcpdump二進制格式的嗅探器程序從這個文件中讀出數據包,例如:tcpdump或者Ethereal。使用-r功能開關,也能使snort讀出包的數據。snort在所有運行模式下都能夠處理tcpdump格式的文件。例如:如果你想在嗅探器模式下把一個tcpdump格式的二進制文件中的包打印到屏幕上,可以輸入下面的命令:

      ./snort -dv -r packet.log

      在日志包和入侵檢測模式下,通過BPF(BSD Packet Filter)接口,可以使用許多方式維護日志文件中的數據。例如,你只想從日志文件中提取ICMP包,輸入下面的命令行:

      ./snort -dvr packet.log icmp

       

      網絡入侵檢測系統

      snort最重要的用途還是作為網絡入侵檢測系統(NIDS),使用下面命令行可以啟動這種模式:

      ./snort -dev -l ./log -h 192.168.1.0/24 -c snort.conf

      解析:snort.conf是規則集文件。snort會對每個包和規則集進行匹配,發現這樣的包就采取相應的行動。不指定輸出目錄的話snort就輸出到/var/log/snort目錄。

      注意:如果想長期使用snort作為自己的入侵檢測系統,最好不要使用-v選項。因為這個選項是使snort向屏幕上輸出一些信息,會大大降低snort的處理速度,從而在向顯示器輸出的過程中丟棄了一些包。

      此外,在絕大多數情況下,沒有必要記錄數據鏈路層的包頭,所以-e選項也可以不用:

      這是使用snort作為網絡入侵檢測系統最基本的形式,日志符合規則的包,以ASCII形式保存在有層次的目錄結構中:

      ./snort -d -h 192.168.1.0/24 -l ./log -c snort.conf

      -s選項可以使snort把報警消息發送到syslog,默認的設備是LOG_AUTHPRIV和LOG_ALERT??梢孕薷膕nort.conf文件修改其配置。

      網絡入侵檢測模式下的輸出選項

      NIDS模式下,有很多的方式來配置snort的輸出。在默認情況下,snort以ASCII格式記錄日志,使用full報警機制。如果使用full報警機制,snort會在包頭之后打印報警消息。如果你不需要日志包,可以使用-N選項。

      snort有6種報警機制:full、fast、socket、syslog、smb(winpopup)和none。

      其中有4個可以在命令行狀態下使用-A選項設置。這4個是:

      -A fast:報警信息包括:一個時間戳(timestamp)、報警消息、源/目的IP地址和端口。

      -A full:是默認的報警模式。

      -A unsock:把報警發送到一個UNIX套接字,需要有一個程序進行監聽,這樣可以實現實時報警。

      -A none:關閉報警機制。 

      snort還可以使用SMB報警機制,通過SAMBA把報警消息發送到Windows主機。為了使用這個報警機制,在運行./configure腳本時,必須使用--enable-smbalerts選項。

      下面是一些輸出配置的例子:

      使用默認的日志方式(以解碼的ASCII格式)并且把報警發給syslog:

      ./snort -c snort.conf -l ./log -s -h 192.168.1.0/24

      使用二進制日志格式-bSMB -M報警機制:  

      ./snort -c snort.conf -b -M WORKSTATIONS

      編寫Snort規則文件:Snort.conf

      大多數snort規則都寫在一個單行上,或者在多行之間的行尾用/分隔。Snort規則被分成兩個邏輯部分:規則頭和規則選項。規則頭包含規則的動作,協議,源和目標ip地址與網絡掩碼,以及源和目標端口信息;規則選項部分包含報警消息內容和要檢查的包的具體部分。

      一個規則范例:

      alert tcp any any -> 192.168.1.0/24 111 (content:"|00 01 86 a5|"; msg: "mountd access";)

      第一個括號前的部分是規則頭(rule header),包含的括號內的部分是規則選項(rule options)。規則選項部分中冒號前的單詞稱為選項關鍵字(option keywords)。注意,不是所有規則都必須包含規則選項部分,選項部分只是為了使對要收集或報警,或丟棄的包的定義更加嚴格。組成一個規則的所有元素對于指定的要采取的行動都必須是真的。當多個元素放在一起時,可以認為它們組成了一個邏輯與(AND)語句。同時,snort規則庫文件中的不同規則可以認為組成了一個大的邏輯或(OR)語句。

      規則頭

      規則動作:

      規則的頭包含了定義一個包的who,where和what信息,以及當滿足規則定義的所有屬性的包出現時要采取的行動。規則的第一項是"規則動作"(rule action),"規則動作"告訴snort在發現匹配規則的包時要干什么。在snort中有五種動作:alert、log、pass、activate和dynamic.

      1、Alert-使用選擇的報警方法生成一個警報,然后記錄(log)這個包。

      2、Log-記錄這個包。

      3、Pass-丟棄(忽略)這個包。

      4、activate-報警并且激活另一條dynamic規則。

      5、dynamic-保持空閑直到被一條activate規則激活,被激活后就作為一條log規則執行。

      你可以定義你自己的規則類型并且附加一條或者更多的輸出模塊給它,然后你就可以使用這些規則類型作為snort規則的一個動作。

      協議

      規則的下一部分是協議。Snort當前分析可疑包的ip協議有四種:tcp 、udp、icmp和ip。將來可能會更多,例如ARP、IGRP、GRE、OSPF、RIP、IPX等。

      Ip地址

      規則頭的下一個部分處理一個給定規則的ip地址和端口號信息。關鍵字"any"可以被用來定義任何地址。Snort沒有提供根據ip地址查詢域名的機制。地址就是由直接的數字型ip地址和一個cidr塊組成的。Cidr塊指示作用在規則地址和需要檢查的進入的任何包的網絡掩碼。/24表示c類網絡,/16表示b類網絡,/32表示一個特定的機器的地址。例如,192.168.1.0/24代表從192.168.1.1到192.168.1.255的地址塊。在這個地址范圍的任何地址都匹配使用這個192.168.1.0/24標志的規則。這種記法給我們提供了一個很好的方法來表示一個很大的地址空間。

      有一個操作符可以應用在ip地址上,否定運算符(negation operator)"!"。這個操作符告訴snort匹配除了列出的ip地址以外的所有ip地址。下面這條規則對任何來自本地網絡以外的流都進行報警。

      alert tcp !192.168.1.0/24 any -> 192.168.1.0/24 111 (content: "|00 01 86 a5|"; msg: "external mountd access";)

      這個規則的ip地址代表"任何源ip地址不是來自內部網絡而目標地址是內部網絡的tcp包"。

      也可以指定ip地址列表,一個ip地址列表由逗號分割的ip地址和CIDR塊組成,并且要放在方括號內“[”,“]”。此時,ip列表可以不包含空格在ip地址之間。下面是一個包含ip地址列表的規則的例子。

      alert tcp ![192.168.1.0/24,10.1.1.0/24] any -> [192.168.1.0/24,10.1.1.0/24] 111 (content: "|00 01 86 a5|"; msg: "external mountd access";)

      端口號

      端口號可以用幾種方法表示,包括"any"端口、靜態端口定義、范圍、以及通過否定操作符。"any"端口是一個通配符,表示任何端口。靜態端口定義表示一個單個端口號,例如111表示portmapper,23表示telnet,80表示http等等。

      端口范圍用范圍操作符""表示。范圍操作符可以有數種使用方法,如下所示:

      記錄來自任何端口的,目標端口范圍在1到1024的udp流

      log udp any any -> 192.168.1.0/24 1:1024

      記錄來自任何端口,目標端口小于等于6000的tcp流

      log tcp any any -> 192.168.1.0/24 :6000

      記錄來自任何小于等于1024的特權端口,目標端口大于等于500的tcp流

      log tcp any :1024 -> 192.168.1.0/24 500:

      端口否定操作符用"!"表示。它可以用于任何規則類型(除了any,這表示沒有)。例如,由于某個古怪的原因你需要記錄除x windows端口以外的所有一切,你可以使用類似下面的規則:

      log tcp any any -> 192.168.1.0/24 !6000:6010

      方向操作符

      方向操作符"->"表示規則所施加的流的方向。方向操作符左邊的ip地址和端口號被認為是流來自的源主機,方向操作符右邊的ip地址和端口信息是目標主機,還有一個雙向操作符"<>"。它告訴snort把地址/端口號對既作為源,又作為目標來考慮。這對于記錄/分析雙向對話很方便,例如telnet或者pop3會話。用來記錄一個telnet會話的兩側的流的范例如下:

      log !192.168.1.0/24 any <> 192.168.1.0/24 23

      Activate 和 dynamic 規則:

      注:Activate 和 dynamic 規則將被tagging 所代替。在snort的將來版本,Activate 和 dynamic 規則將完全被功能增強的tagging所代替。

      Activate 和 dynamic 規則對給了snort更強大的能力。你現在可以用一條規則來激活另一條規則,當這條規則適用于一些數據包時。在一些情況下這是非常有用的,例如你想設置一條規則:當一條規則結束后來完成記錄。Activate規則除了包含一個選擇域:activates外就和一條alert規則一樣。Dynamic規則除了包含一個不同的選擇域:activated_by 外就和log規則一樣,dynamic規則還包含一個count域。

      Actevate規則除了類似一條alert規則外,當一個特定的網絡事件發生時還能告訴snort加載一條規則。Dynamic規則和log規則類似,但它是當一個activate規則發生后被動態加載的。把他們放在一起如下圖所示:

      activate tcp !$HOME_NET any -> $HOME_NET 143 (flags: PA; content: "|E8C0FFFFFF|/bin"; activates: 1; msg: "IMAP buffer overflow!";)

      dynamic tcp !$HOME_NET any -> $HOME_NET 143 (activated_by: 1; count: 50;)

      規則高級概念

      Includes:

      include允許由命令行指定的規則文件包含其他的規則文件。

      格式:

      include:

         注意在該行結尾處沒有分號。被包含的文件會把任何預先定義的變量值替換為自己的變量引用。參見變量(Variables)一節以獲取關于在SNORT規則文件中定義和使用變量的更多信息。

       

      Variables :

      變量可能在snort中定義。

      格式:

      var:

      例子:

      var MY_NET 192.168.1.0/24

      alert tcp any any -> $MY_NET any (flags: S; msg: "SYN packet";)

      規則變量名可以用多種方法修改。可以在"$"操作符之后定義變量。"?" 和 "-"可用于變量修改操作符。

      $var - 定義變量。

      $(var) - 用變量"var"的值替換。

      $(var:-default) - 用變量"var"的值替換,如果"var"沒有定義用"default"替換。

      $(var:?message) - 用變量"var"的值替換或打印出錯誤消息"message"然后出。

      例子:

      var MY_NET $(MY_NET:-192.168.1.0/24)

      log tcp any any -> $(MY_NET:?MY_NET is undefined!) 23

       

      snort有三種工作模式:嗅探器、數據包記錄器、網絡入侵檢測系統。嗅探器模式僅僅是從網絡上讀取數據包并作為連續不斷的流顯示在終端上。數據包記錄器模式把數據包記錄到硬盤上。網路入侵檢測模式是最復雜的,而且是可配置的。我們可以讓snort分析網絡數據流以匹配用戶定義的一些規則,并根據檢測結果采取一定的動作。

      嗅探器

      嗅探器模式是snort從網絡上讀出數據包然后顯示在你的控制臺上。

      如果你只要把TCP/IP包頭信息打印在屏幕上,使用這個命令將使snort只輸出IP和TCP/UDP/ICMP的包頭信息;

      ./snort -v

      如果你要看到應用層的數據,這條命令使snort在輸出包頭信息的同時顯示包的數據信息;

      ./snort -vd

      如果你還要顯示數據鏈路層的信息,就使用下面的命令:

      ./snort -vde

      注意這些選項開關還可以分開寫或者任意結合在一塊。例如:下面的命令就和上面最后的一條命令等價:

      ./snort -d -v –e

       

      數據包記錄器

      如果要把所有的包記錄到硬盤上,你需要指定一個日志目錄,snort就會自動記錄數據包:

      ./snort -dev -l ./log

      當然,./log目錄必須存在,否則snort就會報告錯誤信息并退出。當snort在這種模式下運行,它會記錄所有看到的包將其放到一個目錄中,這個目錄通常以數據包目的主機的IP地址命名,例如:192.168.10.1

      PS:如果你只指定了-l命令開關,而沒有設置目錄名,snort有時會使用遠程主機的IP地址作為目錄,有時會使用本地主機IP地址作為目錄名。

      只對本地網絡進行日志,-h這個命令告訴snort把進入C類網絡192.168.1的所有包的數據鏈路、TCP/IP以及應用層的數據記錄到目錄./log中:

      ./snort -dev -l ./log -h 192.168.1.0/24

      如果你的網絡速度很快,或者你想使日志更加緊湊以便以后的分析,那么應該使用二進制的日志文件格式。所謂的二進制日志文件格式就是tcpdump程序使用的格式。使用下面的命令可以把所有的包記錄到一個單一的二進制文件-b命令中:

      ./snort -l ./log -b

      注意此處的命令行和上面的有很大的不同。我們勿需指定本地網絡,因為所有的東西都被記錄到一個單一的文件。你也不必冗余模式或者使用-d、-e功能選項,因為數據包中的所有內容都會被記錄到日志文件中。

      使用任何支持tcpdump二進制格式的嗅探器程序從這個文件中讀出數據包,例如:tcpdump或者Ethereal。使用-r功能開關,也能使snort讀出包的數據。snort在所有運行模式下都能夠處理tcpdump格式的文件。例如:如果你想在嗅探器模式下把一個tcpdump格式的二進制文件中的包打印到屏幕上,可以輸入下面的命令:

      ./snort -dv -r packet.log

      在日志包和入侵檢測模式下,通過BPF(BSD Packet Filter)接口,可以使用許多方式維護日志文件中的數據。例如,你只想從日志文件中提取ICMP包,輸入下面的命令行:

      ./snort -dvr packet.log icmp

       

      網絡入侵檢測系統

      snort最重要的用途還是作為網絡入侵檢測系統(NIDS),使用下面命令行可以啟動這種模式:

      ./snort -dev -l ./log -h 192.168.1.0/24 -c snort.conf

      解析:snort.conf是規則集文件。snort會對每個包和規則集進行匹配,發現這樣的包就采取相應的行動。不指定輸出目錄的話,snort就輸出到/var/log/snort目錄。

      注意:如果想長期使用snort作為自己的入侵檢測系統,最好不要使用-v選項。因為這個選項是使snort向屏幕上輸出一些信息,會大大降低snort的處理速度,從而在向顯示器輸出的過程中丟棄了一些包。

      此外,在絕大多數情況下,沒有必要記錄數據鏈路層的包頭,所以-e選項也可以不用:

      這是使用snort作為網絡入侵檢測系統最基本的形式,日志符合規則的包,以ASCII形式保存在有層次的目錄結構中:

      ./snort -d -h 192.168.1.0/24 -l ./log -c snort.conf

      -s選項可以使snort把報警消息發送到syslog,默認的設備是LOG_AUTHPRIV和LOG_ALERT??梢孕薷膕nort.conf文件修改其配置。

      網絡入侵檢測模式下的輸出選項

      NIDS模式下,有很多的方式來配置snort的輸出。在默認情況下,snort以ASCII格式記錄日志,使用full報警機制。如果使用full報警機制,snort會在包頭之后打印報警消息。如果你不需要日志包,可以使用-N選項。

      snort有6種報警機制:full、fast、socket、syslog、smb(winpopup)和none。

      其中有4個可以在命令行狀態下使用-A選項設置。這4個是:

      -A fast:報警信息包括:一個時間戳(timestamp)、報警消息、源/目的IP地址和端口。

      -A full:是默認的報警模式。

      -A unsock:把報警發送到一個UNIX套接字,需要有一個程序進行監聽,這樣可以實現實時報警。

      -A none:關閉報警機制。 

      snort還可以使用SMB報警機制,通過SAMBA把報警消息發送到Windows主機。為了使用這個報警機制,在運行./configure腳本時,必須使用--enable-smbalerts選項。

      下面是一些輸出配置的例子:

      使用默認的日志方式(以解碼的ASCII格式)并且把報警發給syslog:

      ./snort -c snort.conf -l ./log -s -h 192.168.1.0/24

      使用二進制日志格式-bSMB -M報警機制:  

      ./snort -c snort.conf -b -M WORKSTATIONS

       

      Snort使用:

      .從“命令提示符”進入Snort安裝目錄,找到\bin目錄并運行snort.exe。例如:

         C:\snort\bin>snort -V

      注意:使用-i選項,以選擇正確的網卡。使用-l選項,選擇正確的日志記錄目錄。

      B.嗅探模式:snort -v

      C.記錄模式

      mkdir log

      snort -dev -l ./log

      D.網絡入侵檢測模式

      mkdir log

      snort -dev -l ./log -h 192.168.1.0/24 -c /etc/snort/snort.conf

      5.修改并使用Snort的默認配置文件(snort.conf)運行Snort,snort.conf是規則集文件。snort會對每個包和規則集進行匹配,發現這樣的包就采取相應的行動。如果不指定輸出目錄,snort就輸出到/var/log/snort目錄。注意Snort的語法。使用時,將其復制到Snort的/etc/目錄,使用命令:

      C:\snort\bin>snort –i 2 –c ../etc/snort.conf –l ../log/ 

      注:-i 2 表示系統里面的第2塊網卡,根據自己的電腦網卡情況決定,需要使用 snort –W顯示網卡接口。不要復制上面命令,手動輸入,字符存在差異。

      如需停止snort,使用“ctrl+c”

       

       

      編寫Snort規則文件:Snort.conf

      大多數snort規則都寫在一個單行上,或者在多行之間的行尾用/分隔。Snort規則被分成兩個邏輯部分:規則頭和規則選項。規則頭包含規則的動作,協議,源和目標ip地址與網絡掩碼,以及源和目標端口信息;規則選項部分包含報警消息內容和要檢查的包的具體部分。

      一個規則范例:

      alert tcp any any -> 192.168.1.0/24 111 (content:"|00 01 86 a5|"; msg: "mountd access";)

      第一個括號前的部分是規則頭(rule header),包含的括號內的部分是規則選項(rule options)。規則選項部分中冒號前的單詞稱為選項關鍵字(option keywords)。注意,不是所有規則都必須包含規則選項部分,選項部分只是為了使對要收集或報警,或丟棄的包的定義更加嚴格。組成一個規則的所有元素對于指定的要采取的行動都必須是真的。當多個元素放在一起時,可以認為它們組成了一個邏輯與(AND)語句。同時,snort規則庫文件中的不同規則可以認為組成了一個大的邏輯或(OR)語句。

      規則頭

      規則動作:

      規則的頭包含了定義一個包的who,where和what信息,以及當滿足規則定義的所有屬性的包出現時要采取的行動。規則的第一項是"規則動作"(rule action),"規則動作"告訴snort在發現匹配規則的包時要干什么。在snort中有五種動作:alert、log、pass、activate和dynamic.

      1、Alert-使用選擇的報警方法生成一個警報,然后記錄(log)這個包。

      2、Log-記錄這個包。

      3、Pass-丟棄(忽略)這個包。

      4、activate-報警并且激活另一條dynamic規則。

      5、dynamic-保持空閑直到被一條activate規則激活,被激活后就作為一條log規則執行。

      你可以定義你自己的規則類型并且附加一條或者更多的輸出模塊給它,然后你就可以使用這些規則類型作為snort規則的一個動作。

      協議

      規則的下一部分是協議。Snort當前分析可疑包的ip協議有四種:tcp 、udp、icmp和ip。將來可能會更多,例如ARP、IGRP、GRE、OSPF、RIP、IPX等。

      Ip地址

      規則頭的下一個部分處理一個給定規則的ip地址和端口號信息。關鍵字"any"可以被用來定義任何地址。Snort沒有提供根據ip地址查詢域名的機制。地址就是由直接的數字型ip地址和一個cidr塊組成的。Cidr塊指示作用在規則地址和需要檢查的進入的任何包的網絡掩碼。/24表示c類網絡,/16表示b類網絡,/32表示一個特定的機器的地址。例如,192.168.1.0/24代表從192.168.1.1到192.168.1.255的地址塊。在這個地址范圍的任何地址都匹配使用這個192.168.1.0/24標志的規則。這種記法給我們提供了一個很好的方法來表示一個很大的地址空間。

      有一個操作符可以應用在ip地址上,否定運算符(negation operator)"!"。這個操作符告訴snort匹配除了列出的ip地址以外的所有ip地址。下面這條規則對任何來自本地網絡以外的流都進行報警。

      alert tcp !192.168.1.0/24 any -> 192.168.1.0/24 111 (content: "|00 01 86 a5|"; msg: "external mountd access";)

      這個規則的ip地址代表"任何源ip地址不是來自內部網絡而目標地址是內部網絡的tcp包"。

      也可以指定ip地址列表,一個ip地址列表由逗號分割的ip地址和CIDR塊組成,并且要放在方括號內“[”,“]”。此時,ip列表可以不包含空格在ip地址之間。下面是一個包含ip地址列表的規則的例子。

      alert tcp ![192.168.1.0/24,10.1.1.0/24] any -> [192.168.1.0/24,10.1.1.0/24] 111 (content: "|00 01 86 a5|"; msg: "external mountd access";)

      端口號

      端口號可以用幾種方法表示,包括"any"端口、靜態端口定義、范圍、以及通過否定操作符。"any"端口是一個通配符,表示任何端口。靜態端口定義表示一個單個端口號,例如111表示portmapper,23表示telnet,80表示http等等。

      端口范圍用范圍操作符""表示。范圍操作符可以有數種使用方法,如下所示:

      記錄來自任何端口的,目標端口范圍在1到1024的udp流

      log udp any any -> 192.168.1.0/24 1:1024

      記錄來自任何端口,目標端口小于等于6000的tcp流

      log tcp any any -> 192.168.1.0/24 :6000

      記錄來自任何小于等于1024的特權端口,目標端口大于等于500的tcp流

      log tcp any :1024 -> 192.168.1.0/24 500:

      端口否定操作符用"!"表示。它可以用于任何規則類型(除了any,這表示沒有)。例如,由于某個古怪的原因你需要記錄除x windows端口以外的所有一切,你可以使用類似下面的規則:

      log tcp any any -> 192.168.1.0/24 !6000:6010

      方向操作符

      方向操作符"->"表示規則所施加的流的方向。方向操作符左邊的ip地址和端口號被認為是流來自的源主機,方向操作符右邊的ip地址和端口信息是目標主機,還有一個雙向操作符"<>"。它告訴snort把地址/端口號對既作為源,又作為目標來考慮。這對于記錄/分析雙向對話很方便,例如telnet或者pop3會話。用來記錄一個telnet會話的兩側的流的范例如下:

      log !192.168.1.0/24 any <> 192.168.1.0/24 23

      Activate 和 dynamic 規則:

      注:Activate 和 dynamic 規則將被tagging 所代替。在snort的將來版本,Activate 和 dynamic 規則將完全被功能增強的tagging所代替。

      Activate 和 dynamic 規則對給了snort更強大的能力。你現在可以用一條規則來激活另一條規則,當這條規則適用于一些數據包時。在一些情況下這是非常有用的,例如你想設置一條規則:當一條規則結束后來完成記錄。Activate規則除了包含一個選擇域:activates外就和一條alert規則一樣。Dynamic規則除了包含一個不同的選擇域:activated_by 外就和log規則一樣,dynamic規則還包含一個count域。

      Actevate規則除了類似一條alert規則外,當一個特定的網絡事件發生時還能告訴snort加載一條規則。Dynamic規則和log規則類似,但它是當一個activate規則發生后被動態加載的。把他們放在一起如下圖所示:

      activate tcp !$HOME_NET any -> $HOME_NET 143 (flags: PA; content: "|E8C0FFFFFF|/bin"; activates: 1; msg: "IMAP buffer overflow!";)

      dynamic tcp !$HOME_NET any -> $HOME_NET 143 (activated_by: 1; count: 50;)

      activate/dynamic規則對
      這個規則使snort在檢測到IMAP緩沖區溢出時發出報警,并且記錄后續的50個從$HOME_NET之外,發往$HOME_NET的143號端口的數據包。如果緩沖區溢出成功,那么接下來50個發送到這個網絡同一個服務端口(這個例子中是143號端口)的數據包中,會有很重要的數據,這些數據對以后的分析很有用處。

      規則高級概念

      Includes:

      include允許由命令行指定的規則文件包含其他的規則文件。

      格式:

      include:

         注意在該行結尾處沒有分號。被包含的文件會把任何預先定義的變量值替換為自己的變量引用。參見變量(Variables)一節以獲取關于在SNORT規則文件中定義和使用變量的更多信息。

       

      Variables :

      變量可能在snort中定義。

      格式:

      var:

      例子:

      var MY_NET 192.168.1.0/24

      alert tcp any any -> $MY_NET any (flags: S; msg: "SYN packet";)

      規則變量名可以用多種方法修改。可以在"$"操作符之后定義變量。"?" 和 "-"可用于變量修改操作符。

      $var - 定義變量。

      $(var) - 用變量"var"的值替換。

      $(var:-default) - 用變量"var"的值替換,如果"var"沒有定義用"default"替換。

      $(var:?message) - 用變量"var"的值替換或打印出錯誤消息"message"然后出。

      例子:

      var MY_NET $(MY_NET:-192.168.1.0/24)

      log tcp any any -> $(MY_NET:?MY_NET is undefined!) 23

       

      規則選項
      規則選項構成了snort入侵檢測引擎的核心,它們非常容易使用,同時又很強大和容易擴展。在每條snort規則中,選項之間使用分號進行分割。規則選項關鍵詞和其參數之間使用冒號分割。截止到寫本文為止(snort 1.7版),snort有23個規則選項關鍵詞:
      msg:在報警和日志中打印的消息 
      logto:把日志記錄到一個用戶指定的文件,而不是輸出到標準的輸出文件 
      ttl:測試IP包頭的TTL域的值 
      tos:測試IP包頭的TOS域的值 
      id:測試IP分組標志符(fragment ID)域是否是一個特定的值 
      ipoption:查看IP選項(IP option)域 
      fragbits:測試IP包頭的分片位(fragmentation bit) 
      dsize:測試數據包包數據段的大小 
      flags:測試TCP標志(flag)是否是某個值 
      seq:測試TCP包的序列號是否是某個值 
      ack:測試TCP包的確認(acknowledgement)域是否為某個值 
      itype:測試ICMP數據包的類型(type)域 
      icode:測試ICMP數據包的編碼(code)域 
      icmp_id:測試ICMP回送包的標志符(ICMP ECHO ID)是否為某個值 
      content:在數據包的數據段中搜索模式(pattern) 
      content-list:在數據包的數據段中搜索模式清單 
      offset:設置開始搜索的偏移量 
      depth:設置搜索最大深度 
      nocase:大小寫不敏感匹配內容字符串 
      session:剝離一個對話的應用層信息 
      rpc:觀察RPC服務對特定應用程序的調用 
      resp:激活反應措施(斷開連接等) 
      react:激活反應措施(阻塞WEB站點) 
      詳細說明

      3.1 msg
      msg規則選項告訴日志引擎在復制包時同時打印的信息,以及讓報警引擎輸出的警告消息。它只是一個簡單的文本字符串,使用作為轉義符。
      格式:msg:"";

      3.2 logto
      logto選項告訴snort把觸發某條規則所有的數據包都記錄到指定的文件。使用這個選項,對處理來自nmap掃描、HTTP CGI掃描的數據非常方便。注意如果使用二進制日志模式,這個選項會失效。

      格式:logto:"<文件名>";

      3.3 ttl
      這個選項設置要測試的生命周期(time-to-live)值。只有數據包的TTL和這個選項設置的值精確匹配,測試才會成功。這個選項主要用來檢測路由企圖。
      格式:ttl:"";

      3.4 tos
      你可以使用tos關鍵詞檢查IP包頭的TOS(type of service)域是否是一個特定的值。也是只有在被檢測包TOS域的值和給定的值精確匹配時,這個測試才會成功。
      格式:tos:"";

      3.5 ID
      這個選項關鍵詞用來測試IP分片包頭的ID域。一些黑客工具為了不同的目的把這個域設置為特殊的值,例如:31337是在一些黑客中比較流行的值。使用這個選項就可以阻止這種攻擊。
      格式:id: "";

      3.6 lpoption
      如果IP包中有選項域,可以使用這個規則選項搜索IP包頭的特定選項,例如源路由。這個規則選項可以使用的參數如下:
      rr:路由記錄 
      eof:End of list 
      nop:無操作 
      ts:時間戳 
      sec:IP安全選項 
      lsrr:寬松源路由(loose source routing) 
      ssrr:嚴格源路由(strict source roution) 
      satid:流標識符 
      最常被注意的IP選項是loose&strict source routing,不過在Internet上廣泛使用的任何應用程序中都沒使用這兩個選項。每條規則中只能設定一個IP規則。
      格式:ipopts: ;

      3.7 fragbits
      使用這個規則選項可以觀察IP包頭的分片位和保留位。它們在IP包頭的標識域,共有3位,分別是:保留為(reserved bit,RB)、還有分組片位(more fragments,MF)、不可分片(dont fragment,DF)。這些位可以以各種方式組合檢查,使用下面的值指定:
      R:保留位 
      D:DF位 
      M:MF位 
      你也可以使用修飾符號對特定的位進行邏輯組合:
      +--ALL標志,指定的位加上任何其它的位為真 
      *--ANY標志,指定的任何位為真 
      !--NOT標志,指定的位不為真 
      格式:fragbits: ;
      例子:
      alert tcp !$HOME_NET any -> $HOME_NET any (fragbits:R+;msg:"Reserverd IP bit set!";)

      3.8 dsize
      這個規則選項用來測試數據包負載的大小。它可以被設置為任意值,還可以使用大于/小于號。例如,如果你知道某個服務有一個特定大小的緩沖區,你就能夠設置這個選項來捕獲制造緩沖區溢出的企圖。它比檢查數據包的內容速度快的多。
      格式:dsize: [>|<]
      <、>是可選的

      3.9 content
      關鍵詞content是snort一個非常重要的特征。用戶可以在規則中使用這個關鍵詞,snort就會搜索數據包中content指定的內容,并且觸發對于這些數據的反應。每當對一個content規則選項進行模式匹配時,snort都會調用Boyer-Moore模式匹配函數,測試數據包的內容。無論在數據包的那個位置發現要搜索的數據,就算測試成功。接下來,snort就會對這條規則中其余的選項進行測試。注意:測試是大小寫敏感的。
      content選項包含的數據可以混合有文本和二進制數據。二進制數據一般被包在管道符(|)中,由字節碼(bytecode)表示。字節碼使用16進制數字表示二進制數據。表10是一條混有文本和二進制數據的snort規則。
      alert tcp any any -> 192.168.1.0/24 143(content:"|90c8 c0ff ffff|/bin/sh";msg:"IMAP buffer overflow");

      格式:content:"";

      3.10 offset
      在使用content規則選項時,offset規則選項作為其修飾符。這個關鍵詞設置對content的內容進行模式匹配時的起始位置。這個規則選項在某些情況下很有用,例如CGI掃描,要搜索的字符串從來不會在數據包的前4個字節出現。注意:設置偏移值一定要小心,它可能會造成漏檢!這個規則選項只能和content規則選項搭配使用。

      格式:offset: ;

      3.11 depth

      depth是content規則選項的另一個修飾符。它用來設置最大的搜索深度,以減少無謂的搜索,使snort只在特征碼可能出現的區域內搜索,例如如果在一個web綁定(web-bound)包中搜索“cgi-bin/phf",你就不必浪費時間在數據包負載數據的前20個字節之外搜索。表11的規則結合了content、offset、depth。
      alert tcp any any -> 192.168.1.0/24 80(content:"cgi-bin/phf";offset:3;depth:22;msg:"CGI-PHF access";)
      格式:depth: ;

      3.12 nocase
      nocase使對content進行模式匹配時大小寫不敏感。snort將不再區別每個ASCII字符的大小寫。
      格式:nocase;
      例如:
      alert tcp any any -> 192.168.1.0/24 21 (content:"USER root";nocase;msg:"FTP root login attempt";)

      3.13 flags
      這個規則選項用來測試TCP包頭的標志。實際上,在snort中有8個有效的標志:
      F:FIN(TCP標志字節最左邊一位) 
      S:SYN 
      R:RST 
      P:PSH 
      A:ACK 
      S:ACK 
      U:URG 
      2:保留位2 
      1:保留位1(標志字節最右邊一位) 
      還可以使用邏輯操作符對指定的標志位進行操作:
      +:ALL,指定的標志位和其它任意的標志位為真 
      *:ANY,指定的標志位中任意的標志位為真 
      !:NOT,除了指定標志位外,任意的標志位為真 
      保留位能夠用來檢測非正常的行為,例如對IP協議棧指紋特征的探測企圖或者其它可疑行為。
      alert any any -> 192.168.1.0/24 any (flags:SF;msg:"Possible SYN FIN scan";)
      格式:flags: ;

      3.14 seq
      這個規則選項涉及TCP包的序列號。實質上,它檢測包是否有一個靜態的序列號集合,因此這個規則選項非常沒有用處。指示出于完整性的考慮才包含了這個選項。

      格式:seq:

      3.15 ack

      這個規則選項涉及TCP包頭的確認域(acknowledge)。迄今為止,它只有一個實際的用途:檢測NMAP TCP ping掃描。掃描程序nmap進行TCP ping掃描時,把TCP包頭的確認號(4個字節)設置為0,然后向目標主機發出TCP ACK包,確定目標主機是否正在運行。表14是一個檢測這種探測的規則:
      alert any any -> 192.168.1.0/24 any (flags:A;ack:0;msg:"nmap TCP ping";)
      格式:ack:;

      3.16 itype
      itype規則選項用來測試ICMP包頭的類型域,使用數字進行設置。每種ICMP包對應的數值如下:
      0:回送應答 
      3:無法到達目的地 
      4:抑制包源 
      5:重定向(改變路徑) 
      8:回送請求 
      11:IP分組超時 
      12:IP分組參數有問題 
      13:時間戳請求 
      14:時間戳應答 
      15:信息請求 
      16:信息應答 
      17:地址掩碼請求 
      18:地址掩碼應答 
      注意:拒絕服務和淹沒攻擊的數據包有時使用無效的ICMP類型,可以使用這個規則選項對無效的ICMP類型進行檢測,也就是說,這個規則選項中的值可以不是上面所列的數值。
      格式:itype:;

      3.17 icode
      icode規則選項和itype非常相似,也是使用數字進行設置,具體數值見snort源代碼的decode.h文件。同樣,也可以使用其它的數值來檢測可疑的數據包。
      格式:icode:;

      3.18 session
      sesion關鍵詞是從snort-1.3.1.1版加入的,用來從TCP會話中剝離用戶的數據。如果想觀察用戶在telnet、rlogin、ftp,甚至WEB會話過程中輸入了什么,就可以使用這個規則選項。session規則選項有兩個參數關鍵詞:printable、all。使用printable,snort就會只輸出可打印數據;使用all,snort就會輸出所有的數據,不可打印的數據以16進制表示。不過,這個功能會大大降低snort的速度,所以不太適合大負載的情況,而且最好使用二進制日志文件格式。一條記錄telnet會話的規則:
      log tcp any any <> 192.168.1.0/24 23 (session: printable;)記錄可打印的telnet會話數據
      格式:session:[printable|all];

      3.19 icmp_id

      icmp_id規則選項用來檢測ICMP回送(echo)數據包的ICMP ID號是否為一個特定的值。之所以會用到這個規則選項,是因為一些隱秘通道(covert channel)程序在通訊時使用靜態的ICMP域。為了執行stacheldreht檢測規則,開發了這個特別的插件,這些規則是由Max Vision(一位著名的白帽黑客,譯者注)編寫的。不過,它有助于檢測其它一些潛在的攻擊。

      格式:icmp_id:;

      3.20 icmp_seq
      icmp_seq規則選項用來檢測一個ICMP回送包的ICMP序列號是否是一個特定的值。之所以會用到這個規則選項,是因為一些隱秘通道(covert channel)程序在通訊時使用靜態的ICMP域。為了執行stacheldreht檢測規則,開發了這個特別的插件,這些規則是由Max Vision編寫的。不過,它有助于檢測其它一些潛在的攻擊。
      格式:icmp_seq:

      3.21 rpc
      規則選項rpc可以使snort觀察RPC請求,并且自動對應用程序、過程(procedure)和程序版本進行解碼。只有這三個變量都匹配時,才算成功。統配符*可以用來代替過程(procedure)和版本號。
      格式:rpc: ;
      例子:幾條RPC報警規則
      alert tcp any any -> 192.168.1.0/24 111 (rpc: 100000,*,3;msg:"RPC getport (TCP)";)
      alert udp any any -> 192.168.1.0/24 111 (rpc: 100000,*,3;msg:"RPC getport (UDP)";)
      alert udp any any -> 192.168.1.0/24 111 (rpc: 100083,*,*;msg:"RPC ttdb";)
      alert udp any any -> 192.168.1.0/24 111 (rpc: 100232,10,*;msg:"RPCsadmin";)


      3.22 resp
      對于匹配某個規則的數據包,可以通過resp關鍵詞使snort的靈活反應(flexible reponse,FlexResp)機制生效。使用FlexResp插件,snort能夠主動斷開惡意連接。下面是這個模塊的參數:
      rst_snd:向發送方套接字發送TCP-RST數據包 
      rst_rcv:向接受方套接字發送TCP-RST數據包 
      rst_all:在兩個方向上發送TCP-TST數據包 
      icmp_net:向發送方發送ICMP_NET_UNREACH數據包 
      icmp_host:向發送方發送ICMP_HOST_UNREACH數據包 
      icmp_port:向發送方發送ICMP_PORT_UNREACH數據包 
      icmp_all:向發送方發送以上各種類型的ICMP數據包 
      多個參數可以結合使用,各個參數之間使用逗號隔開。
      格式:resp:;
      例子:FlexResp規則
      alert tcp any any -> 192.168.1.0/24 1524 (flags:S;resp:rst_all;msg:"Root shell backdoor attempt";)
      alert udp any any -> 192.1.168.1.0/ 31 (resp:icmp_port,icmp_host;msg:"Hacker's Paradise access attempt";)

      3.23 content-list
      使用content-list關鍵詞可以指定更多的正文字符串,突破了content規則選項只能指定單一字符串的限制。表18是一個conternt-list文件。每個要搜索的字符串占一行。這個規則選項是使用react關鍵詞的基礎。
      #adult sites
      porn
      adults
      hard core
      www.pornsite.com
      # ...
      content-list文件
      格式:content-list:"";

      3.24 react
      react關鍵詞是基于FlexResp(flexible response)的,它使snort對匹配某個規則的數據包作出反應?;镜姆磻褪亲枞脩粢L問的站點,例如色情站點。snort的FlexResp插件能夠主動關閉惡意連接,如果連接使用的是http或者代理服務器端口,FlexResp插件就會向瀏覽器發出一條HTML/JavaScript警告信息。這個規則選項可以使用下面幾個參數:
      block:關閉連接并發出注意信息 
      warn:發出警告信息 
      這兩個參數是基本參數,它們可以和下面的可選參數組合使用: 
      msg:定義要包含在警告信息中的文本 
      proxy::使用代理服務器端口發送警告信息 
      可選參數使用逗號分開,react關鍵詞應該放在選項的最后。

      例如:react規則
      alert tcp any any <> 192.168.1.0/24 80 (content-list:"adults";msg:"Not for children!";react:block,msg;)
      alert tcp any any <> 192.168.1.0/24 any (content-list:"adults";msg:"Adults list access attempt";react:block;)
      格式:react:;

      4.預處理器(preprocessors)
      4.1 預處理器綜述
      從snort-1.5開始加入了對預處理器的支持。有了這種支持,用戶和程序員能夠比較容易地編寫模塊化的插件,擴展snort的功能。預處理器在調用檢測引擎之前,在數據包被解碼之后運行。通過這種機制,snort可以以一種out of band的方式對數據包進行修改或者分析。
      預處理器可以使用preprocessor關鍵詞來加載和配置,格式如下:
      preprocessor : 
      例如:preprocessor minfrag: 128
      預處理器指令格式

      4.2 可用的預處理器模塊
      4.2.1 minfrag

      這個預處理器測試分片包的大小是否為一個特定的值。數據包分片,通常是源/目的地址之間的路由器完成的。一般來說,商業網絡設備產生的分片不會小于512個字節,基于這種情況,我們可以對很小的分片進行監視,很小的分片包一般是人為產生的,主要為了使用很小的碎片隱藏數據。
      格式:minfreg:<大小閥值>

      4.2.2 HTTP decode預處理插件
      HTTP解碼預處理模塊用來處理HTTP URI字符串,把它們轉換為清晰的ASCII字符串。這樣就可以對抗evasice web URL掃描程序和能夠避開字符串內容分析的惡意攻擊者。這個預處理模塊使用WEB端口號作為其參數,每個端口號使用空格分開。
      格式:http_decode:<端口號列表>
      例如:
      preprocessor http_decode: 80 8080
      使用HTTP decode預處理模塊的規則

      4.2.3 端口掃描檢測模塊
      snort端口掃描檢測預處理模塊是Patrick Mullen開發的,從他的個人主頁可以得到更多信息。
      snort端口掃描檢測預處理模塊主要做如下工作:
      把由單個源IP地址發起的端口掃描從開始到結束的全過程記錄到標準日志設備。 
      如果指定了一個日志文件,就把被掃描的IP地址和端口號和掃描類型都記錄到這個日志文件。 
      這個模塊使用的參數包括:
      監視的網絡: IP地址/子網掩碼的格式指定要進行端口掃描監視的網絡。 
      端口數: 在檢測周期(detection period)內訪問的端口數目。 
      檢測周期(detection period): 達到某個設定的端口訪問量需要的時間,以秒計。 
      日志目錄/文件: 保存警告信息的目錄/文件。警告信息也可以寫到默認警告文件中。 
      格式:portscan:<要監視的網絡> <端口數> <檢測周期> <日志目錄/文件>
      例子:

      preprocessor portscan:192.168.1.0/24 5 7 /var/log/portscan.log
      端口掃描檢測模塊的配置

      4.2.4 portscan ignorehosts
      Patrick Mullen對端口掃描檢測系統進行了改進,形成了另一個模塊--portscan ignorehosts。有些服務器程序容易和端口掃描檢測模塊造成沖突,例如NTP、NFS和DNS,如果你運行這些服務器程序,可以告訴端口掃描檢測模塊忽略對由特定主機發起的TCP SYN和UDP端口掃描的檢測。這個模塊使用的參數是一個要忽略的IP地址/CIDR的列表。
      格式:portscan-ignorehosts:<主機列表>
      例子:portscan ignorehosts模塊的配置
      preprocessor portscan-ignorehosts:192.168.1.5/32 192.168.3.0/24


      4.2.5 defrag模塊
      defrag插件是由Dragos Rulu開發的,它使snort能夠消除IP碎片包,給黑客使用IP碎片包繞過系統的檢測增加了難度。這個模塊非常容易配置,不需要參數,直接放在preprocessor關鍵詞之后即可。它的功能超過了migfrag模塊的功能,所以你如果使用defrag,就不用在用minfrag模塊了。
      格式:defrag
      例子:preprocessor defrag
      defrag模塊的配置

      4.2.6 stream模塊
      stream插件為snort提供了TCP數據包重組的功能。在配置的端口上,stream插件能夠對TCP數據包的細小片段進行重組成為完整的TCP數據包,然后snort可以對其可疑行為進行檢查。這個插件有好多參數:
      超時(timeout): 在一個TCP數據包送達之前,保存一個 
      TCP數據流緩沖的最長時間。 
      端口(port): 要監視的服務器端口。我們不想監視所有的 
      TCP端口,這也不太現實。 
      最大字節數(maxbytes): 重組包的最大長度。 
      格式:stream:timeout ,ports ,maxbytes 
      例如:
      preprocessor stream:timeout 5,ports 21 23 80 8080,maxbytes 16384
      TCP數據包重組插件配置

      4.2.7 spade:the Statisical Packet Anomaly Dection Engine
      如果需要了解更多關于spade的信息,請參考snort源代碼中的README.Spake文件,或者http://www.silicondefense.com/spice/。

      使用這個模塊使snort能夠在你的網絡上進行統計異常檢測(statistical anomaly dection),這是一個全新的檢測引擎。如果你對此感興趣,請參考源代碼中的有關文檔和SiliconDefense站點的有關文檔。

      5.輸出模塊
      5.1 輸出模塊綜述
      snort輸出模塊是從1.6版加入的新特征,使snort的輸出更為靈活。snort調用其報警或者日志子系統時,就會調用指定的輸出模塊。設置輸出模塊的規則和設置預處理模塊的非常相似。
      在snort配置文件中可以指定多個輸出插件。如果對同一種類型(報警、日志)指定了幾個輸出插件,那么當事件發生時,snort就會順序調用這些插件。使用標準日志和報警系統,默認情況下,輸出模塊就會將數據發送到/var/log/snor目錄,或者用戶使用-l命令行開關指定的目錄。
      在規則文件中,輸出模塊使用output關鍵詞指定:
      格式:output name:<選項>
      例子:
      output alert_syslog: LOG_AUTH LOG_ALERT
      輸出模塊的配置

      5.2 可用的輸出模塊

      5.2.1 alert_syslog

      使用這個輸出模塊,snort把報警信息發送到syslog,與-s命令行開關非常類似。這個輸出模塊允許用戶在規則文件中指定logging facility和優先級,給用戶以更大的靈活性。

      有效的關鍵詞:

      選項: 
      LOG_CONS 
      LOG_NDELAY 
      LOG_PERROR 
      LOG_PID 
      facility 
      LOG_AUTH 
      LOG_AUTHPRIV 
      LOG_DAEMON 
      LOG_LOCAL0 
      LOG_LOCAL1 
      LOG_LOCAL3 
      LOG_LOCAL4 
      LOG_LOCAL5 
      LOG_LOCAL6 
      LOG_LOCAL7 
      優先級 
      LOG_EMERG 
      LOG_ALERT 
      LOG_ERR 
      LOG_WARNING 
      LOG_NOTICE 
      LOG_INFO 
      LOG_DEBUG 
      格式:

      alert_syslog: <優先級> <選項>

      5.2.2 alert_fast

      使用快速單行格式(quick on line format)把snort報警信息輸出到指定的輸出文件。這種報警方式比完全(full)報警模式速度快,因為使用這種報警模式不需要把全部的數據包頭都輸出到指定的文件。

      格式:

      alert_fast: <輸出文件>

      例子:

      output alert_fast: alert.fast

      表27.快速報警配置

      5.2.3 alert_full

      把全部的數據包頭都輸出到snort報警信息。這種報警機制一般較滿,因為程序需要對整個數據包進行分析。報警信息可以輸出到默認的日志目錄/var/log/snort,也可以使用命令行指定日志目錄。

      格式:

      alert_full:<輸出文件>

      例子:

      output alert_full:alert_full

      表28.full報警配置

      5.2.4 alert_smb

      snort使用這個插件把WinPopup報警信息輸出到由NETBIOS命名的主機,主機名由參數指定的文件給出。注意我們不鼓勵使用這種報警方式,因為samba客戶程序smbclient以root權限運行。接收報警信息工作站的名字列表由保存在一個文件中,每行是一臺主機的NETBIOS名字。

      格式:

      alert_smb:<文件>

      例子:

      output alert_smb:workstation.list

      表29.SMB報警配置

      5.2.5 alert_unixsock

      設置一個UNIX域套接字(UNIX domain socket),把報警信息發送到這個套接字。外部程序/進程可以在這個套接字上監聽,實時接收snort報警信息和數據包數據。這個接口目前尚處于實驗狀態。

      格式:

      alert_unixsock

      示例:

      output alert_unixsock

      表30.UnixSock報警配置

      5.2.6 log_tcpdump

      log_tcpdump輸出模塊使用tcpdump格式的文件記錄數據包日志。這種日志文件格式便于使用很多外部的工具對數據進行分析,只要這些工具軟件支持tcpdump格式的文件。這個模塊只有一個參數,就是輸出文件的名字。

      格式:

      log_tcpdump:<輸出文件名>

      示例:

      output log_tcpdump:snort.log

      表31.tcpdump輸出模塊的配置

      5.2.7 數據庫輸出模塊

      snort的數據庫輸出模塊是JedPickel開發的,用來將snort產生的數據送到各種SQL數據庫系統。如果要獲得安裝和配置這個模塊更為詳盡的信息,可以參考ncident.org web page。這個插件使用的參數是記錄snort日志的數據庫名和參數表。參數表使用這種格式:parameter=argument。有如下參數可以使用:

      host: 數據庫所在的主機。如果指定了一個非零字符串,snort就使用TCP/IP協議連接以此命名的主機。如果沒有主機名,snort就使用一個本地UNIX-domain套接字連接本地主機。 
      port: 數據庫所在服務器的端口號,或者一個UNIX-domain套接字文件。 
      dbname: 數據庫名字。 
      user: 數據庫用戶名。 
      passwd: 密碼。 
      sensor_name: 指定這個snort觸發器的名字,如果沒有指定就自動產生。 
      encoding: 因為數據包的負載和選項都是二進制數據,所以沒有一種簡單和可移植的方式將snort的數據保存在數據庫。所以在snort數據庫輸出插件中提供了一些選項,讓你自己決定使用那種編碼。下面是這幾種編碼的優點和缺點: 
      hex: 默認編碼選項,使用16進制字符串代表二進制數據。 
      存儲空間: 兩倍于二進制數據

      搜索性: 極好

      可讀性: 極差

      base64: 使用base64字符串代表二進制數據。 
      存儲空間: 大約是直接存儲二進制數據的1.3倍

      搜索性: 可能無須后續處理。

      可讀性: 不可讀需要后續處理。

      ascii:: 使用ASCII字符串代替二進制數據。非ASCII字符使用.代替。如果你選擇這個選項,那么IP和TCP包頭的選項會仍然使用hex表示。 
      存儲空間: 比直接存儲二進制數據稍大。

      搜索性: 非常便于二進制數據中搜索文本字符串。

      可讀性: 很好。

      detail: 設置你要保存多少細節數據,有如下選項: 
      full: 保存引起報警的數據包的所有細節,包括IP/TCP包頭和負載數據。 
      fast: 只記錄少量的數據。如果選擇這種記錄方式,不利于以后對數據的分析,但在某些情況下還有其用處。使用這種方式,將記錄數據包的以下域:時間戳(timestamp)、簽名(signature)、源地址、目的地址、源端口、目的端口、TCP標志和協議。 
      還需要定義日志方法和數據庫類型。有兩種日志方法:log和alert。如果使用log,snort就會調用log輸出,將日志數據記錄到數據庫;如果設置為alert,snort就會調用alert輸出,在數據庫中記錄報警信息。

      當前版本中,snort可以使用四種數據庫:MySQL、PostgreSQL、Oracle以及和unixODBC兼容的數據庫??梢允褂媚阆矚g的數據庫。

      格式:

      database:,<數據庫類型>,<參數表>

      例子:

      output database:log,mysql,dbname=snort user=snort host=localhost password=xyz

      表33.數據庫輸出插件配置

      6.如何建立好的snort規則

      在開發高效、高速的snort規則時,有幾個概念要銘記于心。

      3. 關鍵詞content指定的內容是大小寫敏感的,除非你使用nocase選項 

      不要忘記content規則選項指定的內容是大小寫敏感的,許多程序一般使用大寫表示命令。FTP就是一個很好的例子。請比較下面兩條規則:

      alert tcp any any -> 192.168.1.0/24 21 (content:"user root";msg:"FTP root login";)
      alert tcp any any -> 192.168.1.0/24 21 (content:"USER root";msg:"FTP root login";)

      第二條規則可以使snort捕獲大多數使用root用戶名的自動登錄企圖,而在數據包中從來就沒有小寫的user。

      4. 提高snort對含有content規則選項的規則的檢測速度 

      snort檢測引擎對各個規則選項的測試順序與其在各條規則中所處的位置無關。在各個規則選項中,檢測引擎最后測試的總是content規則選項。因此,在開發規則時,要盡量使用快速的選項篩選掉根本不必對其內容進行檢查的包。例如,如果實現了一個TCP會話過程,那么在會話過程的大部分時間內,雙方傳輸的數據包的TCP標志ACK、PSH都被置位。而測試包頭的TCP標志比對數據包的內容進行模式匹配需要的計算量要小的多。所以,在開發相關的檢測規則時,需要設置flags規則選項對PSH和ACK沒有置位的數據包進行過濾。而這樣做,增加的額外計算量微乎其微。例如:

      alert tcp any any -> 192.168.1.0/24 80(content:"cgi-bin/phf";flags:PA;msg:"CGI-PHF probe";)

       

       

       

       

       

       

       

       

       

       

      posted @ 2020-12-14 21:34  Kin23  閱讀(73)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 人妻激情偷一区二区三区| 人妻出轨av中文字幕| 小嫩批日出水无码视频免费| 亚洲国模精品一区二区| 成在线人免费视频| 亚洲熟女一区二区av| 国产福利姬喷水福利在线观看| 亚洲欧美日韩国产精品专区| 高清性欧美暴力猛交| 人成午夜免费大片| 國產尤物AV尤物在線觀看| 亚洲精品日韩中文字幕| 亚洲欧美人成人综合在线播放| 国产一区日韩二区欧美三区| 国产女主播喷水视频在线观看| 国产高清在线男人的天堂| 国产精品99久久久久久www| 精品九九热在线免费视频| 狠狠色噜噜狠狠狠狠2021| 国内精品久久人妻无码不卡| 欧美成人精品在线| 国产精品中文字幕日韩| 亚洲精品久久久久午夜福禁果tⅴ| 国产免费高清69式视频在线观看| 99精品国产一区二区三| 国产精品福利自产拍久久| 国产精品偷伦费观看一次 | 亚洲av伦理一区二区| 国产999久久高清免费观看| 久久久久国产精品熟女影院 | 亚洲VA欧美VA国产综合| 日本污视频在线观看| 国产午夜在线观看视频播放| 熟女人妻aⅴ一区二区三区电影| 公喝错春药让我高潮| 亚洲av网一区天堂福利| 亚洲色大成网站WWW久久| 丰满高跟丝袜老熟女久久| 蜜芽久久人人超碰爱香蕉| 无码国产一区二区三区四区| 国产亚洲精品福利在线无卡一|