如何使用 Kibana 的 SIEM 应用程序从 Suricata 事件创建规则、时间表和案例

介绍

此前的教程(https://www.digitalocean.com/community/tutorial_series/securing-your-network-with-suricata)引导您如何安装和配置Suricata。他们还解释了如何使用Filebeat从Suricata服务器发送警报到Elastic Stack服务器,用于其内置的安全信息和事件管理(SIEM)功能。

在本系列的最终教程中,您将创建自定义的Kibana规则,并在Kibana的SIEM仪表板中生成警报。一旦您有规则并了解使用Kibana过滤Suricata的日志,您将探索如何使用Kibana的时线分析工具创建和管理案例。

到本教程结束时,您将有一个SIEM系统,您可以使用它来跟踪和调查网络中的所有服务器中的安全事件。

前提条件

如果您一直在跟踪此教程系列, 您应该已经拥有至少 4GB RAM 和 2 CPU 的服务器, 并配置了一个非 root 用户 。 为本指南的目的,您可以根据您选择的操作系统,遵循我们初始的服务器设置指南来设置此功能.

您还需要 Suricata 安装并在您的服务器上运行. 如果您需要在您的服务器上安装 Suricata,您可以根据您的操作系统使用下列教程之一:

Ubuntu 20.04 : 如何在Ubuntu 20.04上安装Suricata* Debian 11* : 如何在Debian 11上安装Suricata** Rocky Linux 8* : 如何在Rocky Linux 8上安装Suricata

您还需要一个运行 Elastic Stack 的服务器,并配置为 Filebeat 可以将日志从 Suricata 服务器发送到 Elasticsearch. 如果您需要创建一个 Elastic Stack 服务器,请使用以下列表中的一个教程来匹配您的操作系统:

*Ubuntu 20.04 :如何用Suricata和Ubuntu 20.04上的弹性堆积来建立安全信息和事件管理系统 *德比安语 11 :如何与Suricata和Debian 11上的弹性堆叠建立安全信息和事件管理系统

  • 联合国 ** 罗克·利努 8 :[如何与Suricata和Rocky Linux 8上的 " 弹性堆叠 " 一起建立安全信息和事件管理系统(https://andsky.com/tech/tutorials/how-to-build-a-security-information-and-event-management-siem-system-with-suricata-and-the-elastic-stack-on-rocky-linux-8)

确保您可以在 Elasticsearch 服务器上登录 Kibana,并在各种 Suricata Alerts 和 Events 仪表板上有事件。

一旦你有所有先决条件,打开一个SSH隧道到你的Kibana服务器,并登录Kibana使用你的浏览器,使用你在上一个教程中生成的凭证。

步骤 1 — 在 Elasticsearch 中启用 API 密钥

在 Kibana 中创建规则、警报和时间线之前,您需要启用xpack安全模块设置。

打开您的 /etc/elasticsearch/elasticsearch.yml 文件,使用 nano 或您喜爱的编辑器。

1sudo nano /etc/elasticsearch/elasticsearch.yml

将以下突出的行添加到文件的末尾:

1[label /etc/elasticsearch/elasticsearch.yml]
2. . .
3discovery.type: single-node
4xpack.security.enabled: true
5xpack.security.authc.api_key.enabled: true

如果您正在使用「nano」,您可以用「CTRL+X」,然後用「Y」和「ENTER」來確認。

现在重新启动 Elasticsearch,以便新的设置生效。

1sudo systemctl restart elasticsearch.service

您现在可以配置规则,检查警报,并在Kibana中创建时间表和案例。

第2步:向Kibana添加规则

要使用Kibana的SIEM功能与Suricata事件数据,您需要创建规则,以生成有关即将到来的事件的通知。

对于本教程的目的,我们将使用以下签名来检测对不匹配端口(SSH、HTTP 和 TLS 流量)的服务器流量:

1[label Example Suricata Signature]
2alert ssh any any -> 203.0.113.5 !22 (msg:"SSH TRAFFIC on non-SSH port"; classtype: misc-attack; target: dest_ip; sid:1000000;)
3alert ssh any any -> 2001:DB8::1/32 !22 (msg:"SSH TRAFFIC on non-SSH port"; classtype: misc-attack; target: dest_ip; sid:1000001;)
4
5alert http any any -> 203.0.113.5 !80 (msg:"HTTP REQUEST on non-HTTP port"; classtype:misc-activity; sid:1000002;)
6alert http any any -> 2001:DB8::1/32 !80 (msg:"HTTP REQUEST on non-HTTP port"; classtype:misc-activity; sid:1000003;)
7
8alert tls any any -> 203.0.113.5 !443 (msg:"TLS TRAFFIC on non-TLS HTTP port"; classtype:misc-activity; sid:1000004;)
9alert tls any any -> 2001:DB8::1/32 !443 (msg:"TLS TRAFFIC on non-TLS HTTP port"; classtype:misc-activity; sid:1000005;)

如果您正在使用自己的签名或来自规则集的签名,请确保您可以生成警报,并在Kibana的默认Suricata仪表板中访问相应的事件。

现在,请访问Kibana的安全应用程序中的规则页面 http://localhost:5601/app/security/rules/

请确保选中 自定义查询 规则类型卡。 滚动到** 自定义查询** 输入字段并粘贴以下内容:

1[label Kibana Query Language Input]
2rule.id: "1000000" or rule.id :"1000001"

确保您的rule.id值匹配您想要警告的攻击或攻击的Suricata的sid值。

更改 Query快速预览 降至 上个月,然后点击** 预览结果** .假设您在Suricata日志中有匹配的事件,页面将以显示上个月的警报的图表进行更新。

Screenshot of a custom Kibana rule and preview of alerts graph

在此示例中,我们将使用来自 Suricata 规则的消息描述SSH 流量在非 SSH 端口上

您还可以扩展 高级设置 部分并添加有关规则的详细信息,例如,您可以添加有关如何处理规则生成的警报的解释,或链接到安全研究人员关于特定类型的攻击的文章。

当您完成添加规则名称、描述和可选的额外字段时,请单击 继续 来继续创建规则的第 3 步。

留下下一个 时间表规则 部分设置及其默认值,然后单击** 继续** 。

最后,在规则操作步骤中,单击创建和激活规则

您将被重定向到一个新的页面,该页面显示有关规则的详细信息:

Screenshot of a Kibana page that shows a new custom rule

<$>[注] :警报数据可能需要几分钟才能填充,这种延迟是因为规则的默认时间表是每5分钟运行。

如果有其他 Suricata 规则,您想要警告,请重复上述步骤,将签名的sid代替为 Kibana 的自定义查询rule.id字段。

一旦您有规则或规则,您就可以进入下一步,在那里您将检查警报并创建一个案例或案例来管理它们。

步骤 3 — 创建时间表来跟踪 SSH 流量相关的警报

现在你已经配置了一个规则或规则来在Kibana的SIEM应用程序中生成警报,你需要一种方法来进一步组合和管理警报。 要开始,请访问Kibana的警报仪表板: http://127.0.0.1:5601/app/security/alerts

例如,您可以通过从本地机器运行如下命令来触发示例 sid:1000000 Suricata 规则:

1[environment local]
2ssh -p 80 your_server_ip

此命令将尝试使用 SSH 连接到您的服务器上端口 80,而不是默认端口 22 并应该触发警报.在 Kibana 中显示警报可能需要几分钟,因为它必须由 Elasticsearch 和您在 Kibana 中创建的规则处理。

Screenshot of Kibana's Alerts page showing SSH Traffic on non-SSH port alerts

接下来,您将将community_id字段添加到显示在页面底部的警报表中。 记住从第一个教程中,这个字段是由Suricata生成的,代表网络流中包含的唯一的IP地址和端口。

Screenshot of adding the community_id field to the list of alerts

关闭模式,该字段将被添加到警报表中。现在,将具有相同的community_id值的任何警报浮动,然后点击 添加到时间线调查 图标。

Screenshot of adding a set of alerts grouped by community_id field to a timeline

接下来,点击您的浏览器左下角的 Untitled Timeline 链接. 此链接将带您到一个只显示Suricata community_id字段的警告页面,您想要调查。

时间线页面向您显示有关与警报或网络流相关的个别包的更多细节,您可以使用时间线来更好地了解疑似网络流何时开始,源于何处,以及持续了多长时间。

点击页面右侧的所有数据源按钮,选择检测警报按钮,然后点击保存这个选项将限制时间线只显示Kibana生成的警报。

若要保存新时间线,请点击时间线页面的左上角的铅笔图标。下面的屏幕截图突出显示要在哪里找到铅笔图标,以及 所有数据源 按钮:

Screenshot of where to find the pencil icon on the Kibana timeline page

您可以将文本添加到描述字段,如果您想要添加到时间线的其他信息。一旦您完成了编辑时间线名称和描述,请单击保存按钮,在模式对话框的右下角。

重复上述步骤,以创建其他警报的时间表,您希望稍后更深入地检查。

在下一步中,您将使用您的事件时线视图将警报附加到SIEM工具包中的Kibana Cases 应用程序中。

第4步:创建和管理SIEM案例

在之前的步骤中,您创建了一个时间线,根据Suricata的community_id字段将单个警报和包组合在一起,在本教程的本节中,您将创建一个案例来跟踪和管理时间线中的警报。

要从时间线中创建一个新案例,请确保您在浏览器中位于一个时间线页面上. 点击时间线页面右上方的 附件到案例 按钮,然后从显示的列表中点击** 附件到新案例** 。

您将被重定向到一个页面,您可以输入有关您正在调查的事件的信息。在下面的示例屏幕截图中,我们的示例是 SSH 非 SSH 端口上的 SSH 流量:

Screenshot of the Create new case page with a link to the timeline in the description field

在本示例中,案例名称为SSH TRAFFIC on non-SSH port from 203.0.113.5,因为这是我们正在调查的特定类型的流量和主机。

滚动到页面底部并点击 创建案例 按钮. 您的浏览器将位于显示已保存案例的页面上. 您可以添加注释格式的评论,以提供额外的信息,以及从此页面中编辑案例。

接下来,点击描述中的链接,前往您在本教程的上一步中添加的案例的时间线。

对于您想要在案例中包含的每个警报,请单击警报上的 更多操作 图标。

Screenshot of adding an alert to a case from the timeline page

点击出现的模式中的案例名,以将警告添加到案例中。 请确保选择与您正在调查的时间线和警告相符的案例。

现在再访问Kibana中的 Cases 应用程序(http://localhost:5601/app/security/cases)使用页面左侧的导航菜单。

Screenshot showing alerts and timeline link as part of a Case

例如,您已采取的任何步骤来调查警报或警报,对Suricata的配置更改,例如新或编辑的规则,升级到另一个团队成员或任何其他与此案相关的内容。

一旦您对想要跟踪的各种类型的警报创建案例感到舒适,您现在可以使用Kibana的SIEM工具在一个中心位置组织和协调调查任何警报。

结论

在本教程中,您建立了您现有的Suricata和Elastic Stack SIEM系统,将规则添加到Kibana中,以生成有关特定流量的警告。

有了这个SIEM系统,您现在可以在几乎任何规模的系统中跟踪安全事件. 随着您熟悉Suricata并跟踪它在Kibana SIEM中产生的警报,您将能够定制Suricata警报和默认操作,以适应您的特定网络。

有关Kibana的SIEM工具的更多信息,请访问官方文件(https://www.elastic.co/guide/en/security/current/index.html)。

对于更轻量级的SIEM界面,您也可能对EveBox(https://evebox.org/)感兴趣,该界面在一个页面上展示了所有Suricata事件数据和SIEM功能。

Published At
Categories with 技术
comments powered by Disqus