7.3 调整注意事项
检查最佳性能的设置。
7.3.1 最大等待数据包:<number>
此设置控制引擎可以处理的同时处理数据包的数量。 一般来说,设置这个值会使线程更忙,但是设置太高会导致线程退化。
建议设置:1000或更高。 Max是〜65000。
7.3.2 mpm-algo:<ac | hs | ac-bs | ac-ks>
控制模式匹配器算法。 AC是默认的。 在支持的平台上,Hyperscan是最好的选择。
7.3.3 detect.profile:<low | medium | high | custom>
检测引擎试图将分离的签名分成组,以便只检查实际上匹配的签名的分组。 正如在大规则集中这将导致太多的组和内存使用相似的组合并在一起。 配置文件设置控制这种合并的进行程度。 越高越好,但会导致更高的内存使用量。
“自定义”设置允许修改组大小:
custom-values:
toclient-groups: 50
toserver-groups: 50
一般来说,增加会提高性能,但会导致更高的内存使用量。
7.3.4 detect.sgh-mpm-context:<auto | single | full>
多模式匹配器可以根据签名组(全部)或全局(单个)具有上下文。 自动根据所选的mpm-algo选择single和full。 ac和ac-bs使用“single”。 所有其他“full”。 使用AC将其设置为“full”需要大量的内存:32GB +用于合理的规则集。
7.4 Hyperscan
7.4.1 介绍
“Hyperscan是一个高性能的多重正则表达式匹配库。”
https://01.org/hyperscan
Suricata可用于执行多模式匹配(mpm)。
Justin Viiret和Intel的Jim Xu实施了支持:https://github.com/inliniac/suricata/pull/1965,https://redmine.openinfosecfoundation.org/issues/1704
7.4.2 Compilation
可以通过-with-libhs-includes = /usr/local/ include/hs/ -with-libhs-libraries = /usr/local/lib /,但是默认情况下这不是必须的。 Suricata应该自动提取Hyperscan的pkg-config文件。
当Suricata汇编成功时,您应该拥有:
suricata --build-info|grep Hyperscan
Hyperscan support: yes
7.4.3 使用Hyperscan
要使用hyperscan支持编辑您的suricata.yaml。 将mpm-algo和spm-algo值更改为“hs”。
或者,使用这个命令行选项:-set mpm-algo = hs -set spm-algo = hs
7.4.4 Ubuntu Hyperscan安装
要将Suricata与Hyperscan支持一起使用,请安装依赖项:
apt-get install cmake ragel
7.4.4.1 libboost标题
Hyperscan需要1.58+的libboost头文件。
在Ubuntu 15.10或16.04+上,只需要:
apt-get install libboost-dev
7.4.4.2 Trusty
Trusty有1.57,所以太旧了。 我们可以抓取一个更新的libboost版本,但是我们不会在系统范围内安装它。 这只是我们在编译Hyperscan时关心的头文件。
sudo apt-get python-dev libbz2-dev
wget http://downloads.sourceforge.net/project/boost/boost/1.60.0/boost_1_60_0.tar.gz
tar xvzf boost_1_60_0.tar.gz
cd boost_1_60_0
./bootstrap.sh --prefix =〜/ tmp / boost-1.60
./b2 install
7.4.4.3. Hyperscan
我们将安装 4.2.0.版本
git clone https://github.com/01org/hyperscan
cd hyperscan
mkdir build
cd build
cmake -DBUILD_STATIC_AND_SHARED=1 ../
如果你有自己的libboost 头问就,则用cmatke替代:
cmake -DBUILD_STATIC_AND_SHARED=1 -DBOOST_ROOT=~/tmp/boost-1.60 ../
最后编译和安装
make
sudo make install
编译需要很长时间,最后看起来应该是这样的:
Install the project...
-- Install configuration: "RELWITHDEBINFO"
-- Installing: /usr/local/lib/pkgconfig/libhs.pc
-- Up-to-date: /usr/local/include/hs/hs.h
-- Up-to-date: /usr/local/include/hs/hs_common.h
-- Up-to-date: /usr/local/include/hs/hs_compile.h
-- Up-to-date: /usr/local/include/hs/hs_runtime.h
-- Installing: /usr/local/lib/libhs_runtime.a
-- Installing: /usr/local/lib/libhs_runtime.so.4.2.0
-- Installing: /usr/local/lib/libhs_runtime.so.4.2
-- Installing: /usr/local/lib/libhs_runtime.so
-- Installing: /usr/local/lib/libhs.a
-- Installing: /usr/local/lib/libhs.so.4.2.0
-- Installing: /usr/local/lib/libhs.so.4.2
-- Installing: /usr/local/lib/libhs.so
注意到,你应该天津 /usr/local/lib 到你的 ld 搜索路径。
echo "/usr/local/lib" | sudo tee --append /etc/ld.so.conf.d/usrlocal.conf
sudo ldconfig