亚马逊云科技 WAF 部署小指南(六)追踪 Amazon WAF Request ID,排查误杀原因

亚马逊云科技 WAF 部署小指南(六)追踪 Amazon WAF Request ID,排查误杀原因

💡 原文中文,约7300字,阅读约需18分钟。
📝

内容提要

中国企业通过2B电商平台进行商品销售和采购,但Web应用防火墙(WAF)可能导致误杀问题。为了解决误杀问题,可以利用Amazon Lambda@Edge和Amazon CloudFront自定义错误页面展示WAF返回的403 Forbidden错误的Request ID。通过这个唯一的WAF Request ID,网站运维工程师可以快速查询相应的WAF日志,找到误杀的原因。配置步骤包括创建CloudFront自定义错误页面、为自定义错误页面的URI path创建一个Cache Behavior、创建Lambda@Edge函数并添加CloudFront viewer request trigger,以及创建WAF WebACL并关联CloudFront distribution。通过这种方法,可以快速排查和解决误杀问题,改善用户体验。

🎯

关键要点

  • 中国企业通过2B电商平台进行商品销售和采购,Web应用防火墙(WAF)可能导致误杀问题。
  • 利用Amazon Lambda@Edge和Amazon CloudFront自定义错误页面展示WAF返回的403 Forbidden错误的Request ID,可以快速查询WAF日志。
  • 配置步骤包括创建CloudFront自定义错误页面、为自定义错误页面的URI path创建Cache Behavior、创建Lambda@Edge函数并添加CloudFront viewer request trigger,以及创建WAF WebACL并关联CloudFront distribution。
  • CloudFront的请求事件包含requestId字段,每个请求都有唯一的Request ID作为标识。
  • 为HTTP状态码403创建CloudFront自定义错误页面时,需设置错误页面的缓存时间为0,避免缓存。
  • 为CloudFront自定义错误页面的URI path单独创建Cache Behavior,确保只允许CloudFront向自定义错误页面发起的请求触发Lambda@Edge。
  • 创建Lambda@Edge函数并添加CloudFront viewer request trigger,以便在403错误页面中插入Request ID。
  • 创建WAF WebACL并配置WAF规则,匹配URI path以产生Block动作。
  • 自定义错误页面可以显示CloudFront request ID,并且与X-Amz-Cf-Id response header的值相同。
  • 企业客户可以通过一键复制Request ID的按钮,方便地将Request ID发送给网站运维工程师。
  • 使用Centralized Logging with OpenSearch、CloudWatch Log Insight和Amazon Athena等工具查询WAF日志中的Request ID。
  • 假设每月10亿WAF请求,其中0.1%为Blocked请求,Lambda@Edge和CloudFront的成本相对较低。
  • 使用UUID作为CloudFront自定义错误页面的URI path,避免DDoS攻击产生不必要的Lambda@Edge费用。
  • WAF自定义响应的优先级高于CloudFront自定义错误页面,避免不必要的Lambda@Edge函数执行。
  • 通过唯一的WAF request ID,网站管理员可以快速排查和解决误杀问题,改善用户体验。
🏷️

标签

➡️

继续阅读