Suricata - 安全检测和防御工具

yanding 2023-07-21 438

Suricata是一个功能强大、多功能、开放的漏洞检测平台,提供入侵检测(IDS)、入侵防御(IPS)和网络安全管理等功能。除了模型匹配和混合之外,它还执行深度数据包分析,这在威胁检测方面非常强大。

在撰写本指南时,Suricata 的最新版本是 6.0.5。


  • IDS/IPS – Suricata 是一种基于规则的入侵检测和防御引擎,它使用外部生成的规则(例如新兴威胁 Suricata 规则)来监控网络流量是否存在任何恶意活动、策略违规和威胁。

  • 自动协议检测 – Suricata 引擎自动检测 HTTP 和 HTTPS 等协议。每个端口上的 FTP 和 SMB 并实施正确的检测和日志记录逻辑。这对于检测恶意软件和 CnC 技术非常有用。

  • Lua 脚本 – Suricata 可以调用提供高级恶意软件检测的 Lua 脚本,以识别和解码其他难以检测的恶意软件流量。

  • 多线程 – Suricata 提供了确定网络流量的速度和重要性。该设备旨在利用现代多核硬件芯片组提供的增强处理能力。


在Linux中安装Suricata的入侵检测工具

在本节中,我们将演示如何在基于 RHEL 的发行版上安装 Suricata。

Suricata 由 Debian/Ubuntu 存储库提供,可以使用 apt 包管理器轻松安装。然而,值得注意的是,这不会安装最新版本的 Suricata。要安装最新版本,您需要从本指南稍后讨论的源安装它。

要使用 apt 包管理器安装 Suricata,请运行以下命令:

$ sudo apt install suricata -y

Suricata - 安全检测和防御工具

Suricata 插入后会自动启动。您可以按如下方式证明这一点。

$ sudo systemctl 状态猫鼬

Suricata - 安全检测和防御工具

要在 RHEL 发行版(例如 CentOS Stream、Rocky Linux、AlmaLinux、Fedora 和 RHEL)上安装 Suricata,必须首先启用 EPEL 存储库。

$ dnf 安装 https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm [ RHEL 9 ]$ dnf 安装 https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm [ RHEL 8 ]$ yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm [ RHEL 7 ]

启用 EPEL 后,安装以下必需的软件包并将 OISF 存储库添加到您的系统。

----------- 在 Fedora 系统上 ----------- $ sudo dnf 安装 dnf-plugins-core$ sudo dnf Copper 启用@oisf/suricata-6.0----------- 在 RHEL 系统上 ----------- $ sudo dnf 安装 yum-plugin-copper$ sudo dnf Copper 启用@oisf/suricata-6.0

接下来,使用 yum 包管理器安装 Suricata,如图所示。

$ sudo dnf install meerkat -y或者$ sudo yum install meerkat -y

Suricata - 安全检测和防御工具

安装 Suricata 后,启动并验证其状况。

$ sudo systemctl 启动 Suricata$ sudo systemctl 状态猫鼬

Suricata - 安全检测和防御工具

来自 Suricata tso Source me Linux me

默认操作系统存储库不提供最新版本的 Suricata。如果您的目标是安装最新版本的 Suricata,那么您需要从源代码安装它。

在撰写本指南时,Suricata 的最新版本是 6.0.5。要在 Ubuntu/Debian 和 RHEL 发行版上从源代码安装 Suricata,请安装以下库、编译工具和依赖项。

----------- 在 Debian 系统上 ----------- $ sudo apt install rustc build-essential Cargo libpcre3 libpcre3-dbg libpcre3-dev make autoconf automake libtool libcap-ng0 make libmagic-dev libjansson-dev libjansson4 libpcap-dev libnet1-dev libyaml-0-2 libyaml-dev zlib1g zlib1g-dev libcap -ng-dev pkg-config libnetfilter-queue1 libnfnetlink0 libnetfilter-queue-dev libnfnetlink-dev -y----------- 在 RHEL 系统上 ----------- $ sudo yum 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 货物 lz4-开发-y

接下来,安装 Suricata-update 应用程序以更新 Suricata 规则。

$ sudo apt install python3-pip [在Debian上]$ sudo yum install python3-pip [在RHEL上]$ pip3 install --upgrade suricata-update

然后为 /usr/bin/suricata-update 创建示例连接。

$ sudo ln -s /usr/local/bin/suricata-update /usr/bin/suricata-update

现在转到 wget 命令。

$ wget https://www.openinfosecfoundation.org/download/suricata-6.0.6.tar.gz

复制后,解压缩并安装 tarball 文件。

$ sudo tar -xvf suricata-6.0.6.tar.gz$ cd suricata-6.0.6$ ./configure --enable-nfqueue --prefix=/usr --sysconfdir=/etc --localstatedir=/var$ 制作$ 进行安装完整

在 Linux 中安装 Suricata

要开始配置 Suricata,我们需要指定内部 IP 和外部网络。为此,请转到配置文件。

$ sudo vim /etc/suricata/suricata.yaml

对于 HOME_NET 指令,指定 Linux 系统的 IP 地址。

