在 Ubuntu 上安装和配置 Suricata

在 Ubuntu 上安装和配置 Suricata

但是,什么是 Suricata?

Suricata 是一款高性能、开源的网络分析和威胁检测软件,被私营和公共组织广泛采用。主要供应商也嵌入了 Suricata,以加强其资产应对潜在威胁的能力。

简单地说,Suricata 就像是计算机网络的数字安全卫士。它仔细观察通过网络的流量,寻找任何可疑或有害活动的迹象。它能识别潜在威胁并发出警报,从而确保网络安全,是企业保护数字资产的重大工具。

  1. 主动式(IPS)- 用于警报、记录和阻止符合特定规则的网络流量。

在 Ubuntu 上安装和配置 Suricata

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

在 Ubuntu 上安装和配置 Suricata

Suricata 可主动监控网络流量,采用基于签名和异常的检测方法,并为管理员提供警报和日志,以加强网络安全。在 IPS 模式下,它可以主动拦截潜在威胁,为其功能增加了一个预防层。以下是 Suricata 工作原理的简要概述:

  1. 数据包捕获: Suricata 可捕捉流经网络的数据包,收集来自不同网段的数据。
  2. 数据包解码: 它能解码和检查每个数据包的内容,了解用于通信的各种网络协议。
  3. 基于签名的检测: Suricata 使用基于签名的检测,将网络流量特征与已知恶意活动模式数据库进行比较。这与防病毒软件识别已知病毒的方式类似。
  4. 基于异常的检测: 除了基于签名的检测,Suricata 还采用基于异常的检测。它能发现网络行为与正常模式的偏差,协助识别以前未知的或新出现的威胁。
  5. 日志和警报: 当 Suricata 发现可疑活动或潜在安全威胁时,它会生成日志和警报。这些报告提供有关检测到的事件的详细信息,以便管理员进一步调查。
  6. 记录和阻止(IPS 模式): 在入侵防御系统(IPS)模式下,Suricata 不仅能记录和报警,还能采取主动措施阻止或防止潜在的恶意流量。这通过实时主动阻止威胁,增加了一层额外的安全性。
  7. 流量和管理: Suricata 可部署在网络的不同位置,如网络边界、内部网段或云端。部署位置取决于企业的具体安全要求。
  8. 配置和规则集: Suricata 的行为可通过规则集进行高度配置。管理员可以定义特定规则,根据组织的安全策略调整 Suricata 的检测和响应能力。
  9. 定期更新: 为了有效抵御不断变化的威胁,Suricata 的签名数据库和软件定期更新。这些更新可确保系统与时俱进,能够识别新型威胁。
  10. 一台笔记本电脑或个人电脑(不出意外的话)
  11. 可靠稳定的互联网连接
  12. VirtualBox 或 VMware Workstation
  13. 在 VirtualBox 或 VMware 上安装 Ubuntu
  14. 一丝好奇在 VirtualBox 或 VMware 上安装 Ubuntu

请按照提供的步骤进行操作,以获得无缝安装体验。请严格按照说明操作,确保安装过程顺利。

  1. 启动 Ubuntu 虚拟机,打开网页浏览器,然后访问 Suricata 官方网站。导航至 “文档 “部分,点击 “安装”。或者,你也可以通过以下链接直接访问安装指南: https://docs.suricata.io/en/latest/install.html

在 Ubuntu 上安装和配置 Suricata

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

在 Ubuntu 上安装和配置 Suricata

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

sudo systemctl status surictata

在 Ubuntu 上安装和配置 Suricata

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

sudo systemctl stop suricata

在 Ubuntu 上安装和配置 Suricata

要再次启动 Suricata,只需键入以下命令

sudo systemctl start suricata.service 
or 
sudo systemctl start suricata

在 Ubuntu 上安装和配置 Suricata

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

在 Ubuntu 上安装和配置 Suricata

因此,在 Suricata 目录中,我们可以找到四个重大文件。让我们对每个文件进行细分,以便更好地了解其具体功能。

  1. classification.config: 该文件用于配置 Suricata 中检测到的事件的分类。分类根据事件的性质对其进行分类,为理解和组织 Suricata 生成的警报提供了一种方法。分类示例包括 “未遂事件”、”成功事件 “和各种漏洞利用类别。
  2. reference.config: 该文件包含 Suricata 使用的各种数据的引用和映射。其中可能包括有关恶意软件、已知威胁或其他有助于解释警报的参考数据的信息。它提供上下文,协助分析师理解检测到的事件的重大性。
  3. suricata.yaml: 它是 Suricata 的主要配置文件。它包含一整套管理 Suricata IDS/IPS 引擎行为的参数。这些设置涵盖广泛的方面,包括网络配置、日志记录、输出格式、规则管理等。通过定制 suricata.yaml,用户可以根据具体的网络环境和安全策略调整 Suricata。
  4. threshold.config: 该文件专门用于配置 Suricata 中的警报阈值。阈值是一种机制,通过定义应抑制或触发警报的条件,协助管理生成的警报数量。它允许根据特定事件的频率或模式对警报进行微调,防止警报过载。: 它是 Suricata 的主要配置文件。它包含一整套管理 Suricata IDS/IPS 引擎行为的参数。这些设置涵盖广泛的方面,包括网络配置、日志记录、输出格式、规则管理等。通过定制 suricata.yaml,用户可以根据具体的网络环境和安全策略调整 Suricata。

