亚马逊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

在 Open Distro for Elasticsearch 中创建监视器的第一个向导对话框,在其中设置名称和计划

在同一页面上,向下滚动到 Define Monitor 部分;可以在其中定义要监控的索引以及用于设置警报触发器的数据的提取条件。将索引设置为 security-auditlog-*,即安全插件审计日志的目标位置。将监控条件定义为 WHEN count() OVER all documents FOR THE LAST 5 minute(s)。单击底部的 Create 按钮以创建监视器。

在 Open Distro for Elasticsearch 中创建监视器的第二个向导对话框,其中显示提取数据的条件

此外,还可以使用提取查询定义监视器。例如,如果只需监控失败的登录尝试,则提取查询可能如下所示:

{ 
    "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

在 Open Distro for Elasticsearch 中创建监视器触发器的向导对话框,在其中设置触发器名称、严重性和阈值

向下滚动并为此触发器添加操作。我已经配置了一个 Amazon Chime 会议室通知。将 Action name 设置为 Notify OnCall,将 Destination name 设置为 Chime,将 Message subject 设置为 Unauthorized Access Events on ES Cluster,并添加描述性 Message。我从我们的文档中复制了消息:

设置 Open Distro for Elasticsearch 监视器触发器触发时要执行的操作的向导。在其中设置目标、消息主题和消息模板

创建完所有内容后,监视器控制面板的外观如下:

Open Distro for Elasticsearch 中已完成创建的监视器,显示状态部分

Open Distro for Elasticsearch 中已完成创建的监视器,显示触发和警报历史记录

绿条表示最近没有触发。您可以通过从 Kibana 注销并使用错误凭证创建失败的登录尝试来创建触发和警报。再次登录(使用您的真实凭证)后,屏幕将如下图所示(请注意绿色条中相应时间戳的红色部分):

Open Distro for Elasticsearch 中的监视器历史记录,包含触发触发器和 Open Distro 发送警报的两个时间段

您还将收到“未经授权的访问事件”通知,如下所示:

Open Distro for Elasticsearch 触发器发送警报时收到的警报消息

小结

在本博文中,我们探讨了如何在登录失败时发送警报。安全插件支持更多的审计类别。您可以编写复杂的提取查询,针对特定使用案例(例如多次尝试访问特定索引)发出警报。

您还可以通过在 elasticsearch.yml 中启用/禁用某些类别来配置日志记录生成的数据审计。有关这些设置的列表,请参阅 Audit Logs – Open Distro for Elasticsearch Documentation

审计日志记录在保持合规性之时和出现安全漏洞之后非常有用。与警报配合使用时,可以帮助您主动保护集群。

有问题或疑问? 希望参与讨论? 您可以在我们的论坛上获得帮助并讨论 Open Distro for Elasticsearch。您可以在这里提出问题

本篇作者

Shivang Doshi

Shivang Doshi

Shivang Doshi 是总部位于加州帕罗奥图市的 Amazon Web Services 的软件开发工程师。Shivang 与产品经理密切合作,为 AWS Elasticsearch Service 开发新功能,从而为客户提供更安全的集群。Shivang 拥有孟买大学的信息技术学士学位和圣何塞州立大学的软件工程师硕士学位。