Suricata文档——第七章性能3
7.5 高性能配置
如果有足够的内存,请考虑suricata.yaml中的以下选项,以尽可能减轻CPU的工作量:
detect:
profile: custom
custom-values:
toclient-groups: 200
toserver-groups: 200
sgh-mpm-context: auto
inspection-recursion-limit: 3000
但是,请注意,即使规模适中的规则集可能也需要大量RAM。 另外请注意,有更多的CPU可用提供了更大的性能提升比有更多的RAM可用。 也就是说,配置一个系统的时候,最好把钱花在CPU而不是RAM上。
这也可能导致规则加载时间显着延长。
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 检测数据包丢失
关机时,Suricata报告从pcap,pfring或afpacket获取的数据包丢失统计数据
[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%).
通常情况下,这不是完整的故事。 这些是内核丢弃状态,但是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 内核丢包
stats.log在capture.kernel_packets和capture.kernel_drops中包含有趣的信息。 捕捉模式的含义不同。
在AF_PACKET模式下:
kernel_packets是正确发送到用户空间的数据包的数量
kernel_drops是被丢弃的数据包的数量,而不是被发送到用户空间
在PF_RING模式下:
kernel_packets是pf_ring看到的数据包总数
kernel_drops是被丢弃的数据包的数量,而不是被发送到用户空间
在Suricata stats.log中,TCP数据间隔计数器也是一个指示器,因为它记录了TCP流中丢失的数据包:
tcp.reassembly_gap | Detect | 789
理想情况下,这个数字是0.不仅pkt损失影响它,也不好的校验和和流引擎内存不足。
7.6.3 绘制图形的工具
有些人制作了很好的工具来绘制统计文件的图表。
ipython和matplotlib脚本
使用Zabbix或其他在Github上的代码进行监控
下一页上一页
7.7 忽略流量
在某些情况下,有理由忽略某些流量。 某些主机可能是可信的,或者应该忽略备份流。
本文档列出了一些忽略流量的策略。
7.7.1 捕获过滤器(BPF)
通过BPFs,捕获方法pcap,af-packet和pf_ring可以被告知发送给Suricata的内容,而不是什么。 例如一个简单的过滤器“tcp”只会发送tcp数据包。
如果需要忽略某些主机和/或网络,请使用“not(host IP1 or IP2 or IP3 or net NET / 24)”。
例:
not host 1.2.3.4
捕获过滤器在所有其他选项之后在命令行中指定:
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部分的每个接口中设置。 它也可以放在一个文件中:
echo "not host 1.2.3.4" > capture-filter.bpf
suricata -i ens5f0 -F capture-filter.bpf
使用捕获过滤器可以限制Suricata处理的流量。 因此,Suricata未见的流量将不会被检查,记录或记录。
7.7.2 通过规则
通过规则是Suricata规则,如果匹配,则传递数据包,如果是TCP,则传递剩余的数据流。 他们看起来像正常的规则,除了“通知”,而不是“提醒”或“drop”。
例:
pass ip 1.2.3.4 any <> any any (msg:"pass all traffic from/to 1.2.3.4"; sid:1;)
捕获过滤器的一个很大的不同之处在于,对于此流量,仍然会生成诸如Eve或http.log之类的日志。
7.7.3 压制
可以使用抑制规则来确保不会为主机生成警报。 然而这不是有效的,因为压制只被认为是在匹配后。 换句话说,Suricata首先检查规则,然后才考虑每个主机的抑制。
例:
suppress gen_id 0, sig_id 0, track by_src, ip 1.2.3.4
7.8 数据包分析
在本指南中将解释如何启用数据包分析,并将其与Ubuntu上最新的Suricata代码一起使用。 它基于您已经从GIT存储库安装Suricata。
如果您想知道数据包需要处理多长时间,数据包分析很方便。 这是找出为什么某些数据包比其他数据包更快处理的一种方法,这种方法是开发Suricata的好工具。
按照从Git安装的步骤更新Suricata。 从最后开始
cd suricata/oisf
git pull
并按照下面描述的步骤。 要启用数据包分析,请确保在配置阶段输入以下内容:
./configure --enable-profiling
找到你有pcap的文件夹。 如果你还没有pcap,你可以用Wireshark获得这些。 使用Wireshark查看嗅探包。
转到您的pcaps目录。 例如:
cd ~/Desktop
用ls命令可以看到文件夹的内容。 选择一个文件夹和一个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