监控 Web 应用程序防火墙 (WAF) 日志
编辑监控 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 集成编辑
- 在 Kibana 中,导航到 管理 > 集成 并浏览目录以找到 AWS 集成。
- 导航到 设置 选项卡并单击 安装 AWS 资源。
步骤 2:在 Amazon Data Firehose 中创建传输流编辑
- 转到 AWS 控制台 并导航到 Amazon Data Firehose。
- 单击 创建 Firehose 流 并选择 Firehose 流的源和目标。除非您要从 Kinesis Data Streams 流式传输数据,否则请将源设置为
Direct PUT
,并将目标设置为Elastic
。 - 提供一个有意义的 Firehose 流名称,以便您以后可以识别此传输流。您的 Firehose 名称必须以
aws-waf-logs-
为前缀,否则稍后将不会显示。
对于高级用例,可以通过调用自定义 Lambda 函数来转换源记录。使用 Elastic 集成时,不需要这样做。
步骤 3:指定 Firehose 流的目标设置编辑
-
在 目标设置 面板中,指定以下设置
-
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_name:
logs-aws.waf-default
-
Elastic 端点 URL:输入 Elasticsearch 集群的 Elastic 端点 URL。要查找 Elasticsearch 端点,请转到 Elastic Cloud 控制台,导航到“集成”页面,然后选择 连接详细信息。以下是它的外观示例:
步骤 4:创建 Web 访问控制列表编辑
要创建新的 Web 访问控制列表 (ACL),请按照以下步骤操作
- 转到 AWS 控制台 并导航到 WAF 和 Shield 页面。
- 通过输入资源类型、区域和名称来描述 Web ACL。
-
将其关联到 AWS 资源。如果您没有现有资源,则可以创建 Web ACL 并将其附加到多个 AWS 资源
- CloudFront 分发
- 应用程序负载均衡器
- Amazon API Gateway REST API
- Amazon App Runner 服务
- AWS AppSync GraphQL API
- Amazon Cognito 用户池
- AWS Verified Access 实例
- 从 AWS 托管规则组中向 免费规则组 列表添加 1 或 2 条规则。将所有其他设置保留为其默认值。
- 通过保留默认值来设置规则优先级。
- 通过保留默认值来配置指标。
- 查看并创建 Web ACL。
步骤 5:设置日志记录编辑
- 转到您在上一步中创建的 Web ACL。
-
打开 日志记录和指标 部分并编辑以下设置
- 日志记录目标:选择“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 日志。