一、功能介绍
1、概述
suricata来源于经典的nids系统snort,是一套基于网络流量的威胁检测引擎,整合了ids,ips,network security monitoring(NSM)和PCAP processing等功能。
2、IDS功能
通过监听网卡流量并匹配规则引擎进行入侵实时监测和预警,检测手段上也和Wazuh比较类似。
3、IPS功能
与Wazuh的主动响应功能并不完全一样,IPS功能并不需要对防火墙进行调用,而是直接通过流量引入iptables队列中,再根据特征进行检测,满足规则的流量会直接被Suricata丢弃或拒绝,导致整个流量根本无法到达目标服务器。而Wazuh的主动响应机制则是在攻击行为已经发生或正在发生的情况下,通过日志信息进行检测,再调用iptables或firewall-cmd进行处理,实时性和准确性方面相对于suricata更延后一些。
4、支持的协议
Suricata来源于Snort,但是比Snort更加实用也增强了更多的功能,同时,Snort支持传输层和网络层协议,而Suricata还支持应用层的协议进行解析和规则匹配。
二、安装suricata
1、源码安装 (不推荐)
sudo yum -y install gcc libpcap-devel pcre-devel libyaml-devel file-devel \ zlib-devel jansson-devel nss-devel libcap-ng-devel libnet-devel tar make \ libnetfilter_queue-devel lua-devel PyYAML libmaxminddb-devel rustc cargo \ lz4-devel #下载安装包 wget https://www.openinfosecfoundation.org/download/suricata-6.0.0.tar.gz tar -xvf suricata-6.0.0.tar.gz cd suricata-6.0.0 #编译安装 make sudo make install sudo ldconfig #自动安装配置文件 make install-conf make install-rules make install-full
2、二进制安装
centos7安装
yum install epel-release yum-plugin-copr yum copr enable @oisf/suricata-6.0 yum install suricata #安装完成后,对应路径如下: suricata主程序路径:/usr/sbin/suricata suricata核心配置目录:/etc/suricata/ suricata日志目录:/var/log/suricata/ suricata附属程序目录:/usr/bin #日志目录下得4个文件的功能 eve.json:以json格式存储预警信息或附加信息 fast.log:预警核心文件,只用于存储警告信息,非结构话数据 stat.log:suricata的统计信息 suricata.log:suricata程序的运行日志
安装完可以执行如下命令进行验证是否安装成功
/usr/sbin/suricata --build-info suricata -V
三、修改配置运行
直接编辑/etc/suricata/suricata.yaml
vars: # more specific is better for alert accuracy and performance address-groups: #HOME_NET: "[192.168.0.0/16,10.0.0.0/8,172.16.0.0/12]" #HOME_NET: "[192.168.0.0/16]" #HOME_NET: "[10.0.0.0/8]" #HOME_NET: "[172.16.0.0/12]" #HOME_NET: "any" HOME_NET: "[192.168.100.0/24]" #这里改成自己ip对应网段 #EXTERNAL_NET: "!$HOME_NET" EXTERNAL_NET: "any"
运行suricata,
cd /etc/suricata && suricata -c suricata.yaml -i ens33(这里网卡根据实际情况修改)
首次运行必定会报错误:
30/8/2023 -- 10:32:09 - <Info> - Configuration node 'HOME_NET' redefined. 30/8/2023 -- 10:32:09 - <Notice> - This is Suricata version 6.0.13 RELEASE running in SYSTEM mode 30/8/2023 -- 10:32:09 - <Warning> - [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /var/lib/suricata/rules/suricata.rules 30/8/2023 -- 10:32:09 - <Warning> - [ERRCODE: SC_ERR_NO_RULES_LOADED(43)] - 1 rule files specified, but no rules were loaded! 30/8/2023 -- 10:32:09 - <Notice> - all 4 packet processing threads, 4 management threads initialized, engine started.
要在/etc/suricata/suricata.yaml修改如下配置,并创建一个suricata.rules
default-rule-path: /etc/suricata/rules rule-files: - suricata.rules
还要在suricata.rules中编写一条规则,不然还是会报错
alert http any any <> $HOME_NET 80 (msg:"web服务器出现404状态码"; content: "404"; http_stat_code; sid:561001;)
这条规则是如果访问目标网站响应404则发生告警
四、安装XAMPP进行规则测试
详解Xampp和wordpress在Centos7上的搭建与使用 - Python技术站
1. 下载和安装XAMPP
首先,我们需要下载并安装XAMPP。可以在官方网站 XAMPP Installers and Downloads for Apache Friends 上下载最新版本的XAMPP。下载完成后,使用以下命令进行安装:
$ chmod +x xampp-linux-x64-7.X.X-X-installer.run $ sudo ./xampp-linux-x64-7.X.X-X-installer.run
2. 启动XAMPP
安装完成后,可以使用以下命令启动XAMPP:
$ sudo /opt/lampp/lampp start
后台启动suricata
suricata -c suricata.yaml -i ens33 -D
在浏览器中访问主机ip对应的网站/phpinfo这个不存在的页面,在另一个终端窗口查看日志,可以看到规则生效。
补充:
我们还可以通过eve.json文件中查看告警信息,相对于fast.log多了很多其他信息,有很多其实不用关心,可以用以下命令进行过滤:
cat /var/log/suricata/eve.json |grep 'event_type":"alert'
如果不想要eve.json产生过多无用信息,可以在suricata.yaml的配置文件中对各种类型的输出进行禁用,如:
在核心配置文件中,找到outputs->eve-log->types节点 - anomaly: enabled: no - http: extended: no 可以大量减少无效信息,当然也取决于我们是否需要对此类日志进行收集