注:这些配置文件在塑造 Suricata 行为方面共同发挥着至关重大的作用,使用户能够定义分类、提供参考数据、自定义整体引擎设置以及实施警报阈值,从而实现更有效的入侵检测和防御。

6. 目前来配置 Suricata.yaml 文件。打开终端,使用文本编辑器打开文件。

在 Ubuntu 上安装和配置 Suricata

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

在 Ubuntu 上安装和配置 Suricata

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

在 Ubuntu 上安装和配置 Suricata

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

在 Ubuntu 上安装和配置 Suricata

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

在 Ubuntu 上安装和配置 Suricata

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

在 Ubuntu 上安装和配置 Suricata

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

在 Ubuntu 上安装和配置 Suricata

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

sudo suricata-update

在 Ubuntu 上安装和配置 Suricata

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

在 Ubuntu 上安装和配置 Suricata

14. Suricata 的突出功能之一是灵活指定规则检索的自定义来源。默认情况下,Suricata 允许您选择其他来源来获取规则或规则集。您可以通过运行以下命令来下载可用源列表。

sudo suricata-update list-sources

15. 这些资源可根据您的具体要求提供不同的规则集。值得注意的是,有些可能需要订阅;而 MIT 或 Open-Source 等许可证则可以免费获取,无需注册订阅。

在 Ubuntu 上安装和配置 Suricata

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

sudo suricata-update enablesource malsilo/win-malware

在 Ubuntu 上安装和配置 Suricata

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

在 Ubuntu 上安装和配置 Suricata

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

在 Ubuntu 上安装和配置 Suricata

18. 要测试配置文件,可以运行以下命令:

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

在 Ubuntu 上安装和配置 Suricata

在测试模式下,Suricata 可提供资源和日志配置概览。它显示负责入侵日志的快速输出设备处于快速模式。此外,eve-log 输出设备以 JSON 格式生成日志。入侵日志可在 “fast.log “中找到,而 JSON 格式的一样信息可在 “eve.log “中找到。输出显示成功处理了 1 个规则文件,成功加载了 35,995 条规则,0 条规则失败。

19. 确认 Suricata 运行正常后,执行以下命令启动服务:

sudo systemctl start suricata

在 Ubuntu 上安装和配置 Suricata

20. 目前,Suricata 已经启动并开始运行,让我们来验证一下它的功能。为了进行快速测试,我们将使用位于刚刚浏览过的目录(即
/var/lib/suricata/suricata.rules)中的规则文件中的一个默认规则。要执行测试,只需运行以下命令即可:

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

因此,它只是告知我们 uid=root 这样的请求实际上被认为是恶意的,由于它意味着我们已经获得了 root 访问权,或者入侵者可能已经获得了 root 访问权。

在 Ubuntu 上安装和配置 Suricata

21. 但我们怎么知道这是记录下来的呢,要做到这一点,我们可以说

sudo cat /var/lib/suricata/fast.log

以下是实际日志,提供了有关来源、目的地等详细信息。这一确认让我们确信,Suricata 正在按计划积极工作。

在 Ubuntu 上安装和配置 Suricata

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

在 Ubuntu 上安装和配置 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;)

保存规则并退出文本编辑器。

在 Ubuntu 上安装和配置 Suricata

让我们试着通过分解来理解这条规则:

  1. alert : 该关键字表明在满足指定条件时,Suricata 应生成警报。
  2. icmp:指定协议,本例中为 ICMP(互联网控制报文协议)。
  3. any any :描述源 IP 地址和目标 IP 地址。在本规则中,它被设置为匹配任意源地址和任意目标地址。
  4. ->:表明流量的方向。-> 表明从源头到目的地。
  5. $HOME_NET any : 指定源 IP 为内部网络(由 HOME_NET 变量定义)和任何目标 IP。
  6. msg:”ICMP Ping 警报”:警报中包含的自定义信息。
  7. sid:1:规则的唯一标识符。可用于参考或管理目的。
  8. rev:1:规则的修订编号。这对更新或修改规则很有协助。:规则的唯一标识符。可用于参考或管理目的。

25. 目前我们必须修改 yaml 配置文件。因此,我们要查找规则路径。使用以下命令打开 yaml 文件:

在 Ubuntu 上安装和配置 Suricata

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

在 Ubuntu 上安装和配置 Suricata

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

在 Ubuntu 上安装和配置 Suricata

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

在 Ubuntu 上安装和配置 Suricata

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

在 Ubuntu 上安装和配置 Suricata

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

在 Ubuntu 上安装和配置 Suricata

从上面的截图可以看出,ICMP 请求已成功记录在 fast.log 文件中。这证明我们的自定义规则按预期运行。

30. 要查看 JSON 格式的同一日志文件,可使用 “tail “工具获取最新日志,并将输出导入 “jq “工具,以获得更有条理的显示。执行以下命令查看 JSON 文件:

在 Ubuntu 上安装和配置 Suricata

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

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容