
但是,什么是 Suricata?
Suricata 是一款高性能、开源的网络分析和威胁检测软件,被私营和公共组织广泛采用。主要供应商也嵌入了 Suricata,以加强其资产应对潜在威胁的能力。
简单地说,Suricata 就像是计算机网络的数字安全卫士。它仔细观察通过网络的流量,寻找任何可疑或有害活动的迹象。它能识别潜在威胁并发出警报,从而确保网络安全,是企业保护数字资产的重大工具。
- 主动式(IPS)- 用于警报、记录和阻止符合特定规则的网络流量。

2. 被动式(IDS)- 用于识别、警报和记录网络中的可疑网络流量。

Suricata 可主动监控网络流量,采用基于签名和异常的检测方法,并为管理员提供警报和日志,以加强网络安全。在 IPS 模式下,它可以主动拦截潜在威胁,为其功能增加了一个预防层。以下是 Suricata 工作原理的简要概述:
- 数据包捕获: Suricata 可捕捉流经网络的数据包,收集来自不同网段的数据。
- 数据包解码: 它能解码和检查每个数据包的内容,了解用于通信的各种网络协议。
- 基于签名的检测: Suricata 使用基于签名的检测,将网络流量特征与已知恶意活动模式数据库进行比较。这与防病毒软件识别已知病毒的方式类似。
- 基于异常的检测: 除了基于签名的检测,Suricata 还采用基于异常的检测。它能发现网络行为与正常模式的偏差,协助识别以前未知的或新出现的威胁。
- 日志和警报: 当 Suricata 发现可疑活动或潜在安全威胁时,它会生成日志和警报。这些报告提供有关检测到的事件的详细信息,以便管理员进一步调查。
- 记录和阻止(IPS 模式): 在入侵防御系统(IPS)模式下,Suricata 不仅能记录和报警,还能采取主动措施阻止或防止潜在的恶意流量。这通过实时主动阻止威胁,增加了一层额外的安全性。
- 流量和管理: Suricata 可部署在网络的不同位置,如网络边界、内部网段或云端。部署位置取决于企业的具体安全要求。
- 配置和规则集: Suricata 的行为可通过规则集进行高度配置。管理员可以定义特定规则,根据组织的安全策略调整 Suricata 的检测和响应能力。
- 定期更新: 为了有效抵御不断变化的威胁,Suricata 的签名数据库和软件定期更新。这些更新可确保系统与时俱进,能够识别新型威胁。
- 一台笔记本电脑或个人电脑(不出意外的话)
- 可靠稳定的互联网连接
- VirtualBox 或 VMware Workstation
- 在 VirtualBox 或 VMware 上安装 Ubuntu
- 一丝好奇在 VirtualBox 或 VMware 上安装 Ubuntu
请按照提供的步骤进行操作,以获得无缝安装体验。请严格按照说明操作,确保安装过程顺利。
- 启动 Ubuntu 虚拟机,打开网页浏览器,然后访问 Suricata 官方网站。导航至 “文档 “部分,点击 “安装”。或者,你也可以通过以下链接直接访问安装指南: https://docs.suricata.io/en/latest/install.html

2. 执行文档中给出的命令,在 Ubuntu 上设置并安装最新的稳定版 Suricata。
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:oisf/suricata-stable;
sudo apt-get update
sudo apt-get install suricata

3. 安装好 Suricata 后,让我们使用以下命令检查它是否已经运行。
sudo systemctl status surictata

4. 我们可以看到,Suricata 已经在运行,而我们还没有完全设置好它,因此最好在配置时停止服务。执行以下命令停止服务。
sudo systemctl stop suricata

要再次启动 Suricata,只需键入以下命令
sudo systemctl start suricata.service
or
sudo systemctl start suricata

5. 目前,Suricata 已成功安装,其服务也已成功运行,让我们来看看位于 /etc/suricata/ 目录下的配置文件。

