Amazon WAF 安全自动化
日期: 2022-08-30

Amazon WAF 有助于保护 Web 应用程序免受可能影响应用程序可用性、安全性或消耗资源的常见攻击。借助 Amazon WAF,您可以自定义网络安全规则,并控制允许哪些流量流向 Amazon CloudFront、Application Load Balancer 或 Amazon API Gateway 上部署的 Web 应用程序和 API。

 

Amazon WAF安全自动化解决方案可用于自动部署一系列Amazon WAF (Web应用程序防火墙) 规则。除了最基本的策略,这一解决方案还包含了通过对Amazon Application Load Balancer (ALB) 和Amazon WAF日志进行分析而自动生成的Amazon WAF策略,从而对Web应用程序的请求进行更精细的控制,自动化解决方案简化了Amazon WAF 的配置过程,帮助用户更好地进行Web应用安全防护。

 

基本功能

  • Amazon WAF – 创建多个WAF规则

 

更新规则

  • Kinesis Data Firehose – 采集WAF日志,写入S3
  • S3存储桶 – 记录ALB日志和WAF日志,用于分析
  • Lambda函数 – 触发Athena进行分析,更新WAF规则
  • Athena – 分析日志,发现问题
  • CloudWatch Event – 定期任务,触发Lambda

 

蜜罐功能

  • API Gateway – 创建蜜罐API,承接不良请求
  • Lambda – 将识别出的不良请求导入蜜罐

 

功能介绍

 


此解决方案的组件可以分为以下保护功能:

  • Amazon 托管规则 (A):此 Amazon 托管核心规则组合提供保护,避免各种常见的应用程序漏洞被利用或出现其他不必要的流量。这些规则包含OWASP出版物中描述的高风险和经常发生的漏洞(如OWASP Top 10),省去您编写通用规则的工作。
  • 手动 IP 列表(B 和 C):此组件可创建两个特定的 Amazon WAF 规则,从而使您可以手动插入您想阻止或允许的 IP 地址。在需要人工介入的情况下(比如临时将测试IP放行,或紧急封锁某个已知的攻击IP),此功能为您提供最直接的控制手段。
  • SQL 注入 (D) 和 XSS (E):此解决方案可配置两个本机 Amazon WAF 规则,这些规则旨在防止 URI、查询字符串或请求正文中的常见 SQL 注入或跨站点脚本(XSS) 模式。
  • HTTP 泛洪攻击 (F):此组件有助于防止由来自特定 IP 地址的大量请求组成的攻击,如 Web 层 DDoS 攻击或暴力登录尝试。此功能的支持阈值是 5 分钟之内少于 100 个请求(阈值可调节),请求到达阈值即触发阻止规则,降低到阈值以下后又可正常访问。
  • 扫描程序和探测器 (G):此组件可解析应用程序访问日志,以搜索可疑行为,例如源生成的异常错误量。然后,它将在客户定义的时间段内阻止这些可疑的源 IP 地址。
  • IP 声誉列表 (H):此组件是 IP 列表解析器 Amazon Lambda 函数,可每小时检查第三方 IP 声誉列表,以获取要阻止的新范围。
  • 不良 Bot (I):此组件可自动设置蜜罐,它是一种安全机制,旨在引诱并转移试图进行的攻击。您需要将方案生成的蜜罐尽可能多地隐藏在前端页面中,来得到更好的防护效果。

 

此解决方案中的三个自定义 Amazon Lambda 函数中的每一个都会向 Amazon CloudWatch 发布执行指标。

 

自动化部署

 


准备CloudFormation 模板资源

此解决方案使用 Amazon CloudFormation 在亚马逊云上自动部署 Amazon WAF 安全自动化解决方案。它包括以下 Amazon CloudFormation 模板。 aws-waf-security-automations.template: 使用此模板启动适用于 Web 应用程序的 Amazon WAF 安全自动化解决方案。使用默认配置会部署包含八个预配置规则的 Amazon WAF Web ACL,但您也可以根据自己的特定需求自定义模板。

 

模板URL:

https://aws-gcr-solutions.s3.cn-north-1.amazonaws.com.cn/aws-waf-security-automations/latest/aws-waf-security-automations.template

 

| 部署此架构的过程包括以下步骤。

 

