1.7 Basic Output
Snort可以做很多任務, 並且在任務完成後輸出很多有用的統計信息. 一些不用說明就可以看懂, 其他的總結在這裏, 不過只是一些基本的
1.7.1 Timing Statistics
提供基本時間信息統計, 包括總的秒數和捕獲的packet數, 還有計算每秒抓多少個包, 例如:
===============================================================================
Run time for packet processing was 175.856509 seconds
Snort processed 3716022 packets.
Snort ran for 0 days 0 hours 2 minutes 55 seconds
Pkts/min: 1858011
Pkts/sec: 21234
===============================================================================
1.7.2 Packet I/O Totals
顯示 DAQ 抓到的和注入的包的總數。如果看pcaps的話,顯示的是所有的pcaps,除非使用 -pcap-reset
來顯示每一個 pcap
- 非常棒的顯示了有多少個已經緩存的packets,這個方式是統計各種DAQ的信息,所以可以讀DAQ的文檔獲取更多信息。
- 過濾的包不會被DAQ記錄
- 注入(injected)的包是主動響應(active response)的結果,在 inline 或 passive 模式中配置。
示例:
===============================================================================
Packet I/O Totals:
Received: 3716022
Analyzed: 3716022 (100.000%)
Dropped: 0 ( 0.000%)
Filtered: 0 ( 0.000%)
Outstanding: 0 ( 0.000%)
Injected: 0
===============================================================================
1.7.3 Protocol Statistics
顯示Snort解析的所有流量的協議,這些協議包括內部的 pseudo-packets 如果啓用像 frag3 和 steam5 的話總數會比解析的包大的多。
- 盤計數(Disc counts)因爲基本編碼的缺陷Snort無法解碼,歸爲丟棄數。
- Other 項包含Snort無法解碼的包
- S5 G 1/2 項是 客戶端/服務器 會話中 stream5 刷新用來 緩存限制(cache limit) 會話超時(session timeout) 會話重置(session reset) 的計數.
示例:
===============================================================================
Breakdown by protocol (includes rebuilt packets):
Eth: 3722347 (100.000%)
VLAN: 0 ( 0.000%)
IP4: 1782394 ( 47.884%)
Frag: 3839 ( 0.103%)
ICMP: 38860 ( 1.044%)
UDP: 137162 ( 3.685%)
TCP: 1619621 ( 43.511%)
IP6: 1781159 ( 47.850%)
IP6 Ext: 1787327 ( 48.016%)
IP6 Opts: 6168 ( 0.166%)
Frag6: 3839 ( 0.103%)
ICMP6: 1650 ( 0.044%)
UDP6: 140446 ( 3.773%)
TCP6: 1619633 ( 43.511%)
Teredo: 18 ( 0.000%)
ICMP-IP: 0 ( 0.000%)
EAPOL: 0 ( 0.000%)
IP4/IP4: 0 ( 0.000%)
IP4/IP6: 0 ( 0.000%)
IP6/IP4: 0 ( 0.000%)
IP6/IP6: 0 ( 0.000%)
GRE: 202 ( 0.005%)
GRE Eth: 0 ( 0.000%)
GRE VLAN: 0 ( 0.000%)
GRE IP4: 0 ( 0.000%)
GRE IP6: 0 ( 0.000%)
GRE IP6 Ext: 0 ( 0.000%)
GRE PPTP: 202 ( 0.005%)
GRE ARP: 0 ( 0.000%)
GRE IPX: 0 ( 0.000%)
GRE Loop: 0 ( 0.000%)
MPLS: 0 ( 0.000%)
ARP: 104840 ( 2.817%)
IPX: 60 ( 0.002%)
Eth Loop: 0 ( 0.000%)
Eth Disc: 0 ( 0.000%)
IP4 Disc: 0 ( 0.000%)
IP6 Disc: 0 ( 0.000%)
TCP Disc: 0 ( 0.000%)
UDP Disc: 1385 ( 0.037%)
ICMP Disc: 0 ( 0.000%)
All Discard: 1385 ( 0.037%)
Other: 57876 ( 1.555%)
Bad Chk Sum: 32135 ( 0.863%)
Bad TTL: 0 ( 0.000%)
S5 G 1: 1494 ( 0.040%)
S5 G 2: 1654 ( 0.044%)
Total: 3722347
===============================================================================
1.7.4 Snort Memory Statistics
示例:
===============================================================================
Memory usage summary:
Total non-mmapped bytes (arena): 415481856
Bytes in mapped regions (hblkhd): 409612288
Total allocated space (uordblks): 92130384
Total free space (fordblks): 323351472
Topmost releasable block (keepcost): 3200
===============================================================================
1.7.5 Actions, Limits, and Verdicts
Action 和 Verdicts 的計數顯示了Snort分析過的包。這個信息只會在IDS模式(-c <conf>
)輸出。
- Alearts 計數了規則中定義的活動(activate)的,警告(alert)和屏蔽(block)的動作。block中包括block,drop和reject動作。
Limits的引入是因爲現實中包括執行時間和可用內存。這些導致潛伏的動作沒有發生:
- Match Limit 計數規則匹配了因爲
config detection: max queue events
設置中限制的沒有執行的動作。 - Queue Limit 計數了時間隊列中因爲
config event queue: max queue
設置中限制的不能儲存的事件。 - Log Limit 計數了因爲
config event queue: log
設置中限制的沒有報警的事件。 - Event Limit 計數了
event_filter
中限制的沒有報警的事件。 - Alert Limit 計數了因爲已經在會話中觸發沒有報警的事件。
Vedicts由Snort中分析的每個包計數:
- Allow Snort分析後沒有進行動作的包。
- Block Snort因爲block規則沒有轉發的包。用 Block 代替 Drop 來防止混淆丟包(Snort沒有見到的包 Dropped packets)和屏蔽包(Snort不允許通過的包 Blocked packets)。
- Replace Snort修正的包,例如,爲了一般化或者因爲替代規則規定(replace rules)。這只能在 inline 模式中和可兼容的 DAQ 產生。
- Whitelist Snort分析程式允許通過 w/o 檢查的流,和 blacklist 類似,由DAQ或者Snort後續的包完成。
- Blacklist Snort不允許通過的流。如果DAQ硬件支持,會話中Snort不會見到其中的包,如果不支持,snort會屏蔽每個包而且這會導致計數變高。
- Ignore Snort一次允許通過 w/o 檢查的流。和 blacklist 一樣,這由DAQ或Snort後續的包完成。
- Int Blklst 屏蔽的 GTP Teredo 6in4 或者 4in6 封裝的包。這些包如果在
config tunnel verdicts
中設置了以上協議會被列入黑名單屏蔽。注意只計入輸出非零的輸出。同時,這個計數會在流中第一個包報警時增加。長生警告的包和其流中之後所有的包都會被計數而且屏蔽。 - Int Whtlst 允許通過的 GTP Teredo 6in4 或者 4in6 封裝的包。這些包如果在
config tunnel verdicts
中設置了以上協議會被列入白名單。注意只計入輸出非零的輸出。同時,這個計數會在流中所有警告的包增加。
示例:
===============================================================================
Action Stats:
Alerts: 0 ( 0.000%)
Logged: 0 ( 0.000%)
Passed: 0 ( 0.000%)
Limits:
Match: 0
Queue: 0
Log: 0
Event: 0
Alert: 0
Verdicts:
Allow: 3716022 (100.000%)
Block: 0 ( 0.000%)
Replace: 0 ( 0.000%)
Whitelist: 0 ( 0.000%)
Blacklist: 0 ( 0.000%)
Ignore: 0 ( 0.000%)
===============================================================================
1.8 Tunneling Protocol Support
Snort支持解碼很多隧道協議(tunneling protocol),包括 GRE, MPLS, IP in IP, ERSPAN, 全部默認開啓。
關閉任何GRE相關封包的支持, PPTP over GRE, IPv4/IPv6 over GRE, ERSPAN,需要一條額外的設置:
$ ./configure --disable-gre
關閉MPLS支持,需要單獨的配置:
$ ./configure --disable-mpls
1.8.1 Multiple Encapsulations
Snort會解碼多重封包,例如:
Eth IPv4 GRE IPv4 GRE IPv4 TCP Payload
或者
Eth IPv4 IPv6 IPv4 TCP Payload
將不會被處理並且產生解碼器警告。
1.8.2 Logging
目前,只有分組的封裝部分被記錄,例如:
Eth IP1 GRE IP2 TCP Payload
被記錄爲
Eth IP2 TCP Payload
和
Eth IP1 IP2 TCP Payload
被記錄爲
Eth IP2 TCP Payload
注意:PPTP 是利用 GRE 和 PPP,解碼PPTP時,目前不支持需要字對齊(word alignment)的架構,例如 SPARC 。