在CentOS 8上安装和设置Suricata

在本教程中,您将学习如何在CentOS 8上安装和设置Suricata。 苏里卡塔 是一个免费的开源网络威胁检测引擎。它可以用作入侵检测(IDS)引擎,串联入侵防御系统(IPS),网络安全监控(NSM)以及离线pcap处理工具。它使用规则和签名检查网络流量,并通过Lua脚本支持来检测复杂威胁。

Suricata具有以YAML和JSON格式编写日志的功能,可以与SIEM,Splunk,Logstash / Elasticsearch,Kibana等其他工具集成,以进行进一步的日志处理和可视化。

Suricata提供了许多功能。继续阅读 所有Suricata功能页面

在CentOS 8上安装和设置Suricata

系统要求

好吧,Suricata是多线程的,因此,如果您有足够的内核,则可以利用尽可能多的资源。另外,分配足够的RAM。

在此演示中,我们为Suricata服务器分配了2个vCPU和4GB RAM。

在CentOS 8上安装Suricata

您可以通过多种方式在SentOS 8上安装Suricata。

  • 从源代码在SentOS 8上安装Suricata
  • 从EPEL Repos在CentOS 8上安装Suricata

从源代码在SentOS 8上安装Suricata
运行系统更新

通过运行以下命令来更新系统软件包

dnf update

安装所需的构建工具和依赖项

要从源代码成功在CentOS 8上成功构建和安装Suricata,需要使用许多软件包相关性和构建工具。

dnf config-manager --set-enabled PowerTools
dnf install diffutils file-devel gcc jansson-devel make nss-devel libyaml-devel libcap-ng-devel libpcap-devel pcre-devel python3 python3-pyyaml rust-toolset zlib-devel curl wget tar lua lua-devel lz4-devel

下载Suricata源代码

从以下位置下载最新的稳定发行版Suricata源代码 Suricata下载页面。在撰写本文时,Suricata 5.0.3是最新的稳定发行版。

wget https://www.openinfosecfoundation.org/download/suricata-5.0.3.tar.gz -P /tmp

提取Suricata源代码

下载完成后,提取源代码;

cd /tmp
tar xzf suricata-5.0.3.tar.gz

在CentOS 8上构建和安装Suricata

导航到源目录,然后在CentOS 8上构建并安装Suricata。

cd suricata-5.0.3

运行configure脚本以使Suricata适应系统并验证所有必需的依赖项是否都到位。

./configure --sysconfdir=/etc --localstatedir=/var --prefix=/usr/ --enable-lua --enable-geopip 

该命令将Suricata安装到 /usr/bin/suricata,将配置放在 /etc/suricata 和使用 /var/log/suricata 作为日志目录。

有关更多构建选项,请参阅 ./configure --help

编译并安装Suricata规则和配置。

make
make install-full
...
22/7/2020 -- 21:14:44 -  -- Backing up current rules.
22/7/2020 -- 21:14:44 -  -- Writing rules to /var/lib/suricata/rules/suricata.rules: total: 27530; enabled: 20677; added: 27530; removed 0; modified: 0
22/7/2020 -- 21:14:44 -  -- Skipping test, disabled by configuration.
22/7/2020 -- 21:14:44 -  -- Done.

You can now start suricata by running as root something like:
  /usr/bin/suricata -c /etc/suricata/suricata.yaml -i eth0

If a library like libhtp.so is not found, you can run suricata with:
  LD_LIBRARY_PATH=/usr/lib /usr/bin/suricata -c /etc/suricata/suricata.yaml -i eth0

The Emerging Threats Open rules are now installed. Rules can be
updated and managed with the suricata-update tool.

For more information please see:
  https://suricata.readthedocs.io/en/latest/rule-management/index.html

make[1]: Leaving directory '/tmp/suricata-5.0.3'

现在可以从CentOS 8上的源代码安装Suricata。

从EPEL Repos在CentOS 8上安装Suricata

要在CentOS 8上无缝安装Suricata,使用EPEL仓库进行安装是不二之选。