第一步 启动堆栈

  1. 登录亚马逊云科技管理控制台,然后点击 部署堆栈 以启动 aws-waf-security-automations 模板的部署。您也可以 下载模板 来自定义模板并部署。
  2. 默认情况下,模板在宁夏区域启动。要在其他区域启动实例调度器,请使用控制台导航栏中的区域选择器。
  3. 在【选择模板】页面上,验证是否选择了正确的模板,然后选择【下一步】。
  4. 在【指定详细信息】页面上,为解决方案堆栈命名。这个名称也将是模板创建的 Web ACL 的名称。
  5. 在【参数】标签下,查看模板的参数,并根据需要进行修改。
  6. 选择【下一步】。
  7. 在【配置堆栈选项】页面上,您可以为堆栈中的资源指定标签(键值对)并设置其他选项, 然后选择【下一步】。
  8. 在【查看】页面上,查看并确认设置。选中 “我确认,Amazon CloudFormation 可能创建 IAM 资源” 复选框。
  9. 选择【创建】来启动堆栈的部署。
  10. 您可以在 Amazon CloudFormation 控制台的【状态】列中查看堆栈的状态。您应该会在大约 15 分钟后看到 CREATE_COMPLETE 状态。

 

第二步 修改允许与拒绝 IP 集 (可选)

部署此解决方案的 Amazon CloudFormation 堆栈后,您可以手动修改允许和拒绝的 IP 列表, 以便根据需要添加或删除 IP 地址。

  1. 打开 Amazon WAF 控制台,然后在左侧导航窗格中选择 IP 地址。
  2. 选择白名单集并添加来自可信来源的 IP 地址。
  3. 选择黑名单集来添加添加要阻止的 IP 地址。

 

第三步 在您的 Web 应用程序中嵌入蜜罐链接 (可选)

如果您在步骤 1 中选择启用扫描仪和探测程序防护功能,Amazon CloudFormation 模板会为创建一个几乎不常被访问的终端节点作为蜜罐,用于检测和转移来自内容抓取工具和恶意机器人的入站请求。正常用户不会尝试访问此终端节点。但是,内容抓取程序和恶意机器人(例如扫描安全漏洞和抓取电子邮件地址的恶意软件)可能会尝试访问蜜罐终端节点。在这种情况下, Access Handler Amazon Lambda 函数将检查请求以提取其源,然后更新关联的 Amazon WAF 规则以阻止来自该 IP 地址的后续请求。

 

您需要将蜜罐链接嵌入在可能被请求的页面中。

  1. 打开 Amazon CloudFormation 控制台,选择您在步骤 1 中构建的堆栈,然后选择【输出】选项卡。
  2. 从 BadbotHoneypotEndpoint 密钥中复制终端节点 URL。
  3. 在您的网页内容中嵌入此终端节点链接。使用您在步骤 2 中复制的完整 URL。向正常用户隐藏此链接。

 

第四步 将 Web ACL 与您的 Web 应用程序进行关联

使用您在步骤 1 中生成的资源更新您的应用程序负载均衡器,以激活 Amazon WAF 和日志记录。

  1. 打开 Amazon WAF 控制台,然后选择要使用的 Web ACL。
  2. 在【关联Amazon资源】选项卡上,选择添加资源。
  3. 在【资源类型】下,选择应用程序负载均衡器。
  4. 从列表中选择资源,然后选择【添加】以保存更改。

 

第五步 配置访问日志记录

配置您的应用程序负载均衡器,来将 Web 访问日志发送到相应的 Amazon S3 存储桶,以便这些数据可用于日志分析器 Amazon Lambda 函数。

  1. 打开亚马逊云科技管理控制台。
  2. 在导航窗格中,选择负载均衡器。
  3. 选择您的 Web 应用程序使用的应用程序负载均衡器。
  4. 在【描述】选项卡上,选择编辑属性。
  5. 选择【启用访问日志】。
  6. 对于 S3 位置,输入要用于存储 Web 访问日志(在步骤 1 中定义)的 Amazon S3 存储桶的名称。
  7. 将日志前缀设置为 AWSLogs/。如果您输入 AWSLogs 作为前缀,但收到一条消息,指出前缀不能以 “AWSLogs” 开头,请删除前缀。应用程序负载均衡器将使用 AWSLogs 作为默认前缀。
  8. 选择【保存】。

 

总结

 


  • 使用Amazon WAF安全自动化解决方案减轻安全运维负担,自动配置,自动更新。
  • 全面支持多种功能:SQL注入,XSS攻击,HTTP洪泛,扫描程序和探测器,IP声誉列表,爬虫机器人等,可自由开关。