Suricata安装配置(IPS模式-线下)

实验声明:本实验教程仅供研究学习使用,请勿用于非法用途,违者一律自行承担所有风险!

Suricata安装配置(IPS模式-线下)

说明:

本实验为线下实验,需要自行安装实验环境。

实验目的:

通过实验,了解IPS的工作原理及基本配置。

实验环境:

CentOS 7,运行IPTables防火墙。 测试服务器一台,运行web服务; 测试机一台; GCC的版本需要升级到较高版本,实验中可升级到6.4即可。

连接关系说明:

测试机通过Centos7进行数据包转发才能与测试服务器建立连接。 

实验网络拓扑简图

实验步骤:

一、基础组件安装

运行以下命令:

#yum install wget libpcap-devel libnet-devel pcre-devel gcc-c++ automake autoconf libtool make libyaml-devel zlib-devel file-devel jansson-devel nss-devel

在开始安装Suricata之前,需要安装suricata所使用到的一些库。安装这些库的命令是:

#yum -y install ImageMagickgcc-c++ patch readline readline-devel zlib zlib-devel git-core libyaml-devel libffi-devel openssl-devel make libpcap-devel pcre-devel libyaml-devel file-devel jansson-devel nss-devel libcap-ng-devel libnet-devel tar libnetfilter_queue-devel lua-devel mysql-devel fontconfig-devel libX11-devel libXrender-devel libxml2-devel libxslt-devel qconf python-yaml libcap-ng-devel file-devel epel-release lz4-devel jansson-devel cargo file-devel lz4-devel jansson-devel cargo python-yaml

Suricata默认的运行模式是IDS模式,如果运行在IPS模式则还需要安装其他组件,命令为:

#yum install libnetfilter_queue libnetfilter_queue-devel libnfnetlink-devel libnfnetlink

或执行:

#yum install libnetfilter_queue* libnfnetlink-devel libnfnetlink

二、安装Suricata-4.1.3

安装好这些库之后就开始下载源代码:

#wget https://openinfosecfoundation.org/download/suricata-4.1.3.tar.gz

#tar -xvf suricata-4.1.3.tar.gz

#cd suricata-4.1.3

#export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

#./configure --enable-nfqueue --prefix=/usr --sysconfdir=/etc --localstatedir=/var

#make

#make install

配置中,可能出现错误,需要重新安装一些包。

#yum install –y cargo

Suricata 默认安装到 /usr/local/bin/,默认配置文件目录 /usr/local/etc/suricata/ ,输出目录/usr/local/var/log/suricata。 可通过以下前缀可指定具体位置:

--prefix=/usr/ 指定安装到/usr/bin/目录;

--sysconfdir=/etc 指定配置文件在/etc/suricata/目录

--localstatedir=/var 指定输出日志文件在/var/log/suricata/目录

启用数据包分析选项:--enable-profiling 启用IPS功能选项:--enable-nfqueue,开启这项功能需要用到这两个包:libnetfilter_queue和 libnfnetlink

测试安装情况:

#export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib

#/usr/bin/suricata -v

输出: Suricata 4.1.3 USAGE: /usr/bin/suricata [OPTIONS] [BPF FILTER]

即表示安装正常了。

查看Suricata是否支持IPS模式 $sudo suricata --build-info

如果输出有: NFQueue support: yes 表示支持IPS模式。

安装配置文件 sudo make install-conf #安装默认配置文件。Suricata源代码带有默认的配置文件。

安装规则库:(先不安装,自己写规则) sudo make install-rules # 安装默认规则。从EmergingThreats.net上下载可用的社区规则集快照,并显示存储目录。

如果规则库不能安装的话,可以手动下载规则库并进行解压放到rules文件夹中 wget https://rules.emergingthreats.net/open/suricata-4.0/emerging.rules.tar.gz

基本配置 创建相关目录

sudo mkdir /var/log/suricata //日志目录

sudo mkdir /etc/suricata //配置文件目录

三、配置suricata

(一)配置基本参数

Suricata 的配置文件默认在/etc/suricata/suricata.yaml。需要配置HOME_NET地址、规则路径以及输出格式等。 vars: address-groups: HOME_NET: "[192.168.58.0/24]" //本地主机所在网段,信任网段 EXTERNAL_NET: "!$HOME_NET" //其他网段,非信任网段

(二)修改规则文件路径

default-rule-path: /etc/suricata/rules/ //规则文件所在目录 rule-files: //下面列出包含的规则文件名

  • botcc.rules -emerging-attack_response.rules
  • emerging-chat.rules
  • my.rules(其他删除,添加自己的规则文件~~~) 其中,default-rule-path 用于指定存放规则路径,而后续 rule-files 参数则是用来指定规则文件名。

(三)设置输出

#global stats configuration ... outputs:

  • fast: enabled: yes filename: fast.log append: yes
  • unified2-alert: enabled: yes
    filename: unified2.alert

(四)网卡特性设置

关闭网卡的 LRO/GRO 功能: sudo ethtool -K ens33 gro off lro off

输出: Cannot change large-receive-offload //表示网卡不支持 LRO 功能

四、FW开启路由转发

检查Linux系统中转发是否打开:

# sudo sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

如果为0,说明没有开启转发,则需要手动打开。

(1)临时开启路由转发

#echo "1" > /proc/sys/net/ipv4/ip_forward 或执行:

#sysctl -w net.ipv4.ip_forward=1

(2)随系统启动转发功能 修改/etc/sysctl.conf文件, vi /etc/sysctl.conf