HOME_NET:“[173.82.235.7]”

接下来,将 EXTERNAL_NET 指令设置为“!$HOME_NET”。

EXTERNAL_NET:“!$HOME_NET”

Suricata - 安全检测和防御工具

接下来,指定 Suricata 将在其上监视网络流量的网络接口。在我们的例子中,这是 eth0 接口。

您可以使用 ip 命令验证活动网络接口:

$ ip a

在配置文件中,使用网络接口的名称编辑接口方向。

- 接口:eth0

Suricata - 安全检测和防御工具

接下来,确保 default-rule-path 属性设置为 /etc/suricata/rules。

Suricata - 安全检测和防御工具

然后保存更改并关闭配置文件。然后重新启动 Suricata 以使更改生效。

$ sudo systemctl 状态猫鼬

在 Linux 中更新 Suricata 规则集

默认情况下,Suricata 在 /etc/suricata/rules 目录中附带一组有限的搜索规则。然而,这些在检测入侵者方面被认为是薄弱且无效的。您应该加载新兴威胁 (ET) 规则,这些规则被认为是 Suricata 最全面的规则。

Suricata 提供了一个名为 suricata-update 的工具,可以从外部服务器导入规则。要为您的服务器获取新规则,请运行以下命令。

$ sudo suricata-update -o /etc/suricata/rules

Suricata - 安全检测和防御工具Suricata - 安全检测和防御工具

从输出中,您可以看到 suricata-update 获取免费的新兴威胁 ET Open 规则并将其保存在 Suricata 的 /etc/suricata/rules/suricata 规则文件中。此外,还表示已处理的规则数。此样本中包含 35941 人。其中,实施28221条,删除18条,修改1249条。

将 Suricata 规则添加到 Linux

suricata-update 工具允许您从规则集服务器导入规则。有些是免费的,例如 ET Open 集,而另一些则需要付费订阅。

要列出第一组规则颁发者,请执行 suricata-update 命令,如下所示。

$ sudo suricata-更新列表源

Suricata - 安全检测和防御工具

要添加命令,例如 tgreen/hunting 命令,请执行以下命令。

$ sudo suricata-update 启用源 tgreen/hunting

Suricata - 安全检测和防御工具

添加命令后,使用-o /etc/suricata/rulesflag 再次执行 suricata-update 命令。

$ sudo suricata-update -o /etc/suricata/rules

Suricata - 安全检测和防御工具

在 Linux 中测试 Suricata 规则

在开始测试 Suricata 之前,最好测试一下该程序是否良好。为此,请运行以下命令:

$ sudo suricata -T -c /etc/suricata/suricata.yaml -v

确保没有报告错误。如果您运行的是 RHEL、CentOS Stream、Fedora 和 Rocky Linux,请启动并运行 Suricata。

$ sudo systemctl 启动 Suricata$ sudo systemctl 启用 Suricata

到目前为止,我们已经成功安装了Suricata,并且我们已经对其进行了配置并更新了规则。ET 开放规则集包含超过 30,000 条用于检测恶意流量的规则。在本节中,我们将测试 Suricata 并查看它是否可以检测可疑的网络流量。

我们将按照 Suricata 快速入门指南的建议通过模拟攻击来测试 ET Open 命令。

IDS 的功能将通过向配置 NIDS(网络入侵和检测系统)的 testmynids.org 网站发送 HTTP 请求,使用签名 ID 2100498 进行测试。

$curl http://testmynids.org/uid/index.html

您应该得到以下结果。

uid=0(root) gid=0(root) groups=0(root)

通过模拟可通过 shell 在受感染的远程系统上执行的 id 命令的输出,修改了发送以触发警报的 HTTP 请求。

现在让我们检查一下苏里卡塔的记录,看看是否有类似的警告。Suricata 附带两个默认情况下派上用场的日志文件。

/var/log/suricata/fast.log/var/log/suricata/eve.log

我们还将查看 /var/log/suricata/fast.log 日志文件中与 grep 命令对应的日志条目。我们将从快速入门记录中搜索使用 2100498 规则标识符输入的记录。

$ grep 2100948 /var/log/suricata/fast.log

您将看到以下结果,表明登录。其中,173.82.235.7是服务器的公网IP地址。

09/09/2022-22:17:06.796434 [**] [1:2100498:7] GPL ATTACK_RESPONSE id 检查返回根 [**] [分类:潜在不良流量] [优先级:2] {TCP} 13.226.210.123 :80 -> 173.82.235.7:33822

Suricata - 安全检测和防御工具

或者,您可以检查 /var/log/suricata/eve.log 日志文件中的签名 ID 2100498,如图所示。

$ jq 'select(.alert .signature_id==2100498)' /var/log/suricata/eve.json

Suricata - 安全检测和防御工具

这是有关如何在 Linux 上安装和配置 Suricata 的综合指南。我们研究了各种配置方法,如何配置 Suricata 和更新 Suricata 规则,以及如何管理 Suricata systemd 服务和运行网络入侵测试。

我们希望您现在可以轻松安装和使用 Suricata 来保护您的系统免受网络攻击或恶意流量的侵害。


The End