监控 Web 应用程序防火墙 (WAF) 日志编辑

在本节中,您将学习如何使用 Amazon Data Firehose 将 AWS WAF 事件从 AWS 发送到您的 Elastic Stack。

您将完成以下步骤

  • 选择一个与 WAF 兼容的资源(例如,CloudFront 分发)
  • 在 Amazon Data Firehose 中创建一个传输流
  • 创建一个 Web 访问控制列表 (ACL) 以生成 WAF 日志
  • 设置日志记录以使用 Firehose 流将日志转发到 Elastic Stack
  • 在 Kibana 中可视化您的 WAF 日志
准备工作编辑

我们假设您已经拥有

  • 一个具有从 AWS 拉取必要数据的权限的 AWS 账户。
  • 一个使用我们在 Elastic Cloud 上托管的 Elasticsearch 服务的部署。该部署包括一个用于存储和搜索数据的 Elasticsearch 集群,以及一个用于可视化和管理数据的 Kibana。AWS Data Firehose 仅适用于在 Elastic Cloud 上运行的 Elastic Stack 7.17 或更高版本。

确保部署在 AWS 上,因为 Amazon Data Firehose 传输流专门连接到需要位于 AWS 上的端点。

步骤 1:在 Kibana 中安装 AWS 集成编辑
  1. 在 Kibana 中,导航到 管理 > 集成 并浏览目录以找到 AWS 集成。
  2. 导航到 设置 选项卡并单击 安装 AWS 资源
步骤 2:在 Amazon Data Firehose 中创建传输流编辑
  1. 转到 AWS 控制台 并导航到 Amazon Data Firehose。
  2. 单击 创建 Firehose 流 并选择 Firehose 流的源和目标。除非您要从 Kinesis Data Streams 流式传输数据,否则请将源设置为 Direct PUT,并将目标设置为 Elastic
  3. 提供一个有意义的 Firehose 流名称,以便您以后可以识别此传输流。您的 Firehose 名称必须以 aws-waf-logs- 为前缀,否则稍后将不会显示。

对于高级用例,可以通过调用自定义 Lambda 函数来转换源记录。使用 Elastic 集成时,不需要这样做。

步骤 3:指定 Firehose 流的目标设置编辑
  1. 目标设置 面板中,指定以下设置

    • Elastic 端点 URL:输入 Elasticsearch 集群的 Elastic 端点 URL。要查找 Elasticsearch 端点,请转到 Elastic Cloud 控制台,导航到“集成”页面,然后选择 连接详细信息。以下是它的外观示例:https://my-deployment.es.us-east-1.aws.elastic-cloud.com
    • API 密钥:输入编码后的 Elastic API 密钥。要创建 API 密钥,请转到 Elastic Cloud 控制台,导航到“集成”页面,选择 连接详细信息,然后单击 创建和管理 API 密钥。如果您使用的是具有 限制权限 的 API 密钥,请确保查看索引权限,以便至少为要与此传输流一起使用的索引提供“自动配置”和“写入”权限。
    • 内容编码:为了提高网络效率,请将内容编码设置为 GZIP。
    • 重试持续时间:确定在发生错误时 Firehose 继续重试请求的时间。对于大多数用例,60-300 秒的持续时间应该足够了。
    • es_datastream_namelogs-aws.waf-default
步骤 4:创建 Web 访问控制列表编辑

要创建新的 Web 访问控制列表 (ACL),请按照以下步骤操作

  1. 转到 AWS 控制台 并导航到 WAF 和 Shield 页面。
  2. 通过输入资源类型、区域和名称来描述 Web ACL。
  3. 将其关联到 AWS 资源。如果您没有现有资源,则可以创建 Web ACL 并将其附加到多个 AWS 资源

    • CloudFront 分发
    • 应用程序负载均衡器
    • Amazon API Gateway REST API
    • Amazon App Runner 服务
    • AWS AppSync GraphQL API
    • Amazon Cognito 用户池
    • AWS Verified Access 实例
  4. 从 AWS 托管规则组中向 免费规则组 列表添加 1 或 2 条规则。将所有其他设置保留为其默认值。
  5. 通过保留默认值来设置规则优先级。
  6. 通过保留默认值来配置指标。
  7. 查看并创建 Web ACL。
步骤 5:设置日志记录编辑
  1. 转到您在上一步中创建的 Web ACL。
  2. 打开 日志记录和指标 部分并编辑以下设置

    • 日志记录目标:选择“Amazon Data Firehose 流”
    • Amazon Data Firehose 流:选择您在步骤 2 中创建的 Firehose 流。

WAF 创建所需的 Identity and Access Management (IAM) 角色。如果您的 Firehose 流名称未出现在列表中,请确保您为流选择的名称以 aws-waf-logs- 开头,如 AWS 命名约定所规定的那样。

步骤 6:在 Kibana 中可视化您的 WAF 日志编辑

您现在可以登录到您的 Elastic Stack 以检查 WAF 日志是否在流动。要生成日志,您可以使用 cURL 向您的测试 CloudFront 分发发送 HTTP 请求。

curl -i https://<your cloudfront distribution>.cloudfront.net

要保持稳定的日志流,您可以使用 watch -n 5 每 5 秒重复一次命令。

watch -n 5 curl -i https://<your cloudfront distribution>.cloudfront.net

导航到 Kibana 并可视化 Elastic Stack 中的第一个 WAF 日志。

Firehose WAF logs in Kibana