7.5 高性能配置
如果有足夠的內(nèi)存吗讶,請(qǐng)考慮suricata.yaml中的以下選項(xiàng)燎猛,以盡可能減輕CPU的工作量:
detect:
profile: custom
custom-values:
toclient-groups: 200
toserver-groups: 200
sgh-mpm-context: auto
inspection-recursion-limit: 3000
但是恋捆,請(qǐng)注意,即使規(guī)模適中的規(guī)則集可能也需要大量RAM重绷。 另外請(qǐng)注意沸停,有更多的CPU可用提供了更大的性能提升比有更多的RAM可用。 也就是說昭卓,配置一個(gè)系統(tǒng)的時(shí)候愤钾,最好把錢花在CPU而不是RAM上。
這也可能導(dǎo)致規(guī)則加載時(shí)間顯著延長(zhǎng)候醒。
7.6. Statistics
The stats.log produces statistics records on a fixed interval, by default every 8 seconds.
7.6.1. stats.log file
7.6.1.1 檢測(cè)數(shù)據(jù)包丟失
關(guān)機(jī)時(shí)能颁,Suricata報(bào)告從pcap,pfring或afpacket獲取的數(shù)據(jù)包丟失統(tǒng)計(jì)數(shù)據(jù)
[18088] 30/5/2012 -- 07:39:18 - (RxPcapem21) Packets 451595939, bytes 410869083410
[18088] 30/5/2012 -- 07:39:18 - (RxPcapem21) Pcap Total:451674222 Recv:451596129 Drop:78093 (0.0%).
通常情況下倒淫,這不是完整的故事伙菊。 這些是內(nèi)核丟棄狀態(tài),但是NIC也可能丟包。 使用ethtool得到那些:
# ethtool -S em2
NIC statistics:
rx_packets: 35430208463
tx_packets: 216072
rx_bytes: 32454370137414
tx_bytes: 53624450
rx_broadcast: 17424355
tx_broadcast: 133508
rx_multicast: 5332175
tx_multicast: 82564
rx_errors: 47
tx_errors: 0
tx_dropped: 0
multicast: 5332175
collisions: 0
rx_length_errors: 0
rx_over_errors: 0
rx_crc_errors: 51
rx_frame_errors: 0
rx_no_buffer_count: 0
rx_missed_errors: 0
tx_aborted_errors: 0
tx_carrier_errors: 0
tx_fifo_errors: 0
tx_heartbeat_errors: 0
tx_window_errors: 0
tx_abort_late_coll: 0
tx_deferred_ok: 0
tx_single_coll_ok: 0
tx_multi_coll_ok: 0
tx_timeout_count: 0
tx_restart_queue: 0
rx_long_length_errors: 0
rx_short_length_errors: 0
rx_align_errors: 0
tx_tcp_seg_good: 0
tx_tcp_seg_failed: 0
rx_flow_control_xon: 0
rx_flow_control_xoff: 0
tx_flow_control_xon: 0
tx_flow_control_xoff: 0
rx_long_byte_count: 32454370137414
rx_csum_offload_good: 35270755306
rx_csum_offload_errors: 65076
alloc_rx_buff_failed: 0
tx_smbus: 0
rx_smbus: 0
dropped_smbus: 0
7.6.2 內(nèi)核丟包
stats.log在capture.kernel_packets和capture.kernel_drops中包含有趣的信息镜硕。 捕捉模式的含義不同运翼。
在AF_PACKET模式下:
kernel_packets是正確發(fā)送到用戶空間的數(shù)據(jù)包的數(shù)量
kernel_drops是被丟棄的數(shù)據(jù)包的數(shù)量,而不是被發(fā)送到用戶空間
在PF_RING模式下:
kernel_packets是pf_ring看到的數(shù)據(jù)包總數(shù)
kernel_drops是被丟棄的數(shù)據(jù)包的數(shù)量兴枯,而不是被發(fā)送到用戶空間
在Suricata stats.log中血淌,TCP數(shù)據(jù)間隔計(jì)數(shù)器也是一個(gè)指示器,因?yàn)樗涗浟薚CP流中丟失的數(shù)據(jù)包:
tcp.reassembly_gap | Detect | 789
理想情況下财剖,這個(gè)數(shù)字是0.不僅pkt損失影響它悠夯,也不好的校驗(yàn)和和流引擎內(nèi)存不足。
7.6.3 繪制圖形的工具
有些人制作了很好的工具來繪制統(tǒng)計(jì)文件的圖表躺坟。
ipython和matplotlib腳本
使用Zabbix或其他在Github上的代碼進(jìn)行監(jiān)控
下一頁上一頁
7.7 忽略流量
在某些情況下疗疟,有理由忽略某些流量。 某些主機(jī)可能是可信的瞳氓,或者應(yīng)該忽略備份流策彤。
本文檔列出了一些忽略流量的策略。
7.7.1 捕獲過濾器(BPF)
通過BPFs匣摘,捕獲方法pcap店诗,af-packet和pf_ring可以被告知發(fā)送給Suricata的內(nèi)容,而不是什么音榜。 例如一個(gè)簡(jiǎn)單的過濾器“tcp”只會(huì)發(fā)送tcp數(shù)據(jù)包庞瘸。
如果需要忽略某些主機(jī)和/或網(wǎng)絡(luò),請(qǐng)使用“not(host IP1 or IP2 or IP3 or net NET / 24)”赠叼。
例:
not host 1.2.3.4
捕獲過濾器在所有其他選項(xiàng)之后在命令行中指定:
suricata -i eth0 -v not host 1.2.3.4
suricata -i eno1 -c suricata.yaml tcp or udp
捕獲過濾器可以在pcap擦囊,af-packet,netmap和pf_ring部分的每個(gè)接口中設(shè)置嘴办。 它也可以放在一個(gè)文件中:
echo "not host 1.2.3.4" > capture-filter.bpf
suricata -i ens5f0 -F capture-filter.bpf
使用捕獲過濾器可以限制Suricata處理的流量瞬场。 因此,Suricata未見的流量將不會(huì)被檢查涧郊,記錄或記錄贯被。
7.7.2 通過規(guī)則
通過規(guī)則是Suricata規(guī)則,如果匹配妆艘,則傳遞數(shù)據(jù)包彤灶,如果是TCP,則傳遞剩余的數(shù)據(jù)流批旺。 他們看起來像正常的規(guī)則幌陕,除了“通知”,而不是“提醒”或“drop”汽煮。
例:
pass ip 1.2.3.4 any <> any any (msg:"pass all traffic from/to 1.2.3.4"; sid:1;)
捕獲過濾器的一個(gè)很大的不同之處在于搏熄,對(duì)于此流量茅诱,仍然會(huì)生成諸如Eve或http.log之類的日志。
7.7.3 壓制
可以使用抑制規(guī)則來確保不會(huì)為主機(jī)生成警報(bào)搬卒。 然而這不是有效的瑟俭,因?yàn)閴褐浦槐徽J(rèn)為是在匹配后。 換句話說契邀,Suricata首先檢查規(guī)則摆寄,然后才考慮每個(gè)主機(jī)的抑制。
例:
suppress gen_id 0, sig_id 0, track by_src, ip 1.2.3.4
7.8 數(shù)據(jù)包分析
在本指南中將解釋如何啟用數(shù)據(jù)包分析坯门,并將其與Ubuntu上最新的Suricata代碼一起使用微饥。 它基于您已經(jīng)從GIT存儲(chǔ)庫安裝Suricata。
如果您想知道數(shù)據(jù)包需要處理多長(zhǎng)時(shí)間古戴,數(shù)據(jù)包分析很方便欠橘。 這是找出為什么某些數(shù)據(jù)包比其他數(shù)據(jù)包更快處理的一種方法,這種方法是開發(fā)Suricata的好工具现恼。
按照從Git安裝的步驟更新Suricata肃续。 從最后開始
cd suricata/oisf
git pull
并按照下面描述的步驟。 要啟用數(shù)據(jù)包分析叉袍,請(qǐng)確保在配置階段輸入以下內(nèi)容:
./configure --enable-profiling
找到你有pcap的文件夾始锚。 如果你還沒有pcap,你可以用Wireshark獲得這些喳逛。 使用Wireshark查看嗅探包瞧捌。
轉(zhuǎn)到您的pcaps目錄。 例如:
cd ~/Desktop
用ls命令可以看到文件夾的內(nèi)容润文。 選擇一個(gè)文件夾和一個(gè)pcap文件
例如:
cd ~/Desktop/2011-05-05
suricata -c /etc/suricata/suricata.yaml -r log.pcap.(followed by the number/name of your pcap)
例如:
suricata -c /etc/suricata/suricata.yaml -r log.pcap.1304589204