0x01 安装 Hyperscan

1、Hyperscan 安装要求:

  • GCC 版本大于等于 4.8.1,使用 yum 源安装即可
  • CMake 版本大于等于 2.8.11,使用 yum 源安装即可
  • Ragel 版本大于等于 6.9,使用 yum 源安装即可
  • Python 版本为 2.7,使用系统默认的
  • Boost 版本大于等于 1.57,Boost 不需要安装,只需要头文件
  • Pcap 版本大于等于 0.8,使用 yum 源安装即可
  • pcre 版本为 8.41,需要自行编译安装

hyperscandependency.png

2、安装编译 pcre 所需的依赖包

yum install -y wget gcc gcc-c++ epel-release

3、编译安装 pcre

下载 pcre-8.41,选择合适的参数编译安装 pcre。本次编译选择开启 utf、pcre16、pcre32、unicode、pcre-jit 支持,选用 --libdir=/usr/lib64 --includedir=/usr/include 参数,其他路径可能需要写入 PATH;若选用默认编译安装路径,在编译 hyperscan 时会提示 PCRE not found,生成的 hyperscan 中不包含 PCRE 预处理功能。

PCRE 预处理功能简介:

pcrewithhyperscan.png

wget https://ftp.pcre.org/pub/pcre/pcre-8.41.tar.gz
tar zxvf pcre-8.41.tar.gz
cd pcre-8.41
./configure --enable-utf --enable-jit --enable-pcre16 --enable-pcre32 --enable-unicode-properties --libdir=/usr/lib64 --includedir=/usr/include
make
make install

4、安装编译 Hyperscan 所需依赖包

yum install -y cmake libpcap-devel ragel-devel sqlite-devel

5、下载 Hyperscan 源码

下载 Hyperscan 源码,解压后给 hyperscan 文件夹赋予 755 权限即可

wget https://github.com/intel/hyperscan/archive/v5.0.0.tar.gz
tar zxvf hyperscan-5.0.0.tar.gz
chmod -R 755 hyperscan-5.0.0

6、下载 boost-1.66 源码

下载 boost-1.66 源码,解压并链接到 /hyperscan/include/ 目录下

wget http://downloads.sourceforge.net/project/boost/boost/1.66.0/boost_1_66_0.tar.gz
tar zxvf boost_1_66_0.tar.gz
ln -s /boost_1_66_0/boost /hyperscan/include/boost

7、编译安装 Hyperscan

创建 Hyperscan 编译目录,同时构建静态库和共享库,类型选 release,编译安装 Hyperscan

CMake配置说明:

cmake.png

构建类型说明:

buildtype.png

mkdir hs_build
cd hs_build
cmake ../hyperscan -DBUILD_STATIC_AND_SHARED=on -DCMAKE_BUILD_TYPE=Release
make
make install

0x02 安装 Suricata

1、安装前配置

复制头文件到 /usr/include/ 下,否则需要修改 PATH;将 hyperscan 动态库的位置写入配置文件,以便于 suricata 编译时能找到 libhs.so 文件

