suricata入侵检测系统的安装部署

Suricata 是一个网络入侵检测和阻止引擎,该引擎是多线程的,内置 IPv6 的支持,可加载预设规则,支持 Barnyard 和 Barnyard2 工具。suricata会产生名为unified2的二进制文件,Barnyard2是一个分析程序,可以解析unified2格式,然后将告警发送到Mysql中。
安装依赖包
#yum install -y gcc flex bison zlib libpcap tcpdump gcc-c++ pcre* zlib* libdnet libdnet-devel
0x01、下载daq并安装
#tar zxvf daq-2.0.4.tar.gz
#cd daq-2.0.4
#./configure && make && make install
0x02、下载libdnet并安装
#tar zxvf libdnet-1.12.tgz
#cd libdnet-1.12
#./configure && make && make install
0x03、下载Barnyard2并安装
yum install libtool libpcap libpcap-devel
cd /opt #切换目录
wget -O barnyard2.zip –no-check-certificate https://codeload.github.com/firnsy/barnyard2/zip/master
#下载安装文件并重命名
unzip barnyard2.zip #解压安装文件
cd barnyard2-master/
./autogen.sh
./configure –with-mysql-libraries=/usr/lib64/mysql/ #编译安装
make && make install

PS:

[root@localhost barnyard2-master]# ./autogen.sh
Found libtoolize
autoreconf: Entering directory `.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal -I m4 --output=aclocal.m4t
This Perl not built to support threads
Compilation failed in require at /usr/share/automake-1.11/Automake/ChannelDefs.pm line 23.
BEGIN failed--compilation aborted at /usr/share/automake-1.11/Automake/ChannelDefs.pm line 26.
Compilation failed in require at /usr/share/automake-1.11/Automake/Configure_ac.pm line 26.
BEGIN failed--compilation aborted at /usr/share/automake-1.11/Automake/Configure_ac.pm line 26.
Compilation failed in require at /usr/bin/aclocal line 39.
BEGIN failed--compilation aborted at /usr/bin/aclocal line 39.
autoreconf: aclocal failed with exit status: 255
You can now run "./configure" and then "make".

[root@localhost barnyard2-master]# perl -V | grep thread
useithreads=undef, usemultiplicity=undef

解决方法:

[root@localhost barnyard2-master]# yum reinstall perl

0x04、下载Suricata并安装
Suricata需要依赖yaml,首先安装yaml
cd /opt #切换到opt目录
下载yaml:
wget http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz
tar zxvf yaml-0.1.4.tar.gz
./configure
make
make install

下载Suricata并安装
tar zxvf suricata-1.4.7.tar.gz
./configure
make
make install
ldconfig

0x05、配置Suricata、Barnyard 2
配置Barnyard 2
#把Barnyard 2安装源文件中的etc/barnyard2.conf文件拷贝到Suricata的配置目录下
mkdir /etc/suricata #创建一个目录
cd /opt/barnyard2-master/
cp etc/barnyard2.conf /etc/suricata/

#创建barnyard2日志目录/var/log/barnyard2
mkdir /var/log/barnyard2
需要创建数据库和相应的账号
mysql> create database ids;
mysql> grant create,select,update,insert,delete on ids.* to ids@localhost identified by ‘ids123’;
Barnyard 2安装源文件中的schemas/create_mysql是创建表的sql文件,通过如下方式建表:
mysql -uids -p -Dids < ids/barnyard2-1.9/schemas/create_mysql
配置Suricata
创建Suricata配置目录和日志目录
mkdir /var/log/suricata

把规则文件拷贝到Suricata配置目录下(这里首先,我们要下载下)
wget http://rules.emergingthreats.net/open/suricata/emerging.rules.tar.gz
tar zxvf emerging.rules.tar.gz
cp -R /opt/rules/ /etc/suricata/
cp /opt/rules/sid-msg.map /etc/suricata/

把Suricata安装源文件中的suricata.yaml/classification.config/reference.config文件拷贝到Suricata的配置目录下
cd /opt/suricata-1.4.7
cp suricata.yaml classification.config reference.config /etc/suricata/

编辑并修改barnyard2.conf文件
vi /etc/suricata/barnyard2.conf
找到下面的内容

config reference_file: /etc/snort/reference.config
config classification_file: /etc/snort/classification.config
config gen_file: /etc/snort/gen-msg.map
config sid_file: /etc/snort/sid-msg.map
更改为的内容如下:

config reference_file: /etc/suricata/reference.config
config classification_file: /etc/suricata/classification.config
config gen_file: /etc/suricata/rules/gen-msg.map
config sid_file: /etc/suricata/rules/sid-msg.map

同时在文件的末尾添加如下行。
output database: log, mysql, user=ids password=ids123 dbname=ids host=localhost
如果已经安装了snorby的话,snorby会自动创建数据库和表结构,所以直接使用snorby即可。
output database: log, mysql, user=root password=hehe123 dbname=snorby host=localhost

找到“config hostname”和“config interface”,按照你的实际情况修改
config hostname: PgHook-001 #这里是hostname,随便改
config interface: eth0 #这里是镜像端口所在的网卡

编辑suricata.yaml文件
vi /etc/suricata/suricata.yaml
找到HOME_NET: “[192.168.0.0/16,10.0.0.0/8,172.16.0.0/12]”
这一行,根据实际的网络情况来修改,在这里我修改为
HOME_NET: “[192.168.0.0/16,172.16.0.0/12]”

HOME_NET为IP地址组,可以在规则中直接调用,例如:
alert icmp $EXTERNAL_NET any -> $HOME_NET any (msg:”GPL ICMP Photuris Reserved”; icode:0; itype:40; classtype:misc-activity; sid:2100429; rev:7;)

找到 default-rule-path: /usr/local/etc/suricata/rules
改成 default-rule-path: /etc/suricata/rules

找到default-log-dir: /usr/local/var/log/suricata/
改成 default-log-dir: /var/log/suricata/

找到
#default-log-format: “[%i] %t – (%f:%l) <%d> (%n) — ”
把前面的注释去掉

outputs选项下有很多可以输出的配置选项,包括警告、检测的数据包、产生的结果等。在配置的过程中并不需要开启每一种输出,根据自己的需求进行配置,只开启unified2.alert即可,将fast.log等其他项修改为no。
– unified2-alert:
enabled: yes
filename: unified2.alert

找到
outputs:
– console:
enabled: yes
– file:
enabled: no
filename: /var/log/suricata.log
– syslog:
enabled: no
facility: local5
format: “[%i] <%d> — ”
改成:
outputs:
– console:
enabled: no
– file:
enabled: yes
filename: /var/log/suricata.log
– syslog:
enabled: no
facility: local5
format: “[%i] <%d> — ”
只需要输出到file,不需要终端和syslog。
找到
classification-file: /usr/local/etc/suricata/classification.config
reference-config-file: /usr/local/etc/suricata/reference.config
改成
classification-file: /etc/suricata/classification.config
reference-config-file: /etc/suricata/reference.config

找到
#pid-file: /var/run/suricata.pid
把前面的#号去掉

找到rule-files,把下面的
emerging-icmp.rules 和emerging-virus.rules删除掉。

找到#threshold-file: /etc/suricata/threshold.config
把#号去掉
cp /opt/suricata-1.4.7/threshold.config /etc/suricata/

/usr/local/bin/barnyard2 -c /etc/suricata/barnyard2.conf -d /var/log/suricata -f unified2.alert -w /var/log/suricata/suricata.waldo -D
-c为加载配置文件
-d用于指定suricata产生的二进制文件保存目录
-f 二进制文件特征
-w 书签文件,用户记录读取了多少行
-D 后台运行

123

123

sudo /usr/local/bin/suricata -c /etc/suricata/suricata.yaml -i eth0 -D
启动suricata的-i参数是镜像流量的网卡
产生的告警文件:
[root@vincent suricata]# ll
总用量 172
-rw-r—– 1 root root 34202 6月 13 02:11 fast.log
-rw-r—– 1 root root 57755 6月 13 02:14 stats.log
-rw-r–r– 1 root root 0 6月 13 02:09 suricata.waldo
-rw-r—– 1 root root 70302 6月 13 02:11 unified2.alert.1465755006

然后查看数据库中的内容

123