9.4. 超扫描

9.4.1. 介绍

“Hyperscan是一个高性能的多regex匹配库。”https://www.hyperscan.io

在Suricata中,它可以用于执行多模式匹配(MPM)。Intel的Justin Viiret和Jim Xu实施了支持:https://github.com/inliniac/suricata/pull/1965https://redmine.openinfosecfoundation.org/issues/1704

9.4.2. 汇编

使用lib hs-include s=/usr/local/include/hs/,可以传递libhs-libraries=/usr/local/lib/,但默认情况下不需要这样做。Suricata应该自动获取Hyperscan的pkg配置文件。

当Suricata的编译成功时,您应该:

suricata --build-info|grep Hyperscan
  Hyperscan support:                       yes

9.4.3. 使用超扫描

要使用Hyperscan支持,请编辑suricata.yaml。将mpm algo和spm algo值更改为“hs”。

或者,使用此命令行选项:--set mpm algo=hs--set spm algo=hs

9.4.4. Ubuntu Hyperscan安装

要在支持Hyperscan的情况下使用Suricata,请安装依赖项:

apt-get install cmake ragel

9.4.4.1. libboost头

Hyperscan需要1.58+的libboost头文件。

在Ubuntu 15.10或16.04+上,只需执行以下操作:

apt-get install libboost-dev

9.4.4.2. 信任

trusty有1.57,所以太旧了。我们可以得到一个新的libboost版本,但是我们 不要 在系统范围内安装IT。这只是我们在编译超扫描时关心的头文件。

sudo apt-get python-dev libbz2-dev
wget https://dl.bintray.com/boostorg/release/1.66.0/source/boost_1_66_0.tar.gz
tar xvzf boost_1_66_0.tar.gz
cd boost_1_66_0
./bootstrap.sh --prefix=~/tmp/boost-1.66
./b2 install

9.4.4.3. 超扫描

我们将安装5.0.0版。

git clone https://github.com/intel/hyperscan
cd hyperscan
mkdir build
cd build
cmake -DBUILD_STATIC_AND_SHARED=1 ../

如果您有自己的libboost头,请使用以下cmake行:

cmake -DBUILD_STATIC_AND_SHARED=1 -DBOOST_ROOT=~/tmp/boost-1.66 ../

最后,制作并安装:

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