简介
Suricata是一款高性能的网络IDS、IPS和网络安全监控引擎。它是由the Open Information Security Foundation开发,是一款开源的系统,现在的NIDS领域snort一枝独秀,而suricata是完全兼容snort规则的多线程IDS,无论在效率还是性能上都超过原有的snort
安装
安装依赖包
sudo apt-get -y install libpcre3 libpcre3-dbg libpcre3-dev \
build-essential autoconf automake libtool libpcap-dev libnet1-dev \
libyaml-0-2 libyaml-dev zlib1g zlib1g-dev libcap-ng-dev libcap-ng0 \
make libmagic-dev libjansson-dev libjansson4 pkg-config
HTP库
wget https://github.com/OISF/libhtp/releases/download/0.5.17/htp-0.5.17.tar.gz
tar -xzvf libhtp-0.5.17.tar.gz
cd libhtp-0.5.17
./configure
make
make install
安装libhtp库
git clone https://github.com/OISF/libhtp.git
cd libhtp/
./autogen.sh
./configure
make && sudo make install
注意:
有时候会出现./configure执行不成功的时候,然后去README中找答案,运行./autogen.sh以后继续执行以上命令
Suricata现在的源代码版本分为稳定版和开发版,现在的稳定版是suricata4.0.4,开发版本是suricata4.1.0-beta1。可以去Suricata官网------下载源码
wget https://www.openinfosecfoundation.org/download/suricata-4.0.4.tar.gz
编译并安装引擎
要启用数据包分析,请确保在配置阶段输入以下内容:
./configure --enable-profiling
如果想构建带有 IPS 功能的 Suricata ,使用如下命令:
./configure --enable-nfqueue --prefix=/usr --sysconfdir=/etc --localstatedir=/var
如果不想带有 IPS 功能,使用如下命令:
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
随后使用如下命令:
make
sudo make install
sudo make install-conf # 安装默认配置
sudo make install-rules # 安装默认规则
sudo ldconfig # 让系统共享动态链接库
如果上述规则库不能安装的话,可以手动下载规则库并进行解压放到rules文件夹中
https://rules.emergingthreats.net/open/suricata-4.0/emerging.rules.tar.gz
基本配置
设置变量
Suricata 的配置文件默认在 /etc/suricata/suricata.yaml
,在启动前我们需要先配置好一些重要的变量,其中变量分为两组,一个是地址组(address-groups),另一个是端口组(port-groups)。示例配置文件如下(其中,HOME_NET
要设置为我们本地网络的的 IP 地址,EXTERNAL_NET
推荐为 !$HOME_NET
,即除我们本地网络以外的。而端口组中的所有端口也要和实际使用的端口号相对应。)
规则
Suricata 无论是运行在 IDS 或者 IPS 模式下肯定要基于一定的规则,具体包含哪些规则同样是在 suricata.yaml
配置文件中指定,例如如下样式:
其中,default-rule-path
用于指定存放规则的文件夹,而后续 rule-files
参数则是用来指定具体好吧哪些规则文件,规则文件前面的 #
是注释代表不启用这条规则,customize the rules file表示可以自定义自己的规则,可以把自己写的规则放到这里
如果先前使用 sudo make install-rules
命令,则这样会从 EmergingThreats.net 上下载可用的社区规则集快照。如果不使用社区规则的话,就需要自己编写规则,后续我会单独写文章讲述具体如何编写 Suricata 规则
输出选项
开启或者关闭相关的输出日志文件
运行
1、监控eth0网卡流量
-c 用来指定配置文件
-i 说明以 IDS 模式运行
eth0 说明让 Suricata 监听 eth0 端口
更多参数选项
-c <path> 这个选项是最重要的选项。在-c之后,要输入suricata.yaml文件所在的路径
-i <dev or ip> 输入你想用来抓包的网卡名称。这个参数关联网卡使用libpcap在pacp?live模式下抓包
-r <path> 输入记录数据的抓包文件的路径和文件名。可以在pcap/offline模式下,在这个文件中查看包数据
-s <path> 设置一个自定义规则文件,这个文件将与yaml中设置的rules文件集一起载入使用
-l 设置一个自定义的日志输出文件夹。否则采用已在yaml文件中设置了默认的日志文件夹(default-log-dir)
-D 设置使你的suricata进程能够在后台运行,使用终端窗口干其他的事而不会影响suricata运行
-V 显示suricata版本
-u 该选项用于运行单元测试,测试suricata代码
--list-runmodes 使用该选项将列出所有可能的运行模式
2、利用规则文件检测pacp流量包
有时我们运行的时候可能会出现找不到libhtp-0.5.17.so.1文件的时候,因为libpcap.so.1默认安装到了/usr/local/lib下,我们做一个符号链接到/usr/lib/下即可,问题以及解决方法如下所示