The quiter you become,the more you are able to hear!

suricata ubuntu 下安装使用

Author: geneblue

Blog: https://geneblue.github.io/

suricata 是一款免费,开源的 IDS 入侵检测引擎,而且支持 ips(入侵防御系统),nsm(网络安全监控)和离线 pcap 处理。另一款知名的开源 IDSSnort,网络上的一般说法是 suricata 相较于 Snort 最大优势是支持多线程,另外支持 ipv6 并兼容 Snort 规则。

安装

ppa 安装

安装当前最新版本

1
2
3
4
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:oisf/suricata-stable
sudo apt-get update
sudo apt-get install suricata jq
jq 工具用来处理 json 数据

debug 版本

1
sudo apt-get install suricata-dbg

查看编译信息和运行状态

1
2
$suricata --build-info
$systemctl status suricata
表示安装成功

编译安装

安装包下载

1
2
wget https://www.openinfosecfoundation.org/download/suricata-5.0.0.tar.gz
tar -zxvf suricata-5.0.0.tar.gz

ubuntu16.04 下编译依赖:

1
2
3
4
5
sudo apt-get install libpcre3 libpcre3-dbg libpcre3-dev build-essential libpcap-dev   \
libnet1-dev libyaml-0-2 libyaml-dev pkg-config zlib1g zlib1g-dev \
libcap-ng-dev libcap-ng0 make libmagic-dev libjansson-dev \
libnss3-dev libgeoip-dev liblua5.1-dev libhiredis-dev libevent-dev \
python-yaml rustc cargo

编译:

1
2
3
4
cd suricata-5.0.0
./configure
make
make install

生成的可执行文件在 src/.libs/suricata

简单使用

安装完后,来认识一些基本目录:

/var/log/suricata:存储 suricata 日志信息 /etc/suricatasuricate 配置文件目录

/var/log/suricata 下:

1
2
3
4
5
6
7
8
certs	                    #
core #
eve.json #
fast.log #
files #
stats.log #
suricata.log #
suricata-start.log #

/etc/suricata 下:

1
2
3
4
5
classification.config	    # 存放报警分类信息
reference.config # reference 规则引用信息
rules # 存放大量自带规则集目录
suricata.yaml # suricata 配置文件
threshold.config #

suricata.yaml 为主要配置文件,包含:网络信息配置,输出信息配置,抓包配置,应用层协议配置

更改配置,指向我们的测试规则文件

1
2
3
default-rule-path: /media/psf/LinuxVolume/IDS/rules
rule-files:
- test.rules

一条简单的策略如下,表示任何 ip 地址的任意端口发送到本网段(数据流经网卡即可)任意端口的 "HELLO" 消息,将会记录在 fast.log 文件中

1
alert ip any any -> any any (msg: "HELLO"; content: "HELLO"; )

启动 suricata ids

1
sudo suricata -c /media/psf/LinuxVolume/IDS/suricata.yaml -i enp0s5

发送数据如下:

1
2
3
from scapy.all import *
pkg = IP(dst="10.211.55.4") / TCP(dport=1234) / "HELLO"
pkg.send()

可以看到 fast.log 中记录了这条 alert 日志:

1
2
$cat /var/log/suricata/fast.log
12/05/2019-17:16:59.407436 [**] [1:0:0] HELLO [**] [Classification: (null)] [Priority: 3] {TCP} 10.211.55.2:20 -> 10.211.55.4:1234

以此,我们可以根据自己的需要编写规则文件,记录告警日志。

参考