#Controls IP packet forwarding net.ipv4.ip_forward = 1 然后,保存,执行命令: /sbin/sysctl -p即可立即生效。

(3)Iptables防火墙配置 如果要使用Suricata的IPS模式,也就是IPS inline模式的话还需要配置iptables防火墙。 sudo iptables -I FORWARD -j NFQUEUE --queue-num 0 //默认为0队列 sudo iptables -I INPUT -j NFQUEUE --queue-num 0 sudo iptables -I OUTPUT -j NFQUEUE --queue-num 0

//也可指定协议 sudo iptables -I INPUT -p tcp -j NFQUEUE --queue-num 0 sudo iptables -I OUTPUT -p tcp -j NFQUEUE --queue-num 0

//同时指定端口号 sudo iptables -I INPUT -p tcp --sport 80 -j NFQUEUE --queue-num 0 sudo iptables -I OUTPUT -p tcp --dport 80 -j NFQUEUE --queue-num 0

//也可按照物理接口号指定 sudo iptables -I FORWARD -i eth0 -o eth1 -j NFQUEUE sudo iptables -I FORWARD -i eth1 -o eth0 -j NFQUEUE

Suricata规则说明: Suricata完全兼容Snort的规则,而且比Snort功能更强大,支持drop动作和reject等动作,可直接丢弃数据包。 制定规则: my.rules: drop http any any -> 192.168.31.100 any (msg:"suricata-alert:Select Attack!!";content:"select";nocase;sid:800001;rev:1;) reject http any any -> 192.168.31.100 any (msg:" suricata-alert:Union Attack!!";content:"union";nocase;sid:800002;rev:1;) reject http any any -> 192.168.31.100 any (msg:" suricata-alert:SQL Injection Attack tries!!";content:"and";nocase;sid:800003;rev:1;) reject http any any -> 192.168.31.100 any (msg:" suricata-alert:SQL Injection Attack tries!!";content:"and";http_uri;nocase;sid:800004;rev:1;)

suricata -c /etc/suricata/suricata.yaml -q 0

iptables -I FORWARD -j NFQUEUE --queue-num 0

从终端访问服务器,分别输入select、union等关键字,查看阻止效果。

查看日志:

在/var/log/suricata/fast.log文件中内容为:

3/30/2019-14:49:34.062496 [Drop] [] [1:800001:1] Attack!! [] [Classification: (null)] [Priority: 3] {TCP} 192.168.33.138:1080 -> 192.168.31.100$ 03/30/2019-14:49:36.600674 [Drop] [] [1:800001:1] Attack!! [] [Classification: (null)] [Priority: 3] {TCP} 192.168.33.138:1081 -> 192.168.31.100$ 03/30/2019-14:52:15.682880 [Drop] [] [1:800001:1] Attack!! [] [Classification: (null)] [Priority: 3] {TCP} 192.168.33.138:1086 -> 192.168.31.100$ 03/30/2019-15:00:25.421480 [] [1:800001:1] Attack!! [] [Classification: (null)] [Priority: 3] {TCP} 192.168.33.138:1097 -> 192.168.31.100:8083 03/30/2019-15:02:41.651144 [Drop] [] [1:800001:1] Select Attack!! [] [Classification: (null)] [Priority: 3] {TCP} 192.168.33.138:1098 -> 192.168$ 03/30/2019-15:03:12.747903 [Drop] [] [1:800001:1] Select Attack!! [] [Classification: (null)] [Priority: 3] {TCP} 192.168.33.138:1099 -> 192.168$ 03/30/2019-15:03:12.747903 [Drop] [] [1:800002:1] Union Attack!! [] [Classification: (null)] [Priority: 3] {TCP} 192.168.33.138:1099 -> 192.168.$

注意:

实验中的IP地址等需要根据自己的实际情况进行修改。

错误解决:

1、测试运行错误:

[root@localhost suricata-4.1.3]# /usr/bin/suricata -v /usr/bin/suricata: error while loading shared libraries: libhtp.so.2: cannot open shared object file: No such file or directory 查看依赖关系,发现库文件均在/lib64/路径下: [root@localhost suricata-4.1.3]# ldd /usr/bin/suricata linux-vdso.so.1 => (0x00007ffc9d3a7000) libhtp.so.2 => not found librt.so.1 => /lib64/librt.so.1 (0x00007fedd6252000) libm.so.6 => /lib64/libm.so.6 (0x00007fedd5f50000) …… 做软连接: [root@localhost suricata-4.1.3]# ln -s /usr/lib/libhtp.so.2 /lib64/libhtp.so.2

再次测试即正常。

2、执行make install-rules时,出错:

suricata: error while loading shared libraries: libhtp.so.2: cannot open shared object file: No such file or directory解决方法: sudo vim /etc/ld.so.conf 加入一行 /usr/local/lib,保存 执行sudo ldconfig命令 即可解决

注意规则路径,/etc/suricata/ suricata.yaml中设置的default-rule-path值应与安装路径处一致。

No rule files match the pattern /usr/share/suricata/rules/emerging-trojan.rules 表示,缺少该规则文件(在yaml配置文件中,包含了该规则文件,但是实际没有对应的文件) 将对应文件注释掉即可。

实验小结:

通过本实验,了解了IPS的工作原理及安装步骤,对IPS与防火墙的协同工作有了深刻认识。

posted @ 2020-11-17 20:11  码小农的幸福生活  阅读(3641)  评论(0编辑  收藏  举报