在CentOS 8上安装EPEL Repos

dnf install epel-release

从EPEL Repos CentOS 8安装Suricata

dnf info suricata
Available Packages
Name         : suricata
Version      : 5.0.3
Release      : 1.el8
Architecture : x86_64
Size         : 2.3 M
Source       : suricata-5.0.3-1.el8.src.rpm
Repository   : epel
Summary      : Intrusion Detection System
URL          : https://suricata-ids.org/
License      : GPLv2
...

如您所见,EPEL仓库提供了Suricata的最新稳定发行版。

然后可以通过执行命令来安装它;

dnf install suricata

海岛猫鼬规则

Suricata利用各种规则集/签名来检测和警告相匹配的威胁。规则也称为签名。 新兴威胁新兴威胁专业版 和火源 录像机 是最常用的规则。

在大多数情况下,您可以在以下位置找到规则文件 /etc/suricata/rules/。这是从存储库安装Suricata时的情况。

ls /etc/suricata/rules/
app-layer-events.rules  dhcp-events.rules  dns-events.rules  http-events.rules   kerberos-events.rules  nfs-events.rules  smb-events.rules   stream-events.rules
decoder-events.rules    dnp3-events.rules  files.rules       ipsec-events.rules  modbus-events.rules    ntp-events.rules  smtp-events.rules  tls-events.rules

紧急威胁规则通常存储为 /var/lib/suricata/rules/suricata.rules。的 suricata.rules 文件通常包含位于“ /etc/suricata/rules/

要安装和更新紧急威胁规则,请使用 suricata-update 命令。

suricata-update

此下载并安装 suricata.rules

规则/签名包括以下部分:

  • 行动,它确定签名匹配时会发生什么。
  • 标头,定义协议,IP地址,端口和规则方向。
  • 规则选项,定义规则的细节。
alert ip any any -> any any (msg:"SURICATA Applayer Mismatch protocol both directions"; flow:established; app-layer-event:applayer_mismatch_protocol_both_directions; flowint:applayer.anomaly.count,+,1; classtype:protocol-command-decode; sid:2260000; rev:1;)

阅读更多 Suricata规则介绍

Suricata基本设置

/etc/suricata/suricata.yaml 是默认的Suricata配置文件。

配置文件包含许多可配置选项。但是,对于我们的基本设置,我们将仅关注Suricata正在侦听的网络接口以及连接到该接口的IP地址。

要找到接口和IP地址,请运行以下命令;

ip --brief add
lo               UNKNOWN        127.0.0.1/8 ::1/128 
enp0s3           UP             10.0.2.15/24 
enp0s8           UP             192.168.56.133/24 fe80::12c8:9a8a:6d1:deaf/64

在我们的例子中,我们的界面是 enp0s8 IP地址是 192.168.56.133

打开并编辑Suricata配置文件。

vim /etc/suricata/suricata.yaml

在下面 瓦斯 部分,您需要配置Suricata,以区分要保护的内部网络和外部网络。这可以通过定义正确的值来完成 HOME_NETEXTERNAL_NET 地址组下的变量。

HOME_NET 变量应包括Suricata正在侦听的接口的IP地址以及所有要保护的本地网络。

EXTERNAL_NET 变量应定义非本地的任何IP或网络。

...
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.56.133]"
    #HOME_NET: "[192.168.0.0/16]"
    #HOME_NET: "[10.0.0.0/8]"
    #HOME_NET: "[172.16.0.0/12]"
    #HOME_NET: "any"

    EXTERNAL_NET: "!$HOME_NET"
...

在下面 af-packet 部分,将接口的值设置为您的接口名称。

...
# Linux high speed capture support
af-packet:
  - interface: enp0s8
...

保存并退出配置文件。

指定Suricata规则

定义要使用的Suricata规则文件。在此演示中,我们使用默认的ET规则。

...
default-rule-path: /var/lib/suricata/rules

rule-files:
  - suricata.rules
...

禁用数据包卸载

