跳至主内容

事件定义

事件指环境中导致正常行为发生改变的特定情况。例如防火墙策略的变更或被列入黑名单的IP地址尝试登录失败。 安全数据湖 通过允许您定义事件的具体参数,并在日志数据匹配这些参数时发出警报,帮助您管理事件。本文介绍如何创建和管理事件定义,包括如何 关联警报 到事件。

创建新事件定义有两种主要方式:

通过向导创建事件定义

要在 安全数据湖 界面:

  1. 导航至 警报 .

  2. 点击 事件定义 选项卡。

  3. 选择 创建事件定义 (位于右上角)。

向导的首个界面提供用于设置事件标题、描述和优先级的字段。

应用修复步骤

您可以在事件定义、Sigma规则和异常检测器中指定修复步骤(以文本值形式呈现)。该功能允许您为安全分析师在触发警报时提供可操作的措施纲要。当指定修复步骤后,这些步骤将在安全事件触发时显著显示,指导您采取适当的后续行动。

更多信息请参阅 修复步骤 .

定义优先级

事件优先级是用户指定的分类。根据重要性程度,事件可被划分为1至3级(1=低,2=中,3=高)。此评估有助于您对事件进行分类处理,这是安全 调查 中的必要实践。事件优先级在概览中显示为温度计图标,并会写入警报内容。

低优先级事件(1级)的示例可能是10分钟内1次登录失败。中等优先级(2级)可能是10分钟内2-3次登录失败。而10分钟内超过15次登录失败则可能被视为高优先级(3级),因为这种情况可能意味着人或机器人正在尝试入侵系统。

设置事件类型

在向导中,您还可以定义事件类型。从 条件类型 下拉菜单中选择事件类型:

  • 过滤与聚合 :该类型是基于日志数据搜索和过滤的事件。

  • 事件关联 :该类型是基于序列中多个其他已定义事件发生的事件。

完成选择后,页面将显示更多用于定义事件的字段。

本文剩余部分将重点介绍 过滤与聚合 事件。关于事件关联的信息,请参阅 关联引擎 .

注意

Sigma规则事件会显示在 事件定义 页面,但您需要 Sigma规则 页面中 安全数据湖 .

定义事件条件

通过结合搜索查询和聚合操作,您可以明确描述构成过滤与聚合事件的条件。在 过滤 部分,设置您的搜索查询及其他细节:

  1. 定义消息需匹配的搜索查询。该查询应使用 搜索 页面 .

  2. 应用搜索过滤器以修改查询结果。 查看下文 了解搜索过滤器的相关信息( 可选 )

  3. 选择消息所在的数据流。

  4. 定义过滤器向后搜索以匹配消息的时间窗口。

搜索按给定间隔执行。若过滤器匹配,则创建事件。

使用过滤器定义事件的示例可以是:通过进一步限定仅包含特定用户,对搜索失败的用户登录进行过滤。您还可以将时间窗口定义为最近24小时或最近3天。

若定义的过滤器匹配当前位于 安全数据湖 服务器上的消息,这些消息将显示在右侧的 过滤器预览 面板中。

创建聚合

聚合是两个或多个实体的组合。新实体处理特定且有意义的結果。聚合可对数字字段值或匹配过滤器的生成消息原始计数执行数学运算。聚合在比较前可按选定字段对匹配项进行分组。

例如,若定义了用户名字段,则可针对特定用户名连续五次失败登录发出警报。此例中,您需创建当目标用户相关连续失败登录消息达五次及以上时触发的事件定义。

创建自定义字段

您还可在 字段 菜单中创建作为事件定义组成部分的自定义字段。这些字段允许此定义生成的事件将原始日志数据填充至 安全数据湖 事件索引中。这避免了后续搜索获取关键信息的需要。这些字段还可用于限制发送至警报目标的数据量,且可运行包含自定义字段的聚合。

这些字段可在警报中访问,并可作为企业 事件关联 功能的组成部分使用。

注意

事件将被记录至 所有事件 流中,包含自定义字段及触发事件的聚合结果。

附加警报

通知 菜单中,您可为事件定义附加警报。有关设置警报及 警报 文章的详细信息,请参阅 警报类型

直接从搜索结果创建事件定义

您可以选择搜索结果中的任意值来创建事件定义。该事件定义将生成定制化警报,仅包含您希望触发警报的查询特定部分。操作步骤如下:

  1. 进入您的搜索结果页面。

  2. 点击聚合组件、日志视图或消息组件中的任意值。

  3. 从下拉菜单中选择 创建事件定义

  4. 在弹出的对话框中选择 策略依据 选项。您可选择以下任一选项:

    • 完全匹配此值 :显示与当前搜索相关的参数,可自由增删。

    • 组件内任意匹配 :显示与选定值相关的参数。

    • 自定义 :允许包含查询的任意部分。

  5. 点击 显示策略详情 以勾选或取消事件定义所需的参数。所选参数将填充至事件定义的 筛选与聚合 .

    注意

    除上述三个选项外,根据所选值的不同,系统可能提供其他选项。例如选择聚合组件指标值时,将额外显示 行内任意匹配 列内任意匹配 选项。

  6. 点击 继续配置 。您将被重定向至 事件定义 页面。首先为事件定义输入唯一标题,并在 事件详情 中填写其他信息。您在步骤4和5中的选择已自动填充到 过滤与聚合 区域。您可在此菜单中添加 搜索过滤器 , 自定义字段 警报

  7. 查看新事件定义的摘要后,点击 创建事件定义 。新事件定义创建成功后,系统将针对设定条件触发警报。