因此,在 Suricata 目录中,我们可以找到四个重大文件。让我们对每个文件进行细分,以便更好地了解其具体功能。
- classification.config: 该文件用于配置 Suricata 中检测到的事件的分类。分类根据事件的性质对其进行分类,为理解和组织 Suricata 生成的警报提供了一种方法。分类示例包括 “未遂事件”、”成功事件 “和各种漏洞利用类别。
- reference.config: 该文件包含 Suricata 使用的各种数据的引用和映射。其中可能包括有关恶意软件、已知威胁或其他有助于解释警报的参考数据的信息。它提供上下文,协助分析师理解检测到的事件的重大性。
- suricata.yaml: 它是 Suricata 的主要配置文件。它包含一整套管理 Suricata IDS/IPS 引擎行为的参数。这些设置涵盖广泛的方面,包括网络配置、日志记录、输出格式、规则管理等。通过定制 suricata.yaml,用户可以根据具体的网络环境和安全策略调整 Suricata。
- threshold.config: 该文件专门用于配置 Suricata 中的警报阈值。阈值是一种机制,通过定义应抑制或触发警报的条件,协助管理生成的警报数量。它允许根据特定事件的频率或模式对警报进行微调,防止警报过载。: 它是 Suricata 的主要配置文件。它包含一整套管理 Suricata IDS/IPS 引擎行为的参数。这些设置涵盖广泛的方面,包括网络配置、日志记录、输出格式、规则管理等。通过定制 suricata.yaml,用户可以根据具体的网络环境和安全策略调整 Suricata。
注:这些配置文件在塑造 Suricata 行为方面共同发挥着至关重大的作用,使用户能够定义分类、提供参考数据、自定义整体引擎设置以及实施警报阈值,从而实现更有效的入侵检测和防御。
6. 目前来配置 Suricata.yaml 文件。打开终端,使用文本编辑器打开文件。

该文件应如下所示。目前,我们来指定实际的 HOME_NET 子网地址。要找到它,只需在终端内打开一个新窗口,输入 “ip a “或 “ifconfig”,类似于终端窗口的右侧。

7. 将默认的 HOME_NET 子网替换为特定机器的子网,即 192.168.250.134/24 并保存。

8. 向下滚动到底部,在步骤 3 下的 “Linux 高速捕获支持 “处停止。目前,我们需要将默认接口替换为我们要监控的网络接口,即 ens33。

9. 再次向下滚动到 “跨平台 libpcap 支持”,将默认接口替换为我们要监控的特定接口。

10. 下一个需要配置的重大选项是社区流量 ID。该功能对于事件关联至关重大,尤其是在使用 Zeek 等工具或处理 JSON 格式的日志时。要启用此功能,请搜索 “community-id”。在 EVE 记录中启用社区 ID 字段可提供一致的流量 ID,有助于将记录与 Zeek 等其他工具的输出进行匹配。为提高安全性,可思考修改种子,使 ID 更难预测。Suricata 默认以 JSON 格式生成日志文件,因此请确保将此选项设置为 “true”,以便有效管理日志。

11. 下一个需要查看的选项是实际规则的位置。搜索 “default-rule-path”。它指向默认规则路径,一般位于 /var/lib/suricata/rules 目录下。如果要添加自定义规则文件,可以在此指定该文件是否已存在于该目录中。因此,如果文件已经存在于”/var/lib/suricata/rules “目录下,则只需提供 custom.rules 名称即可,但如果文件存储在其他目录下,则可以使用
/etc/suricata/rules/custom.rule。因此,你想加载的任何自定义规则或规则集都可以通过这种方式完成。目前我们还没有这个文件,由于suricata默认情况下不会创建它,所以我们只需写入并退出,由于我们目前不想修改它。

12. 目前我们需要运行一次 Suricata,以便在指定目录中创建规则。此外,我们已经更新了 Suricata 规则集,所以接下来要做的就是更新规则集。键入以下命令更新规则集。
sudo suricata-update

13. 如果我们目前列出”/var/lib/suricata “目录,就会发现其中有 suricata.rules(包含所有规则的汇总)和 classification.config 文件。

14. Suricata 的突出功能之一是灵活指定规则检索的自定义来源。默认情况下,Suricata 允许您选择其他来源来获取规则或规则集。您可以通过运行以下命令来下载可用源列表。
sudo suricata-update list-sources
15. 这些资源可根据您的具体要求提供不同的规则集。值得注意的是,有些可能需要订阅;而 MIT 或 Open-Source 等许可证则可以免费获取,无需注册订阅。

16. 举个例子:如果我们想添加 “malsilo/win-malware “规则集,可以通过执行以下命令来实现。
sudo suricata-update enablesource malsilo/win-malware

