监控 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 上运行的 7.17 或更高版本的 Elastic Stack。
确保部署在 AWS 上,因为 Amazon Data Firehose 传输流专门连接到 AWS 上的端点。
步骤 1:在 Kibana 中安装 AWS 集成
编辑- 在主菜单中找到集成,或使用 全局搜索字段。
- 浏览目录以查找 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 密钥,请确保查看索引权限,至少为将与此交付流一起使用的索引提供“auto_configure”和“write”权限。
- 内容编码:为了提高网络效率,请将内容编码保留为 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 日志。