cp /usr/local/include/hs/* /usr/include/
echo "/usr/local/lib64" > /etc/ld.so.conf.d/libhs.conf
ldconfig

注意:必须执行 ldconfig,否则会提示找不到文件,造成 suricata 无法正常编译。

2、安装 suricata 依赖

yum install -y pcre-devel libyaml-devel zlib-devel cargo jansson-devel PyYAML
yum install -y libcap-ng-devel file-devel lz4-devel

3、下载 suricata 源码

wget https://www.openinfosecfoundation.org/download/suricata-4.1.0.tar.gz
tar zxvf suricata-4.1.0.tar.gz
cd suricata-4.1.0

4、开启 Prelude 支持

如果要开启 Prelude support ,需要安装 libprelude-develgnutls-devel 以及注释 configure 文件中第 17936 行附近的内容,编译安装

preludesupport.png

yum install -y libprelude-devel gnutls-devel
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-hyperscan --enable-old-barnyard2 --enable-prelude --enable-pie
make
make install
ldconfig

注意:安装完毕后必须执行 ldconfig,否则会提示缺少 .so 文件,造成程序无法正常运行。

5、创建配置文件&&安装规则

make install-conf
make install-rules

installrules.png

6、测试 suricata

测试 suricata 默认配置文件中加载的官方规则

suricata -T

suricatatest.png

0x03 安装 Prelude-siem

1、安装 prelude 软件包

yum install -y epel-release
yum install -y prelude-manager-db-plugin prelude-lml prelude-lml-rules prelude-correlator prewikka libpreludedb-mysql prelude-tools preludedb-tools preludedb-mysql

2、安装 mysql 数据库

安装 mysql 数据库,设置为开机自启动,初始化数据库。

yum install -y mariadb-server
systemctl enable mariadb
systemctl start mariadb
mysql_secure_installation

3、创建数据库

[root@localhost ~]# mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 17
Server version: 5.5.60-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> CREATE DATABASE prelude;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> CREATE DATABASE prewikka;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> CREATE USER 'prelude'@'localhost' IDENTIFIED BY 'prelude';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON prelude.* TO 'prelude'@'localhost';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON prewikka.* TO 'prelude'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mariadb.png

4、导入数据库文件

[root@localhost ~]# mysql -u prelude -p prelude < /usr/share/libpreludedb/classic/mysql.sql
Enter password: 
[root@localhost ~]#

5、修改 prewikka 配置文件

修改配置文件,路径为 /etc/prewikka/prewikka.conf

# Events DB
[idmef_database]
type: mysql
host: localhost
user: prelude
pass: prelude
name: prelude

# Prewikka DB
[database]
type: mysql
host: localhost
user: prelude
pass: prelude
name: prewikka

prewikkaconf.png

6、修改 prelude-manager 配置文件

修改配置文件,路径为 /etc/prelude-manager/prelude-manager.conf

[db]
type = mysql
host = localhost
name = prelude
user = prelude
pass = prelude

preludemanagerconf.png

7、启动 Prelude Manager

添加 Prelude Manager 并启动服务

[root@localhost ~]# prelude-admin add "prelude-manager" --uid 0 --gid 0
[root@localhost ~]# systemctl start prelude-manager
[root@localhost ~]# systemctl status prelude-manager
● prelude-manager.service - Prelude bus communicator
   Loaded: loaded (/usr/lib/systemd/system/prelude-manager.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2018-12-06 14:16:03 CST; 2s ago
     Docs: man:prelude-manager(1)
 Main PID: 7314 (prelude-manager)
   CGroup: /system.slice/prelude-manager.service
           └─7314 /usr/sbin/prelude-manager

Dec 06 14:16:03 localhost.localdomain systemd[1]: Started Prelude bus communicator.
Dec 06 14:16:03 localhost.localdomain systemd[1]: Starting Prelude bus communicator...
[root@localhost ~]#

preludemanager.png

0x04 注册 agent

1、注册 Prelude Correlator

注册 Prelude Correlator 并启动服务,此处需要先安装 netaddr,使用的是 python3 版本

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py
python3 -m pip install netaddr

2、注册 Prelude Correlator

  • 执行 prelude-admin register "prelude-correlator" "idmef:rw" 127.0.0.1 --uid 0 --gid 0
  • 另一个窗口执行 prelude-admin registration-server prelude-manager,获取密码
  • 在原窗口输入得到的密码,输入两次
  • 在另一个窗口输入 y

具体流程如下图所示

Correlatoregister.png

启动服务

preludeCorrelator.png

3、注册 Prelude lml

注册 Prelude lml 并启动服务

  • 执行 prelude-admin register "prelude-lml" "idmef:w" 127.0.0.1 --uid 0 --gid 0
  • 另一个窗口执行 prelude-admin registration-server prelude-manager,获取密码
  • 在原窗口输入得到的密码,输入两次
  • 在另一个窗口输入 y

具体流程如下图所示

lmlregister.png

启动服务

preludelml.png

4、其他设置

开启防火墙 80 端口,启动 web 服务

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
prewikka-httpd -p 80

firewall.png

5、注册 Suricata

注册方式跟上面一样,注意给 idmef 写权限 prelude-admin register "suricata" "idmef:w" 127.0.0.1 --uid 0 --gid 0

修改配置文件 /etc/suricata/suricata.yaml398 行附近的内容

# alert output to prelude (http://www.prelude-technologies.com/) only
# available if Suricata has been compiled with --enable-prelude
- alert-prelude:
    enabled: yes
    profile: suricata
    log-packet-content: yes
    log-packet-header: yes

alertprelude.png

6、启动 suricata

suricata -c /etc/suricata/suricata.yaml -i `ip a | grep '^2:' | sed 's/^[^:]*: \([^:]*\):.*$/\1/g'`

suricatarun.png

7、prelude admin 界面

从 web 界面可以看到 suricata 已经注册并处于 Online 状态。

preludeadmin.png