17. 目前再次更新 Suricata,以确保我们这里的规则是最新的。

如果我们看一下实际的 suricata 服务,它应该是禁用的。

18. 要测试配置文件,可以运行以下命令:
sudo suricata -T -c /etc/suricata/suricata.yaml -v

在测试模式下,Suricata 可提供资源和日志配置概览。它显示负责入侵日志的快速输出设备处于快速模式。此外,eve-log 输出设备以 JSON 格式生成日志。入侵日志可在 “fast.log “中找到,而 JSON 格式的一样信息可在 “eve.log “中找到。输出显示成功处理了 1 个规则文件,成功加载了 35,995 条规则,0 条规则失败。
19. 确认 Suricata 运行正常后,执行以下命令启动服务:
sudo systemctl start suricata

20. 目前,Suricata 已经启动并开始运行,让我们来验证一下它的功能。为了进行快速测试,我们将使用位于刚刚浏览过的目录(即
/var/lib/suricata/suricata.rules)中的规则文件中的一个默认规则。要执行测试,只需运行以下命令即可:
curl http://testmynids.org/uid/index.html
因此,它只是告知我们 uid=root 这样的请求实际上被认为是恶意的,由于它意味着我们已经获得了 root 访问权,或者入侵者可能已经获得了 root 访问权。

21. 但我们怎么知道这是记录下来的呢,要做到这一点,我们可以说
sudo cat /var/lib/suricata/fast.log
以下是实际日志,提供了有关来源、目的地等详细信息。这一确认让我们确信,Suricata 正在按计划积极工作。

22. 接下来,让我们探索一下添加自定义规则的过程,以进一步增强 Suricata 的功能。为此,我们第一需要使用以下命令停止 Suricata 服务:

23. 目前在”/var/lib/suricata/rules “目录下添加/创建自定义的 suricata 规则。(注:也可以在”/etc/suricata “目录下添加规则,但需要在 suricata.yaml 文件中指定规则路径)。创建/添加自定义规则的方法如下:
sudo vi /var/lib/suricata/rules/cutom.rule
24. 这将打开 vim 文本编辑器,供您添加规则。请按照下面的类似方式编写:
alert icmp any any -> $HOME_NET any ( msg: "ICMP Ping Alert"; sid:1; rev:1;)
保存规则并退出文本编辑器。

让我们试着通过分解来理解这条规则:
- alert : 该关键字表明在满足指定条件时,Suricata 应生成警报。
- icmp:指定协议,本例中为 ICMP(互联网控制报文协议)。
- any any :描述源 IP 地址和目标 IP 地址。在本规则中,它被设置为匹配任意源地址和任意目标地址。
- ->:表明流量的方向。-> 表明从源头到目的地。
- $HOME_NET any : 指定源 IP 为内部网络(由 HOME_NET 变量定义)和任何目标 IP。
- msg:”ICMP Ping 警报”:警报中包含的自定义信息。
- sid:1:规则的唯一标识符。可用于参考或管理目的。
- rev:1:规则的修订编号。这对更新或修改规则很有协助。:规则的唯一标识符。可用于参考或管理目的。
25. 目前我们必须修改 yaml 配置文件。因此,我们要查找规则路径。使用以下命令打开 yaml 文件:

在规则文件下添加新规则,即 custom.rule: 然后保存文件并退出编辑器。

26. 目前,让我们再次测试配置,确保配置文件中没有任何问题。

27. 测试成功,表明 YAML 文件没有问题。目前,让我们使用命令启动 Suricata 服务:

28. 目前我将尝试从另一台机器上运行 ping,看看是否能记录请求。

29. 要查看日志,请使用以下命令。

从上面的截图可以看出,ICMP 请求已成功记录在 fast.log 文件中。这证明我们的自定义规则按预期运行。
30. 要查看 JSON 格式的同一日志文件,可使用 “tail “工具获取最新日志,并将输出导入 “jq “工具,以获得更有条理的显示。执行以下命令查看 JSON 文件:

当数据以 JSON 格式呈现时,这一点尤为有利,由于它提供了全面的详细信息,如时间戳、源 IP 和端口、目标 IP 和端口、协议和签名。此类结构化信息对于将数据导入 Zeek 等工具或进行事件关联等任务而言,具有无价之宝的价值。
















暂无评论内容