通过禁用接口大接收卸载(LRO)/通用接收卸载(GRO)来禁用Suricata数据包卸载;

ethtool -K  gro off lro off

更换 与您的界面。

首先检查是否启用了这些功能;

ethtool -k enp0s8 | grep -iE "generic|large"
	tx-checksum-ip-generic: on
generic-segmentation-offload: on
generic-receive-offload: off
large-receive-offload: off [fixed]

如果启用,请通过运行以下命令禁用该功能;

ethtool -K enp0s8 gro off lro off

运行苏里卡塔

Suricata可以通过系统服务进行管理。

在运行它之前,您需要指定正在监听的接口 /etc/sysconfig/suricata 配置文件。

vim /etc/sysconfig/suricata
...

# Add options to be passed to the daemon
#OPTIONS="-i eth0 --user suricata "
OPTIONS="-i enp0s8 --user suricata "

保存并退出文件,

启动并使Suricata在CentOS 8上启动时运行。

systemctl enable --now suricata

您可以检查状态;

systemctl status suricata
● suricata.service - Suricata Intrusion Detection Service
   Loaded: loaded (/usr/lib/systemd/system/suricata.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2020-07-23 16:50:34 EAT; 29s ago
     Docs: man:suricata(1)
  Process: 19153 ExecStartPre=/bin/rm -f /var/run/suricata.pid (code=exited, status=0/SUCCESS)
 Main PID: 19154 (Suricata-Main)
    Tasks: 7 (limit: 5027)
   Memory: 387.6M
   CGroup: /system.slice/suricata.service
           └─19154 /sbin/suricata -c /etc/suricata/suricata.yaml --pidfile /var/run/suricata.pid -i enp0s8 --user suricata

Jul 23 16:50:34 ceph-admin.kifarunix-demo.com systemd[1]: Starting Suricata Intrusion Detection Service...
Jul 23 16:50:34 ceph-admin.kifarunix-demo.com systemd[1]: Started Suricata Intrusion Detection Service.
Jul 23 16:50:34 ceph-admin.kifarunix-demo.com suricata[19154]: 23/7/2020 -- 16:50:34 -  - This is Suricata version 5.0.3 RELEASE running in SYSTEM mode
Jul 23 16:50:42 ceph-admin.kifarunix-demo.com suricata[19154]: 23/7/2020 -- 16:50:42 -  - all 1 packet processing threads, 4 management threads initialized, 

Suricata伐木;

要检查Suricata是否正在运行,请检查Suricata日志:

tail /var/log/suricata/suricata.log

您应该看到这样的一行;

...
23/7/2020 -- 16:50:42 - - all 1 packet processing threads, 4 management threads initialized, engine started.

检查Suricata统计信息;

tail -f /var/log/suricata/stats.log

查看Suricata警报日志;

tail -f /var/log/suricata/fast.log

Suricata还可以在EVE Json输出中写入日志。默认日志文件为;

tail -f /var/log/suricata/eve.json

测试Suricata规则

在此演示中,我们使用默认的ET Suricata规则。如果创建了自己的自定义规则,请确保测试Suricata规则的语法错误;

suricata -c /etc/suricata/suricata.yaml -T -v
23/7/2020 -- 17:44:10 - - Running suricata under test mode
23/7/2020 -- 17:44:10 - - This is Suricata version 5.0.3 RELEASE running in SYSTEM mode
23/7/2020 -- 17:44:10 - - CPUs/cores online: 1
23/7/2020 -- 17:44:10 - - fast output device (regular) initialized: fast.log
23/7/2020 -- 17:44:10 - - eve-log output device (regular) initialized: eve.json
23/7/2020 -- 17:44:10 - - stats output device (regular) initialized: stats.log
23/7/2020 -- 17:44:12 - - 1 rule files processed. 20676 rules successfully loaded, 0 rules failed
23/7/2020 -- 17:44:12 - - Threshold config parsed: 0 rule(s) found
23/7/2020 -- 17:44:12 - - 20679 signatures processed. 1138 are IP-only rules, 3987 are inspecting packet payload, 15324 inspect application layer, 103 are decoder event only
23/7/2020 -- 17:44:25 - - Configuration provided was successfully loaded. Exiting.
23/7/2020 -- 17:44:25 - - cleaning up signature grouping structure… complete

然后重新启动Suricata;

systemctl restart suricata

执行SSH DDoS测试攻击

在另一个系统上,安装hping3工具并执行SSH DDoS测试攻击。

dnf install hping3

然后在运行Suricata的服务器上攻击SSH。

hping3 -S -p 22 --flood --rand-source 192.168.56.133

参考 man hping3

在运行hping时,将警报日志拖到Suricata服务器上。

tail -f /var/log/suricata/fast.log

您应该看到这样的日志行;

...
07/24/2020-21:43:02.613445 [] [1:2400000:2768] ET DROP Spamhaus DROP Listed Traffic Inbound group 1 [] [Classification: Misc Attack] [Priority: 2] {TCP} 42.163.214.132:4391 -> 192.168.56.133:22
07/24/2020-21:43:02.751133 [] [1:2400007:2768] ET DROP Spamhaus DROP Listed Traffic Inbound group 8 [] [Classification: Misc Attack] [Priority: 2] {TCP} 122.8.52.209:11845 -> 192.168.56.133:22
07/24/2020-21:43:02.800769 [] [1:2400012:2768] ET DROP Spamhaus DROP Listed Traffic Inbound group 13 [] [Classification: Misc Attack] [Priority: 2] {TCP} 160.184.221.156:15315 -> 192.168.56.133:22
07/24/2020-21:43:02.801827 [] [1:2400009:2768] ET DROP Spamhaus DROP Listed Traffic Inbound group 10 [] [Classification: Misc Attack] [Priority: 2] {TCP} 139.81.59.221:15607 -> 192.168.56.133:22
07/24/2020-21:43:02.802528 [] [1:2400013:2768] ET DROP Spamhaus DROP Listed Traffic Inbound group 14 [] [Classification: Misc Attack] [Priority: 2] {TCP} 163.198.206.175:15818 -> 192.168.56.133:22
07/24/2020-21:43:02.803033 [] [1:2400021:2768] ET DROP Spamhaus DROP Listed Traffic Inbound group 22 [] [Classification: Misc Attack] [Priority: 2] {TCP} 196.194.135.87:15970 -> 192.168.56.133:22
07/24/2020-21:43:02.803268 [] [1:2400006:2768] ET DROP Spamhaus DROP Listed Traffic Inbound group 7 [] [Classification: Misc Attack] [Priority: 2] {TCP} 110.41.189.155:16042 -> 192.168.56.133:22
07/24/2020-21:43:02.803548 [] [1:2400009:2768] ET DROP Spamhaus DROP Listed Traffic Inbound group 10 [] [Classification: Misc Attack] [Priority: 2] {TCP} 143.135.26.50:16131 -> 192.168.56.133:22
07/24/2020-21:43:02.870288 [] [1:2400021:2768] ET DROP Spamhaus DROP Listed Traffic Inbound group 22 [] [Classification: Misc Attack] [Priority: 2] {TCP} 196.194.107.110:19140 -> 192.168.56.133:22
07/24/2020-21:43:02.871212 [] [1:2400003:2768] ET DROP Spamhaus DROP Listed Traffic Inbound group 4 [] [Classification: Misc Attack] [Priority: 2] {TCP} 101.194.46.143:19453 -> 192.168.56.133:22
07/24/2020-21:43:02.871608 [] [1:2400021:2768] ET DROP Spamhaus DROP Listed Traffic Inbound group 22 [] [Classification: Misc Attack] [Priority: 2] {TCP} 196.16.182.33:19588 -> 192.168.56.133:22
...

通过该简单测试,我们可以看到使用默认的“紧急威胁”规则,Suricata的设置和运行良好。

这标志着我们有关如何在CentOS 8上安装和设置Suricata的指南的结尾。

参考

阅读更多 Suricata用户指南

Sidebar