管理已定义事件

所有已定义事件均显示在 警报与事件 页面。关于每个实体的优先级、状态和调度等详细信息,可在 事件定义 页面查看。点击 调度 列的信息图标,可查看状态、上次执行、下次执行、下次时间范围及排队通知等信息。

事件定义 页面包含 批量操作 菜单,支持同时删除、启用或禁用多个实体。在 更多 操作中,您可以编辑、复制、启用或禁用以及删除单个定义。

重放搜索

您可以重放首次触发事件的特定搜索。在 警报与事件 页面选择实体后,可在 操作 菜单下找到重放搜索选项。通过查看搜索结果和消息,您可以收集调查事件所需的关键信息。注意:此页面可添加书签,便于后续调查时快速查阅。

事件调度

Cron调度可自动化运行事件,支持按固定时间、日期或其他间隔周期性地执行事件。

通过Cron调度,您可以定义更精准的监控时间窗口。例如:调度事件在非工作时间等异常登录时发出警报,或仅在CPU使用率较低的夜间运行高消耗事件。

Cron调度由Cron表达式决定,该表达式是由空格分隔的字段字符串。 安全数据湖 采用 Quartz cron语法 ,例如:

<秒> <分钟> <小时> <日> <月> <星期> <年>

注意

Quartz cron表达式包含6至7个字段,第七个字段 <年> 为可选项。

例如:若需每周一上午8:05运行事件,则需在 8 填入 小时 字段, 5 填入分钟字段, MON 指定星期几。最终表达式为:

0 5 8 ? * MON *

<月份中的日期> 字段在本示例中无关紧要,因此用问号( ? )表示。其他标有星号的字段可接受任意值。

cron表达式中使用了几种特殊字符。以下是一些最常见的字符:

  • * :星号可用于可接受任意值的字段。例如,若要在午夜12点运行事件,可输入: 000**** 。前三个零分别表示事件运行的 , 分钟小时 。其余字段中的星号表示这些字段接受所有值。

  • ? :表示该字段值无关紧要。主要用于星期几字段。若要在任意星期几运行事件,可使用如下表达式: *58**?* .

  • / :斜杠用于指定范围。例如, M/F 表示周一到周五

您可以查阅 Cron触发器教程 等资源,以获取有关特殊字符和创建cron表达式的更多信息。

Cron表达式语法

以下是一些常见的cron表达式示例:

Cron表达式

描述

002***

凌晨2点整。

00****

每小时整点。

0091-7**

每月前7天上午9点。

5/10****

每小时第5分钟开始,每10分钟一次。

01/5*7***

每月7号每小时第1分钟开始,每5分钟一次。

00711?*

每年1月1日上午7点。

为事件定义添加Cron调度

