Amazon WAF 安全自动化部署实战
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:
| 部署此架构的过程包括以下步骤。
第一步 启动堆栈
- 登录亚马逊云科技管理控制台,然后点击 部署堆栈 以启动 aws-waf-security-automations 模板的部署。您也可以 下载模板 来自定义模板并部署。
- 默认情况下,模板在宁夏区域启动。要在其他区域启动实例调度器,请使用控制台导航栏中的区域选择器。
- 在【选择模板】页面上,验证是否选择了正确的模板,然后选择【下一步】。
- 在【指定详细信息】页面上,为解决方案堆栈命名。这个名称也将是模板创建的 Web ACL 的名称。
- 在【参数】标签下,查看模板的参数,并根据需要进行修改。
- 选择【下一步】。
- 在【配置堆栈选项】页面上,您可以为堆栈中的资源指定标签(键值对)并设置其他选项, 然后选择【下一步】。
- 在【查看】页面上,查看并确认设置。选中 “我确认,Amazon CloudFormation 可能创建 IAM 资源” 复选框。
- 选择【创建】来启动堆栈的部署。
- 您可以在 Amazon CloudFormation 控制台的【状态】列中查看堆栈的状态。您应该会在大约 15 分钟后看到 CREATE_COMPLETE 状态。
第二步 修改允许与拒绝 IP 集 (可选)
部署此解决方案的 Amazon CloudFormation 堆栈后,您可以手动修改允许和拒绝的 IP 列表, 以便根据需要添加或删除 IP 地址。
- 打开 Amazon WAF 控制台,然后在左侧导航窗格中选择 IP 地址。
- 选择白名单集并添加来自可信来源的 IP 地址。
- 选择黑名单集来添加添加要阻止的 IP 地址。
第三步 在您的 Web 应用程序中嵌入蜜罐链接 (可选)
如果您在步骤 1 中选择启用扫描仪和探测程序防护功能,Amazon CloudFormation 模板会为创建一个几乎不常被访问的终端节点作为蜜罐,用于检测和转移来自内容抓取工具和恶意机器人的入站请求。正常用户不会尝试访问此终端节点。但是,内容抓取程序和恶意机器人(例如扫描安全漏洞和抓取电子邮件地址的恶意软件)可能会尝试访问蜜罐终端节点。在这种情况下, Access Handler Amazon Lambda 函数将检查请求以提取其源,然后更新关联的 Amazon WAF 规则以阻止来自该 IP 地址的后续请求。
您需要将蜜罐链接嵌入在可能被请求的页面中。
- 打开 Amazon CloudFormation 控制台,选择您在步骤 1 中构建的堆栈,然后选择【输出】选项卡。
- 从 BadbotHoneypotEndpoint 密钥中复制终端节点 URL。
- 在您的网页内容中嵌入此终端节点链接。使用您在步骤 2 中复制的完整 URL。向正常用户隐藏此链接。
第四步 将 Web ACL 与您的 Web 应用程序进行关联
使用您在步骤 1 中生成的资源更新您的应用程序负载均衡器,以激活 Amazon WAF 和日志记录。
- 打开 Amazon WAF 控制台,然后选择要使用的 Web ACL。
- 在【关联Amazon资源】选项卡上,选择添加资源。
- 在【资源类型】下,选择应用程序负载均衡器。
- 从列表中选择资源,然后选择【添加】以保存更改。
第五步 配置访问日志记录
配置您的应用程序负载均衡器,来将 Web 访问日志发送到相应的 Amazon S3 存储桶,以便这些数据可用于日志分析器 Amazon Lambda 函数。
- 打开亚马逊云科技管理控制台。
- 在导航窗格中,选择负载均衡器。
- 选择您的 Web 应用程序使用的应用程序负载均衡器。
- 在【描述】选项卡上,选择编辑属性。
- 选择【启用访问日志】。
- 对于 S3 位置,输入要用于存储 Web 访问日志(在步骤 1 中定义)的 Amazon S3 存储桶的名称。
- 将日志前缀设置为 AWSLogs/。如果您输入 AWSLogs 作为前缀,但收到一条消息,指出前缀不能以 “AWSLogs” 开头,请删除前缀。应用程序负载均衡器将使用 AWSLogs 作为默认前缀。
- 选择【保存】。
总结
- 使用Amazon WAF安全自动化解决方案减轻安全运维负担,自动配置,自动更新。
- 全面支持多种功能:SQL注入,XSS攻击,HTTP洪泛,扫描程序和探测器,IP声誉列表,爬虫机器人等,可自由开关。