3.5 Snort Post-Detection規則選項
3.5.1 logto
logto關鍵字告訴Snort將觸發此規則的所有包記錄到一個特殊的輸出日志文件中。這對于合并來自NMAP活動、HTTP CGI掃描等的數據尤其方便。應該注意,該選項在Snort處于二進制日志記錄模式時不起作用。
3.5.1.1 格式
logto:"filename";
3.5.2 session
session 關鍵字用于從TCP會話中提取用戶數據。在很多情況下,查看用戶在telnet、rlogin、ftp甚至web會話中輸入的內容非常有用。
會話規則選項有三個可用的參數關鍵字:printable、binary或all。
printable關鍵字只打印用戶通常會看到或能夠鍵入的數據。binary關鍵字以二進制格式打印數據。all關鍵字用十六進制的等價物替換不可打印字符。
3.5.2.1 格式
session:[printable|binary|all];
3.5.2.2 例子
下面的示例記錄telnet包中的所有可打印字符串。
log tcp any any <> any 23 (session:printable;)
給定端口12345上的FTP數據會話,本示例以二進制形式記錄有效負載字節。
log tcp any any <> any 12345 (metadata:service ftp-data; session:binary;)
3.5.2.3 警告
使用session關鍵字可能會大大降低Snort的速度,因此不應該在高負載情況下使用它。session關鍵字最適合后處理二進制(pcap)日志文件。
關鍵字“binary”不會記錄任何應用層以下的協議頭,當記錄重新組裝的包時,流重新組裝將導致重復數據。
3.5.3 resp
resp關鍵字支持一個主動響應,該響應可以消除干擾會話。Resp可以在被動模式或內聯模式中使用。
3.5.4 react
react關鍵字支持主動響應,包括向客戶端發送web頁面或其他內容,然后關閉連接。React可以在被動模式和內聯模式中使用。
3.5.5 tag
tag關鍵字允許規則記錄多個觸發規則的數據包。一旦一個規則被觸發,涉及源和/或目標主機的額外流量將被標記。記錄標記的流量,以允許分析響應代碼和攻擊后流量。帶標記的警報將被發送到與原始警報相同的輸出插件,但是正確處理這些特殊警報是輸出插件的責任。
3.5.5.1 格式
tag:host, <count>, <metric>, <direction>;
tag:session[, <count>, <metric>][, exclusive];
type
session- 記錄會話中設置規則的包host- 記錄來自主機的導致標簽激活的數據包(使用[方向]修改器)
count
<integer>- 計數指定為單位數。單位在< metric>字段中指定.
metric
packets- 為主機/會話標記 < count >數據包seconds- 為主機/會話標記< count>秒bytes- 為主機/會話標記< count>字節
other
src- 標記包,其中包含生成初始事件的包的源IP地址。只有在使用主機類型時才相關。dst- 包含產生初始事件的包的目的IP地址的標記包。只有在使用主機類型時才相關。exclusive- 標簽包只在第一個匹配的會話。只有在使用會話類型時才相關。
注意,后續的警報和事件過濾器都不會阻止標記包被記錄。隨后的標記警報將導致限制重置。
alert tcp any any <> 10.1.1.1 any
(flowbits:isnotset,tagged; content:"foobar"; nocase;
flowbits:set,tagged; tag:host,600,seconds,src;)
還請注意,如果在使用“數據包”以外的度量的規則中有標記選項,那么將使用tagged_packet_limit來限制已標記的數據包的數量,而不管是否達到了秒或字節計數。默認的tagged_packet_limit值為256,可以通過使用snort.conf文件中的config選項修改tagged_packet_limit配置選項。您可以禁用這個包限制為特定規則通過添加一個“包”度量你的標簽選項,其計數設置為0(可以在全球范圍內通過設置tagged_packet_limit在snort . conf中選擇0)。這樣做將確保數據包標記的全額秒或字節,不會被切斷的tagged_packet_limit。(注意,tagged_packet_limit的引入是為了避免在高帶寬傳感器上對具有高“秒”或“字節”計數的標記規則使用DoS情況。)
alert tcp 10.1.1.4 any -> 10.1.1.1 any
(content:"TAGMYPACKETS"; tag:host,0,packets,600,seconds,src;)
3.5.5.2 例子
這個示例記錄任何telnet會話的前10秒或’ tagged_packet_limit ‘(無論哪個先出現)。alert tcp any any -> any 23 (flags:S,CE; tag:session,10,seconds;)
雖然tag:host 至少需要一個計數和度量,但是沒有任何度量的tag:session 可以用來獲得完整的會話,如下所示:
pass tcp any any -> 192.168.1.1 80 (flags:S; tag:session,exclusive;)
3.5.6 replace
replace關鍵字是內聯模式中可用的一個特性,它將導致Snort用給定的字符串替換之前匹配的內容。新字符串和要替換的內容必須具有相同的長度。在一個規則中可以有多個替換,每個內容一個替換。
replace:"<string>";
3.5.7 detection_filter
detection_filter定義了一個速率,在規則生成事件之前,源主機或目標主機必須超過這個速率。detection_filter的格式如下:
detection_filter:
track <by_src|by_dst>,
count <c>, seconds <s>;
| 選項 | 描述 |
|---|---|
| `track by_src | by_dst` |
count c |
超過檢測篩選器限制之前允許的最大規則匹配數(以秒為單位)。C必須是非零的。 |
seconds s |
累計計數的時間周期。該值必須是非零的。 |
Snort在評估所有其他規則選項(與過濾器在規則源中的位置無關)之后,將detection_filter作為檢測階段的最后一步進行評估。每個規則最多允許一個detection_filter。
例子 - 在一個60秒的采樣周期內,在第一次30次失敗的登錄嘗試之后,該規則將在10.1.2.100開始的每一次失敗的登錄嘗試上觸發:
drop tcp 10.1.2.100 any > 10.1.1.100 22 (
msg:"SSH Brute Force Attempt";
flow:established,to_server;
content:"SSH"; nocase; offset:0; depth:4;
detection_filter:track by_src, count 30, seconds 60;
sid:1000001; rev:1;)
因為可能會生成許多事件,所以detection_filter通常會與event_filter一起使用,以減少記錄的事件數量。
注意:如上所述,Snort將’ detection_filter ‘作為檢測的最后一步,而不是在檢測后進行評估。
3.5.8 Post-Detection 快速參考
下表顯示Post-detection規則選項關鍵字:
| 關鍵字 | 描述 |
|---|---|
logto |
logto關鍵字告訴Snort將觸發此規則的所有包記錄到一個特殊的輸出日志文件中。 |
session |
構建session關鍵字是為了從TCP會話中提取用戶數據。 |
resp |
resp關鍵字用于在觸發警報時試圖關閉會話。 |
react |
通過關閉連接并發送通知,該關鍵字使用戶能夠對匹配Snort規則的流量做出反應。 |
tag |
tag關鍵字允許規則記錄多個觸發該規則的數據包。 |
replace |
用相同長度的給定字符串替換前面匹配的內容。只能在內聯模式下使用。 |
detection_filter |
按源或目標IP地址跟蹤,如果規則匹配的速率超過配置的速率,它將觸發。 |
Snort安裝使用中文手冊
推薦文章: