事件定义
事件指环境中导致正常行为改变的特定情况。例如防火墙策略变更或被列入黑名单的IP地址登录尝试失败。 安全数据湖 通过允许您定义事件的具体参数,并在日志数据匹配这些参数时发出警报,帮助您管理事件。本文介绍如何创建和管理事件定义,包括如何 附加警报 到事件。
创建新事件定义主要有两种方式:
通过向导创建事件定义
要通过 安全数据湖 界面中的向导创建事件定义:
-
导航至 警报 .
-
点击 事件定义 选项卡。
-
选择 右上角的 创建事件定义
向导的首屏提供用于设置事件标题、描述和优先级的字段。
应用补救措施
您可以在事件定义、Sigma规则和异常检测器中指定补救措施(以文本值表示)。此功能允许您为安全分析师在触发警报时制定可操作的措施。指定后,这些补救措施将在触发安全事件时突出显示,指导您采取适当的后续步骤。
更多信息,请参阅 补救措施 .
定义优先级
事件的优先级是用户指定的分类。根据重要性,事件可分为1至3级(1=低,2=中,3=高)。此评估可帮助您对事件进行分类,这是安全 调查 中的必要实践。事件优先级在概览中显示为温度计图标,并写入警报中。
低优先级事件(优先级1)的示例可能是10分钟内一次登录失败。中等优先级(优先级2)可能是10分钟内2或3次登录失败。10分钟内超过15次登录失败可能被视为高优先级(优先级3),因为这种情况可能意味着人或机器人试图入侵系统。
设置事件类型
此外,在向导中您还可以定义事件类型。从 条件类型 下拉菜单中选择事件类型:
-
过滤与聚合 :该类型是基于日志数据搜索与筛选的事件。
-
事件关联 :该类型是基于多个其他已定义事件按顺序发生的事件。
完成选择后,本页面将显示更多用于定义事件的字段。
本文剩余部分主要介绍 过滤与聚合 事件。关于事件关联的信息,请参阅 关联引擎 .
注意
Sigma规则事件会显示在 事件定义 页面,但您需要 在 Security Data Lake的 Sigma规则 页面中 定义Sigma事件 .
定义事件条件
通过结合搜索查询与聚合操作,您可以具体描述构成过滤与聚合事件的条件。在 过滤 部分,设置您的搜索查询及其他细节:
-
定义消息需匹配的搜索查询。该查询应使用 与 搜索 页面 .
-
应用搜索筛选器以修改查询结果。 关于搜索筛选器的信息,请参见下文。 ( 可选 )
-
选择可能包含该消息的数据流。
-
定义筛选器向后搜索以匹配消息的时间窗口。
搜索按给定间隔执行。若筛选条件匹配,则创建事件。
使用筛选器定义事件的示例如:通过进一步限定仅包含特定用户,筛选出用户登录失败的记录。您还可将时间窗口定义为最近24小时或最近3天。
若定义的筛选条件与当前 安全数据湖 服务器上的消息匹配,则这些消息将显示在右侧的 筛选预览 面板中。
创建聚合
聚合是指两个或多个实体的组合。新实体将处理特定且有意义的結果。聚合可对数值字段值或匹配筛选条件的原始消息计数执行数学运算。聚合还可在比较前按选定字段对匹配项进行分组。
例如,若定义了用户名字段,则可针对特定用户名连续五次登录失败发出警报。此例中,您需创建当目标用户出现五次及以上连续登录失败消息时触发的事件定义。
创建自定义字段
您还可在 字段 菜单中创建作为事件定义组成部分的自定义字段。这些字段允许根据此定义生成的事件将原始日志数据填充至 安全数据湖 事件索引中,从而避免后续需运行搜索获取关键信息。这些字段亦可用于限制发送至警报目标的数据量,且可运行包含自定义字段的聚合。
这些字段可在警报中访问,并可作为企业级 事件关联 功能的组成部分使用。
注意
事件将被记录至 所有事件 数据流中,其中包含自定义字段及触发该事件的聚合结果。
附加警报
直接从搜索结果创建事件定义
您可以选择搜索结果中的任意值来创建事件定义。该事件定义会生成定制化警报,仅包含您希望被提醒的查询特定部分。操作步骤如下:
-
前往您的搜索结果页面。
-
点击聚合组件、日志视图或消息组件中的任意值。
-
从下拉菜单中选择 创建事件定义 。
-
在弹出的对话框中选择 策略依据 选项。您可选择以下任一选项:
-
完全匹配此值 :显示与当前搜索相关的参数。您可以添加或移除任意参数。
-
组件内任意值 :显示与选定值相关的参数。
-
自定义 :允许您包含搜索查询的任意部分。
-
-
点击 显示策略详情 以选择或取消选择要添加到事件定义中的参数。您在此选择的参数将填充至事件定义的 筛选与聚合 .
注意
除上述三个选项外,根据所选值的不同,系统可能会显示其他选项。例如,若选择聚合组件指标值,您将看到额外的 行内任意值 和 列内任意值 选项。
-
点击 继续配置 ,您将被重定向至 事件定义 页面。首先为事件定义输入唯一标题,并在 事件详情 中填写其他信息。您在步骤4和5中的选择将自动填充到 筛选与聚合 区域。您可在此菜单中添加 搜索筛选条件 , 自定义字段 以及 警报 。
-
查看新事件定义的摘要后,点击 创建事件定义 。新事件定义创建成功后,系统将针对指定条件发送警报。
管理已定义事件
所有已定义事件均显示于 警报与事件 页面。您可在 事件定义 页面查看每个实体的优先级、状态和调度等详细信息。点击 调度 列的信息图标可查看状态、上次执行时间、下次执行时间、下次时间范围及排队通知等信息。
在 事件定义 页面包含 批量操作 菜单,可同时删除、启用和禁用多个实体。 更多 选项中,您可以编辑、复制、启用或禁用以及删除单个定义。
重放搜索
您可以重放首次触发事件的特定搜索。在 警报与事件 页面选择实体以访问重放搜索选项,该选项位于 操作 下。您可以查看搜索结果和消息,以收集调查事件的重要细节。请注意,此页面也可添加书签,供调查期间未来参考。
调度事件
Cron调度可自动化运行事件的过程,使其能够定期在固定时间、日期或其他间隔运行。
通过Cron调度,您可以定义更精确的监控时间窗口。例如,您可以调度事件以在非正常时间(如工作时间之外)发生的登录时发出警报。或者您可以选择仅在夜间CPU使用率较低时运行成本高昂的事件。
Cron调度由Cron表达式决定。Cron表达式是由空格分隔的字段字符串。 安全数据湖 使用 Quartz cron语法 ,例如:
<秒> <分钟> <小时> <日> <月> <星期> <年>
注意
Quartz cron表达式可能有六到七个字段。第七个字段
<年>
是可选的。
例如,假设您希望每周一上午8:05运行一个事件。您在
8
输入
小时
字段,
5
在分钟字段中,且
周一
作为星期几。因此表达式为:
0 5 8 ? * MON *
该示例中的
<月份中的日期>
字段无关紧要,故用问号(
?
)表示。标有星号的其他字段可接受任意值。
cron表达式中使用了几种特殊字符。以下是最常见的几种:
-
*:星号可用于可接受任意值的字段。例如,若要在午夜12点运行事件,可输入:000****。前三个零表示事件运行的秒,分钟和小时。其余字段中的星号表示这些字段接受所有值。 -
?:表示该字段值无关紧要。主要用于星期几。若要在任意星期几运行事件,可使用如下表达式:*58**?*. -
/:正斜杠用于指定范围。例如,M/F表示周一到周五
您可以参考诸如 Cron触发器教程 等资源,以获取有关特殊字符和创建cron表达式的更多信息。
Cron表达式语法
以下是一些常见的cron表达式示例:
|
Cron表达式 |
描述 |
|---|---|
|
|
凌晨2点。 |
|
|
每小时。 |
|
|
每月前7天的上午9点。 |
|
|
每10分钟一次,从每小时的第5分钟开始。 |
|
|
每5分钟一次,从每小时的第1分钟开始,在每月的第7天。 |
|
|
每年1月1日上午7点。 |
向事件定义添加Cron调度
要向事件定义添加cron调度:
-
勾选 使用cron调度 复选框,位于 筛选与聚合 .
-
在 Cron表达式 框中输入所需的cron表达式。
-
选择相关时区。
您的cron表达式将被添加到事件定义中,并可在 事件详情 .
以下示例展示了一个cron表达式,该表达式将安排事件每小时过15分钟时运行,每30分钟一次:
注意
如图所示,您输入的表达式描述将出现在文本框下方。若输入有误,系统将发出警告。
使用动态列表筛选
动态列表允许您定义参数化部分搜索条件的筛选器。每次检查事件定义时,这些参数会被动态列表的结果替换。
动态列表(如 查找表 )可用于创建事件定义:
-
前往 告警 页面。
-
导航至 事件定义 并点击 创建事件定义 .
-
填写 事件详情 .
-
选择 筛选与聚合 作为 条件类型 .
-
使用与 搜索 页面相同的语法输入查询语句。
-
点击出现在 查询参数 框中的未声明参数。在出现的菜单中输入所需信息并选择 保存 .
-
检查 筛选预览 部分以验证结果,然后再继续操作。
-
点击 创建事件定义 在 摘要 选项卡上。现在您将收到基于此事件定义的警报。
动态列表用例
在此场景中,用户出于安全原因希望监控前雇员名单。如果名单上的任何人尝试登录公司系统,他们希望收到警报。通常,由于需要比较的值数量庞大,此类查询通常难以维护。使用查找表可以将日志值与列表中的任何值进行比较。查找表将更新以包括所有前雇员,包括最近离职的员工。
参数
$former_employee$
由查找表支持,该表返回当前的前雇员列表。创建事件定义后,用户将收到名单上任何人登录尝试的警报。
事件定义用例
在回顾 如何创建事件定义 后,本文将为您提供一个深入示例,说明如何从向导设置新事件定义并为此事件附加警报。
场景
以下用例场景描述了一个实例,其中 安全数据湖 接收您需要验证才能登录的服务(例如SSH、Web应用程序)的日志消息。假设您希望从 安全数据湖 收到关于服务认证上可能运行的暴力攻击的电子邮件。如果一名用户在一分钟内未能登录系统10次,您希望从 安全数据湖 .
输入事件详情
点击 创建事件定义 后,系统将显示事件定义向导。在此处输入事件定义的标题和描述,并设置优先级。
由于您收到了一条关于暴力攻击的消息,这需要紧急处理,因此将优先级设置为 高 并继续下一步。
指定条件
选择 过滤与聚合 作为 条件类型 ,因为您只想查看表明身份验证失败的消息。在 过滤 .
定义过滤器
首先,选择您的日志文件所在的流。如果尚未为Web应用程序创建流,我们强烈建议您访问 流 以获取更多信息。查询结果将仅限于Web应用程序日志,其他日志不会影响过滤过程。
现在,您需要过滤传入的消息,以便稍后可以统计符合过滤条件的消息。表明身份验证失败的日志消息将如下所示:
用户admin从IP240.210.133.39登录失败
将
用户登录失败
添加到
搜索查询
字段中。现在,屏幕右侧将显示一个预览表格,其中显示与查询匹配的消息。预览使用
搜索最近
作为时间范围。如果您现在触发一个日志条目,更新查询后应该可以看到它。
设置 搜索最近 设置为10秒,并将 执行搜索间隔 设为10秒。事件引擎将每10秒执行一次查询,时间范围为10秒。
注意
如果 搜索最近 的值大于 执行搜索间隔 (这称为跳跃窗口),事件引擎会为同一日志行生成多个事件。例如,若将 搜索最近 设为一分钟,并将 执行搜索间隔 设为10秒,引擎会发现同一日志条目6次,因为该日志条目在一分钟内可见,而我们每10秒搜索一次。如果 搜索最近 与 执行搜索间隔 周期相同,则会创建所谓的滚动窗口,这在大多数情况下是推荐的做法。
创建聚合
由于需要对事件进行聚合(以判断10秒内是否超过10条消息),请在 结果聚合达到阈值 下方选择 为定义创建事件的条件是... .
为了统计每个用户的失败登录尝试次数,需要为传入消息添加流水线。该流水线将提取用户名并存储到 用户 字段中。每条失败登录消息都包含 用户 字段。请在 按字段分组 .
最后,添加一条聚合规则:如果
计数()
大于或等于
>=
10
.
回顾前序步骤
总结当前已完成的操作:
-
添加数据流以缩小需筛选的消息范围。
-
插入查询语句将日志过滤为仅含登录失败记录。
-
对日志进行分组以实现按用户聚合。
-
添加规则:仅当计数大于或等于10时触发告警。
现在点击 下一步 进入 字段 标签页。
添加自定义字段
点击
添加自定义字段
为事件添加自定义字段。由于您已定义聚合事件,仅可访问
分组字段
中配置的字段。当多条消息聚合成单一事件时,未分组的字段将全部丢失。将
用户
键(您已填入
分组字段
)添加至告警中。随后填写必要信息:
-
为键命名。
-
勾选 将字段用作事件键 这意味着告警将按此键分组。这在下一步骤中至关重要,因为分组键被视为处于宽限期内。此处输入的数字反映分组顺序。若需添加其他键(如用户连接的IP地址),则需先按用户分组,再按IP分组,在此处为IP地址输入数字2。
-
为以下内容选择模板 从以下字段设置值 。这将从聚合结果或过滤后的日志消息中提取字段。输入
${source.user}。生成的聚合结果将是包含名为 用户 字段的源,因为我们已在 分组字段 .
若仅需设置键的事件(对过滤日志消息尤为重要),可勾选 要求所有模板值均已设置 选项。但由于这是聚合操作,此步骤非必需,可直接进入下一页。
添加告警
您希望在事件触发时接收邮件。配置事件将使其升级为告警。您可参阅 告警类型 .
选择预定义的邮件告警,并将 宽限期 设为5分钟。若遭遇暴力攻击,您不会希望每10秒收到提醒邮件。此宽限期仅对自定义字段中选择的事件键生效,因此仅会收到针对攻击者目标用户名的告警邮件。
由于这是聚合事件,在 消息积压 中设置数值可能无意义。可保持未勾选状态。积压将显示 最近搜索时间范围内 的所有消息,并使用您输入的查询条件。在此设置数值将限制积压消息数量。
保存事件定义
在 摘要 页面上最终确认事件定义。检查所有配置无误后,点击 创建事件定义 保存事件定义。
示例警报
如果攻击者在10秒内尝试登录10次,您将收到如下所示的电子邮件:
注意用户被设置为 键 .
创建小部件
导航至搜索页面并按以下步骤创建小部件:
-
选择 所有事件 流以将所有消息筛选为事件。
-
添加
event_definition_id到查询中,以便仅显示与新创建的事件定义相关的事件。 -
创建新的聚合小部件并设置 方向 为 行 且 字段 为 时间戳 .
-
在
键的 列 字段中输入并选择 计数() 位于 指标 .
该 每个用户的暴力破解事件 小组件可添加到 报告 .