亚马逊AWS官方博客
使用 Open Distro for Elasticsearch 针对安全事件发出警报
Open Distro for Elasticsearch 的安全插件具有创建审计日志以跟踪对集群的访问的功能。您可以显示各种类型的审计事件,例如身份验证和失败的登录。在上一篇博文中,我们介绍了在 Open Distro for Elasticsearch 中设置警报的基本操作。在本博文中,我们会将安全插件和警报插件相结合,在登录尝试失败时启用警报。您可以扩展此模式,以便在可能出现出于恶意目的试图访问您的 Elasticsearch 集群的情况时收到通知。
设置监视器
可以通过在 elasticsearch.yml
文件中设置 opendistro_security.audit.type: internal_elasticsearch
来启用审计日志记录。默认情况下,我们的 Docker 和 rpm 发行版会启用此设置。
打开 Kibana 控制面板,转到 Alerting 选项卡,然后单击 Create Monitor。指定监视器的名称和 Schedule(您希望其何时运行)。我将监视器命名为 Audit Unauthorized Access Events 并将其运行计划设置为 Every 1 minute。
在同一页面上,向下滚动到 Define Monitor 部分;可以在其中定义要监控的索引以及用于设置警报触发器的数据的提取条件。将索引设置为 security-auditlog-*
,即安全插件审计日志的目标位置。将监控条件定义为 WHEN count() OVER all documents FOR THE LAST 5 minute(s)。单击底部的 Create 按钮以创建监视器。
此外,还可以使用提取查询定义监视器。例如,如果只需监控失败的登录尝试,则提取查询可能如下所示:
{
"query": {
"match": {
"audit_category": {
"query": "FAILED_LOGIN"
}
}
},
"sort": [{
"audit_utc_timestamp" : {
"order" : "desc"
}
}]
}
设置触发器
接下来,需要为此监视器创建触发器。触发器允许您在监视器上的触发器条件得到满足时执行操作。我将创建一个当监视器查询返回一个或多个结果时发送警报的触发器。将 Trigger name 设置为 Unauthorized Access Events on ES Cluster,将 Severity level 设置为 1,并将 Trigger condition 设置为 Above 1:
向下滚动并为此触发器添加操作。我已经配置了一个 Amazon Chime 会议室通知。将 Action name 设置为 Notify OnCall,将 Destination name 设置为 Chime,将 Message subject 设置为 Unauthorized Access Events on ES Cluster,并添加描述性 Message。我从我们的文档中复制了消息:
创建完所有内容后,监视器控制面板的外观如下:
绿条表示最近没有触发。您可以通过从 Kibana 注销并使用错误凭证创建失败的登录尝试来创建触发和警报。再次登录(使用您的真实凭证)后,屏幕将如下图所示(请注意绿色条中相应时间戳的红色部分):
您还将收到“未经授权的访问事件”通知,如下所示:
小结
在本博文中,我们探讨了如何在登录失败时发送警报。安全插件支持更多的审计类别。您可以编写复杂的提取查询,针对特定使用案例(例如多次尝试访问特定索引)发出警报。
您还可以通过在 elasticsearch.yml
中启用/禁用某些类别来配置日志记录生成的数据审计。有关这些设置的列表,请参阅 Audit Logs – Open Distro for Elasticsearch Documentation。
审计日志记录在保持合规性之时和出现安全漏洞之后非常有用。与警报配合使用时,可以帮助您主动保护集群。
有问题或疑问? 希望参与讨论? 您可以在我们的论坛上获得帮助并讨论 Open Distro for Elasticsearch。您可以在这里提出问题。