亚马逊AWS官方博客

亚马逊云科技 WAF 部署小指南(二)使用经济实用的 Log Insights 进行日志分析

方案介绍

亚马逊云科技 WAF 是一个网页应用的防火墙服务。它能帮助保护您的网页应用或网页 API 应对常见的网页攻击。在 WAF 部署小指南(一) 中,我们讨论了 WAF 的原理,如何使用 WAF,以及如何将 WAF 日志存储在 S3 中,并通过 Athena 进行查询。其优势在于成本低,但相应的缺点为查询所需人力成本较高。

那么如何简单快速地查看日志呢?这就是 WAF 部署小指南(二)、(三)、(四)中涉及到的内容了。当我们对于日志有查看单个日志、编译聚合报告、创建可视化内容和构建控制面板的需求,而对于实时性可以容忍分钟级别的延迟,并希望最大性价比。在这种情况下,我们可以参考本篇博客。如果对安全运营要求比较高,需要频繁进行 WAF 日志分析的场景。请参考 WAF 部署小指南(三)(四)的解决方案。

2021 年 12 月,亚马逊云科技 WAF 新增了可将日志直接发送到 CloudWatch Logs 日志组的功能。本博客旨在使用 CloudWatch Log 收集 WAF 日志,并使用 CloudWatch Logs Insights 直接在 WAF 控制台中搜索和分析 WAF 日志。使用 CloudWatch Logs Insights,查看单个日志、编译聚合报告、创建可视化内容和构建控制面板。

内容简介

本文承接 WAF 部署小指南(一)中搭建测试环境的步骤后,并通过后续两个步骤展示如何使用 CloudWatch Logs Insights。

  1. 先决条件:参考 WAF 部署小指南(一)中步骤一至步骤四,搭建并配置实验环境。包括创建 WAF 的 Web ACL,创建测试用的 ALB 及 Web 服务器,关联 Web ACL 与 ALB,及调整 WAF 规则。
  2. 步骤五:打开 WAF 日志设置并存储至 CloudWatch Logs 日志组中。
  3. 步骤六:使用 CloudWatch Logs Insights 搜索分析日志。

架构图:

先决条件

我们可以先参考 WAF 部署小指南(一)的步骤一到四搭建并配置实验环境,包括:

  1. 步骤一:创建 WAF 的 Web ACL。
  2. 步骤二:创建一个测试用的 Web 服务器和 ALB 以测试 WAF 的防护效果。
  3. 步骤三:把我们创建的 Web ACL 与步骤二创建的 ALB 关联起来,以使 WAF 防护功能生效。
  4. 步骤四:对 WAF 规则做一些常用的配置调整。

步骤五. 启用日志

WAF 日志搜集和处理有多种选择。这里介绍 CloudWatch Logs 的方法。这种方法适用于当我们对于日志有查看单个日志、编译聚合报告、创建可视化内容和构建控制面板的需求,而对于实时性可以容忍分钟级别的延迟时。

  1. 启用 WAF 日志:

在日志记录选择方面,我们选择直接把日志放入 CloudWatch Logs log group。

然后我们需要创建一个 CloudWatch Logs log group,注意桶名必须以 aws-waf-logs-开始。否则我们在下拉框里就看不到这个新建的 log group。

完成后点击 Next,WAF 日志就会随后送到这个指定的 log group 了。

要查看 WAF 日志,我们可以去 CloudWatch Log Insights 查看,如下图。使用 Query 语句进行查看即可。

对于 query 语句,我们也提供了一些事例,当然您也可以根据自己的需要编写。

如果需要查看详细日志,只需要点击检索出来的日志条目即可展开,查看详细日志。

如需生成可视化图表,可以点击 Visualization,即可展示图表:

小结

通过以上步骤,我们完成了将 WAF 日志存储在 CloudWatch Logs 中,并能够使用 CloudWatch Log Insights 进行日志的查询。可以满足查看单个日志、编译聚合报告、创建可视化内容和构建控制面板的近实时需求。如果需要更多的定制化和更丰富的报表,可以参考 WAF 部署小指南(三)、(四) ,使用 OpenSearch 对于日志进行存储和分析。

本篇作者

汤哲

AWS解决方案架构师,负责基于 AWS 的云计算方案的咨询与架构设计,同时致力于 AWS 云服务知识体系的传播与普及。在软件开发、安全防护等领域有实践经验,目前关注电商、直播领域。