Amazon WAF Security 部署实践

背景

安全永远是最重要的话题。 在某企业中,Amazon WAF 服务允许客户创建规则过滤 Web 流量,从而阻止尝试利用 Web 应用程序漏洞的攻击。Web 攻击的规模和类型也不断升级,对 WAF 规则的复杂性、更新的及时性提出了更高的要求,也给安全团队带来了大量的人工工作。为了减轻安全团队的负担,用自动化、数据驱动的方式轻松抵御常见的 Web 攻击并及时升级安全策略,因此推出了 Amazon WAF Security Automations 解决方案。

客户收益

Amazon WAF 是一款 Web 应用程序防火墙,可帮助保护您的 Web 应用程序或 API 免受可能影响可用性、危及安全性或消耗过多资源的常见网络攻击和机器人攻击。Amazon WAF 使您能够创建安全规则以控制机器人流量并阻止常见的攻击模式(例如 SQL 注入或跨站点脚本),从而控制流量到达应用程序的方式。您还可以自定义规则。您可以快速开始使用用于 Amazon WAF 的托管规则。用于 Amazon WAF 的托管规则解决了 OWASP 十大安全风险和自动化机器人等问题,这些问题会消耗过多资源、导致指标异常或者造成停机。随着新问题的出现,这些规则会定期更新。为用户提供安全运营服务,提升了产品竞争力,同时也带来更多的商业机会。

为什么选择光环有云

光环有云为AWS APN Premier Consulting Partner-核心级能力伙伴,致力为广大企业客户打造领先的、适合中国市场需求的企业级解决方案和技术服务。并以专业的培训、咨询服务、安全加固和整体的DevOps体系,帮助客户无缝地构建和使用基于AWS技术的云服务产品和混合云资源,加速客户向云端迁移,实现企业的数字化转型。并且我们所有的安全解决方案都以托管服务的形式提供,可以进行快速部署,无需更改任何硬件或软件。

解决方案描述

本解决方案用于自动部署一系列 Amazon WAF 规则,以过滤常见的基于 Web 的攻击。从预先配置的保护性功能中进行选择,这些功能用于定义 Amazon WAF Web 访问控制列表中包含的规则。部署完成后,Amazon WAF 可通过检查 Web 请求来保护 Application Load Balancers。使用 Amazon WAF 创建自定义的、应用程序特定的规则,以阻止各种攻击模式,确保应用程序可用性、资源安全性,并防止过度消耗资源。

使用场景

Amazon WAF Security Automations 适用于一切需要使用 WAF 来为 Application

Load Balancer 过滤常见 Web 攻击的业务场景,尤其是需要自动部署常见的安全策略,从而提高安全防护和节约时间时。

系统架构

组件

此方案部署一组 WAF Web ACL 规则,包含 IP 规则、XSS 规则、SQL 注入规则等,来过滤基于 Web 的攻击。解决方案还会部署多个 Lambda 函数,或在分析

S3 中存储的访问日志后触发,或通过 CloudWatch 周期性触发,来及时更新这些

Web ACL 规则。除此之外,启用 Bat Bot 功能,解决方案还会部署一个 API

Gateway 和一个 Lambda 函数,作为蜜罐引诱并转移机器人试图进行的攻击。

功能

Amazon 托管规则 (A):此 Amazon 托管核心规则组合提供保护,避免各种常见的应用程序漏洞被利用或出现其他不必要的流量。

手动 IP 列表 C:此组件可创建两个特定的 Amazon WAF 规则,从而使您可以手动插入您想阻止或允许的 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) :此组件可自动设置蜜罐,它是一种安全机制,旨在引诱并转移试图进行的攻击。

部署说明

部署前提

  • 保证您已经拥有激活的亚马逊云科技中国区账户,如果没有,通过进行注册。

  • 为您账户中计划保护的 ALB 启用日志功能,并记录日志的 S3 存储桶名称。

打开管理控制台,选择 EC2 服务,跳转到 EC2 服务页面。点击左边栏的【负载均衡器】标签,在其中选中您要保护的应用程序负载均衡器,点击【操作】,【编辑属性】,启用【访问日志】并设置 S3 存储桶位置。

快速部署

启动 CloudFormation 堆栈

打开管理控制台,可以使用控制台右上方的区域选择链接,以在其他区域部署该方案。然后单击下面的按钮以启动 CloudFormation 模板。

指定堆栈详细信息

点击【下一步】,进入参数设置页面,如下图所示。

根据需求调整以下参数。