为事件定义添加Cron调度的步骤:

  1. 勾选 使用Cron调度 复选框(位于 筛选与聚合 .

  2. Cron表达式 输入框中输入所需表达式。

  3. 选择对应时区。

该Cron表达式将被添加至事件定义,并可在 事件详情 .

下图示例展示了一个每小时第15分钟开始、每30分钟运行一次的Cron表达式:

cron expression.png

注意

如图所示,您输入的表达式描述将出现在文本框下方。若输入有误,系统会发出警告提示。

使用动态列表筛选

动态列表允许您定义参数化部分搜索条件的筛选器。每次检查事件定义时,这些参数会被动态列表的查询结果替换。

动态列表(如 查找表 )可用于创建事件定义:

  1. 前往 告警 页面。

  2. 导航至 事件定义 并点击 创建事件定义 .

  3. 填写 事件详情 .

  4. 选择 筛选与聚合 作为 条件类型 .

  5. 使用与 搜索 页面相同的语法输入查询语句。

  6. 点击 查询参数 框中出现的未声明参数。在弹出的菜单中输入所需信息并选择 保存 .

  7. 勾选 筛选预览 区域以验证结果后再继续操作。

  8. 点击 创建事件定义 位于 摘要 标签页。现在您将根据此事件定义接收警报。

动态列表应用场景

本场景中,用户出于安全考虑需监控离职员工名单。当名单中任何人尝试登录公司系统时,用户希望收到警报。通常这类查询因需比对海量值而难以维护。使用查找表可将其日志值与列表中任意值进行比对。该查找表将实时更新,包含所有离职员工(含近期离职人员)。

参数 $former_employee$ 由查找表支持,可返回当前离职员工名单。创建事件定义后,系统将针对名单内人员的任何登录尝试向用户发出警报。

事件定义应用场景

在回顾 如何创建事件定义 后,本文将深入演示如何通过向导创建新事件定义并为其附加警报。

场景

以下用例场景描述了 安全数据湖 接收需认证服务的日志消息(如SSH、网络应用)。假设您希望收到 安全数据湖 关于该服务认证可能遭受暴力破解攻击的邮件。若某用户一分钟内登录失败达10次,您需接收 安全数据湖 .

输入事件详情

点击 创建事件定义 后,将进入事件定义向导。在此输入事件定义的标题和描述,并设定优先级。

由于暴力破解攻击需紧急处理,请将优先级设为 并继续下一步。

指定条件

选择 过滤与聚合 作为 条件类型 因为您只想查看表明认证失败的消息。在 过滤器 .

定义过滤器

首先,选择您的日志文件所路由的流。如果尚未为Web应用程序创建流,我们强烈建议访问 以获取更多信息。查询结果将仅限于Web应用程序日志,其他日志不会影响过滤过程。

现在,您需要过滤传入的消息,以便后续统计符合过滤条件的消息。表明认证失败的日志消息如下所示:

用户admin从IP240.210.133.39登录失败

用户登录失败 添加到 搜索查询 字段。此时,屏幕右侧会出现一个预览表格,显示与查询匹配的消息。预览使用 最近 作为时间范围。如果您现在触发日志条目,更新查询后应能看到此内容。

最近 设置为10秒,并将 执行搜索间隔 设为10秒。事件引擎将每10秒执行一次查询,时间范围为10秒。

注意

如果 搜索最近 大于 执行搜索间隔 (称为跳跃窗口),事件引擎会对同一日志行生成多个事件。例如,若将 搜索最近 设为一分钟且 执行搜索间隔 设为10秒,引擎会发现同一日志条目6次,因为该条目在一分钟内可见,而我们每10秒搜索一次。若 搜索最近 执行搜索间隔 周期相同,则创建的是滚动窗口(推荐大多数场景使用)。

创建聚合

由于需要对事件进行聚合(检测10秒内是否超过10条消息),请在 结果聚合达到阈值 下方选择 当满足以下条件时创建事件... .

为统计每个用户的失败登录次数,需添加消息处理管道。该管道将提取用户名并存储至 用户 字段。每条失败登录消息都包含 用户 字段,请将该字段填入 分组字段 .

最后添加聚合规则:当 计数() 结果 >= 10 .

Filter & Agg example 2.png

回顾前序步骤

总结已完成的操作:

  1. 添加数据流以缩小需过滤的消息范围。

  2. 插入查询语句将日志过滤为仅含失败登录记录。

  3. 按用户分组日志以便进行聚合计算。

  4. 添加规则:仅当计数大于或等于10时触发告警。

现在点击 下一步 进入 字段 标签页。

添加自定义字段

点击 添加自定义字段 为事件添加自定义字段。由于采用聚合事件定义,仅可访问 分组字段 中配置的字段。聚合多条消息为单一事件时,未分组的字段将全部丢失。将 用户 键(已填入 分组字段 )添加至告警中,然后填写必要信息:

  1. 为键命名。

  2. 勾选 将字段用作事件键 复选框。这意味着告警将按此键分组,这在下一步骤中至关重要——分组键将处于宽限期内。此处输入的数字反映分组顺序。若需添加其他键(如用户连接的IP地址),则先按用户分组,再按IP分组,此处为IP地址输入数字2。

  3. 设置值来源 选择模板。这将从聚合结果或过滤后的日志消息中提取字段。输入 ${source.user} 。生成的聚合结果将作为数据源,其中包含名为 用户 的字段,因为我们已在 分组字段 .

若仅需获取设置键值的事件(当存在过滤日志消息时尤为重要),则可勾选 要求所有模板值必须设置 选项。但由于这是聚合操作,此步骤非必需,可直接进入下一页。

添加警报

当事件触发时您希望接收邮件通知。配置事件可将其升级为警报。您可在 警报类型 .

选择预定义的邮件警报,并将 宽限期 设为5分钟。若遭遇暴力破解攻击,您不会希望每10秒就收到提醒邮件。该宽限期仅对您在自定义字段中选择的事件键生效,因此仅当攻击者针对特定用户名时您才会收到邮件。

由于这是聚合事件,在 消息积压 中设置数值可能无实际意义。可保持不勾选状态。积压将显示 最近搜索时间范围内 的所有消息,并使用您输入的查询条件。此处设置数值将限制积压消息数量。

保存事件定义

摘要 页面上最终确认事件定义。检查所有配置无误后,点击 创建事件定义 进行保存。

示例警报

若攻击者在10秒内尝试登录10次,您将收到如下邮件:

email.png

注意用户字段被设为 键值 .

创建小部件

按照以下步骤导航至搜索页面并创建小部件:

  1. 选择 所有事件 流以将所有消息筛选为事件类型。

  2. 添加 event_definition_id 至查询条件,仅显示与新创建事件定义相关的事件。

  3. 新建聚合小部件并设置 方向 字段 时间戳 .

  4. 字段中输入并选择 count() 作为 指标 .

alerts raised per user.png

每用户暴力破解事件 小部件可添加至 报告 .