参数类型 参数 释义
Protection List Activate Managed Rules Protection 从下拉框选择,默认为 no 是否启用托管规则功能,yes 为启用,no 为不启用
Protection List Activate SQL Injection Protection 从下拉框选择,默认为 yes 是否启用 SQL 注入功能,yes 为启用,no 为不启用
Protection List Activate Cross-site Scripting Protection 从下拉框选择,默认为 yes 是否启用 XSS 功能,yes 为启用,no 为不启用
Protection List Activate HTTP Flood Protection 从下拉框选择,默认为 yes – WAF rate based rule 是否启用 HTTP 泛洪攻击功能, yes 为启用,no 为不启用,不同选项代表不同更新策略
Protection List Activate Scanner & Probe Protection 从下拉框选择,默认为 yes – Lambda log parser 是否启用扫描程序和探测器功能,yes 为启用,no 为不启用,不同选项代表不同更新策略
Protection List Activate Reputation List Protection 从下拉框选择,默认为 yes 是否启用 IP 声誉列表功能,yes 为启用,no 为不启用
Protection List Activate Bad Bot Protection 从下拉框选择,默认为 yes 是否启用不良 Bot 功能,yes 为启用,no 为不启用
Settings Endpoint Type 从下拉框选择,默认为 ALB 保护的资源类型,目前只支持 ALB
Settings Application Access Log Bucket Name 输入 String 类型值,S3 存储桶名称,无默认值 存储 ALB 日志的 S3 存储桶名称,当启用了扫描程序和探测器功能时才需要输入此项
Advanced Settings Error Threshold 输入整数值,默认为 50 每分钟每个 IP 允许的最大攻击请求数,当启用了扫描程序和探测器功能时才需要输入此项
Advanced Settings Request Threshold 输入整数值,默认为 100 每 5 分钟每个 IP 允许的最大请求数,当启用了 HTTP 泛洪攻击功能时才需要输入此项
Advanced Settings WAF Block Period 输入整数值,默认为 240 针对识别出的恶意 IP 的 block 周期,单位为分钟,当启用了扫描程序和探测器功能或 HTTP 泛洪攻击功能时才需要输入此项
Advanced Settings Keep Data in Original s3 location 从下拉框选择,默认为 No 选择是否要将原始的日志文件保留一份在原始 S3 存储桶中,当启用了使用 Athena 日志解析器的扫描程序和探测器功能时才需要设置此项

调整好参数后,点击 【下一步】。

配置堆栈选项

审核堆栈

保持默认值,点击【下一步】。

保持默认值,请勾选 “ 我确认,CloudFormation 可能创建具有自定义名称的 IAM 资源。”的单选框,点击 【创建堆栈】。

等待大概 20 分钟,直至堆栈状态为 Complete,创建完成。

至此,解决方案部署完成, WAF 服务中查看自动更新的 Web ACL 规则,它们已经开始过滤流量,应对各种基于 Web 的攻击。

关联要保护的资源

打开管理控制台,选择 Amazon WAF 服务,跳转到 WAF 服务页面。然后在左边栏选择【Web ACLs】标签,此时自动化方案已经

创建了一组名为 WAFSecurityAutomations 的 Web ACL 规则。(可以通过中上方的按钮调整区域)

点击这个 ACL 规则,进入详细信息页面;点击【Associated Amazon Web Services resources】标签,设置资源关联。

点击右侧的【Add Amazon Web Services resources】按钮,选择其中要保护

的资源(如某一个负载均衡器),点击右下方的添加按钮,完成关联。

此时关联的这个资源受到方案创建的 WAF Web ACL 规则的保护,且方案会

根据日志进行分析,自动更新这些 Web ACL 规则,使它们能够应对实时的安全攻击。

此时在旁边的【Rules】标签页中浏览方案自动创建的所有 Web ACL 规则,并查看每个规则的具体功能。

(可选)手动配置允许或拒绝 IP 列表

如果需要在默认规则之外将一些特定的 IP 加入允许或拒绝列表,例如将已知的攻击

来源 IP 加入黑名单,或将内部管理 IP 加入白名单等,通过以下步骤进行操作。

打开 WAF 服务页面,点击左边栏的【IP sets】标签,进入 IP 设置功能。在其中寻找计划修改的 IP set 名称,进入添加或修改。

例如想为所有功能添加 IPV4 地址段 x.x.x.x/24 进白名单,就打开WAFSecurityAutomationsWhitelistSetIPV4 这个 IP set,点击【Add IP address】按钮,将 x.x.x.x/24 这个地址段添加进去,点击【Add】按钮完成。

之后这个 IP 地址段的 IP 就进入白名单,不会触发 WAF 规则的阻挡。对其他功能的允许/拒绝列表也是类似的设置方式。