教程:快速设置Amazon WAF针对常见攻击的经典保护 - Amazon WAF、Amazon Firewall Manager 和 Amazon Shield Advanced
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

教程:快速设置Amazon WAF针对常见攻击的经典保护

注意

这是Amazon WAFClassic文档中)。仅当 2019 年 11 月之前在 Amazon WAF 中创建了 Amazon WAF 资源(例如规则和 Web ACL),但尚未将这些资源迁移到最新版本时,才应使用此版本。要迁移您的资源,请参阅迁移您的Amazon WAFClassic 资源Amazon WAF

对于最新版本的Amazon WAF,请参阅Amazon WAF.

本教程介绍了如何使用Amazon CloudFormation快速配置Amazon WAF经典可防范下列常见攻击:

  • 跨站点脚本攻击— 攻击者有时会将脚本插入到 Web 请求中,企图利用 Web 应用程序中的漏洞。跨站点脚本匹配条件识别 Web 请求中您希望的部分,如 URI 或查询字符串。Amazon WAF经典的检查可能的恶意脚本。

  • SQL 注入攻击— 攻击者有时会将恶意 SQL 代码插入 Web 请求,企图从您的数据库中提取数据。SQL 注入匹配条件识别 Web 请求中您希望的部分Amazon WAF经典的检查可能的恶意 SQL 代码。

  • 来自已知不良 IP 地址的攻击— 您可以使用 IP 匹配条件根据请求所源自的 IP 地址来允许、阻止 Web 请求或对其计数。一个 IP 匹配条件最多可列出您指定的 1000 个 IP 地址或 IP 地址范围。

注意

本教程假定您拥有可用于为 Web 应用程序提供内容的 CloudFront 分配。如果您没有 CloudFront 分发,请参阅使用 CloudFront 控制台创建或更新 Web 分配中的Amazon CloudFront 开发人员指南.

解决方案概述

Amazon CloudFormation使用模板来设置以下Amazon WAF经典条件、规则和 Web ACL。

Conditions

Amazon CloudFormation 会创建以下条件。

IP 匹配条件

筛选来自已知不良 IP 地址的请求。该条件使您很容易将 IP 添加到列表中,以阻止其访问您的网站。如果您收到来自一个或多个 IP 地址的大量不良请求,则可能要执行此操作。如果要根据请求来自的 IP 地址允许、阻止请求或对请求计数,请参阅本教程后面的第 3 步:(可选) 向 IP 匹配条件中添加 IP 地址

条件的名称是 prefixManualBlockSet,其中 prefix 是在创建 Amazon CloudFormation 堆栈时为 Web ACL 指定的名称。

大小约束条件

筛选正文长度超过 8192 字节的请求。Amazon WAFClassic 仅对您在筛选器中指定的请求部分的前 8192 字节进行计算。如果有效的请求正文从不会超过 8192 字节,则可使用大小约束条件来捕获可能漏掉的恶意请求。

在本教程中,Amazon CloudFormation配置Amazon WAF经典只对正文长度超过 8192 字节的请求计数,而不阻止。如果请求中的正文从不会超过该长度,您可以将配置更改为阻止正文超过该长度的请求。有关如何查看超过 8192 字节的请求计数以及如何更改 Web ACL 以阻止正文超过 8192 字节的请求的信息,请参阅第 4 步:(可选)更新 Web ACL 以阻止较大的正文

条件的名称是 prefixLargeBodyMatch,其中 prefix 是在创建 Amazon CloudFormation 堆栈时为 Web ACL 指定的名称。

SQL 注入条件

筛选可能包含恶意 SQL 代码的请求。该条件包括用于对请求的以下部分进行计算的筛选器:

  • 查询字符串 (URL 解码转换)

  • URI (URL 解码转换)

  • 正文 (URL 解码转换)

  • 正文 (HTML 解码转换)

条件的名称是 prefixSqliMatch,其中 prefix 是在创建 Amazon CloudFormation 堆栈时为 Web ACL 指定的名称。

跨站点脚本条件

筛选可能包含恶意脚本的请求。该条件包括用于对请求的以下部分进行计算的筛选器:

  • 查询字符串 (URL 解码转换)

  • URI (URL 解码转换)

  • 正文 (URL 解码转换)

  • 正文 (HTML 解码转换)

条件的名称是 prefixXssMatch,其中 prefix 是在创建 Amazon CloudFormation 堆栈时为 Web ACL 指定的名称。

Rules

当您创建 Amazon CloudFormation 堆栈时,Amazon CloudFormation 将创建以下规则并向每个规则中添加相应条件:

prefixManualIPBlockRule

Amazon CloudFormation 将 prefixManualBlockSet 条件添加到此规则中。

prefixSizeMatchRule

Amazon CloudFormation 将 prefixLargeBodyMatch 条件添加到此规则中。

prefixSqliRule

Amazon CloudFormation 将 prefixSqliMatch 条件添加到此规则中。

prefixXssRule

Amazon CloudFormation 将 prefixXssMatch 条件添加到此规则中。

Web ACL

Amazon CloudFormation 创建 Web ACL,它具有您在创建 Amazon CloudFormation 堆栈时指定的名称。Web ACL 包含具有指定设置的以下规则:

prefixManualIPBlockRule

默认情况下,此规则中的条件不包含任何 IP 地址。如果要根据请求来自的 IP 地址允许、阻止请求或对请求计数,请参阅本教程后面的第 3 步:(可选) 向 IP 匹配条件中添加 IP 地址

prefixSizeMatchRule

默认情况下,Amazon WAF经典对正文长度超过 8192 字节的请求计数。

prefixSqliRule

Amazon WAF经典型根据此规则中的设置来阻止请求。

prefixXssRule

Amazon WAF经典型根据此规则中的设置来阻止请求。

Requirements

本教程假定您拥有可用于为 Web 应用程序提供内容的 CloudFront 分配。如果您没有 CloudFront 分配,请参阅。使用 CloudFront 控制台创建或更新 Web 分配中的Amazon CloudFront 开发人员指南. 本教程还使用 Amazon CloudFormation 简化配置过程。有关更多信息,请参阅 Amazon CloudFormation 用户指南

估计时间

如果您已有 CloudFront 分配,完成本教程的预计时间为 15 分钟;如果需要创建 CloudFront 分配,则预计时间为 30 分钟。

Costs

您在本教程期间创建的资源具有关联的成本。完成本教程后,您可以删除资源以停止产生费用。有关更多信息,请参阅 。Amazon WAF经典定价Amazon CloudFront 定价.

第 1 步:创建Amazon CloudFormation堆栈,用于设置Amazon WAF针对常见攻击的经典保护

在以下过程中,您可以使用Amazon CloudFormation模板创建一个堆栈,用于设置Amazon WAF针对常见攻击的经典保护。

重要

当您创建用于部署此解决方案的 Amazon CloudFormation 堆栈时,即开始为各种服务引发费用。费用将持续累积,直至您删除 Amazon CloudFormation 堆栈。有关更多信息,请参阅第 5 步:(可选)删除您的Amazon CloudFormation堆栈

创建 Amazon CloudFormation 堆栈以阻止提交不良请求的 IP 地址

  1. 要开始创建 Amazon CloudFormation 堆栈,请选择要在其中创建 Amazon 资源的区域对应的链接:

  2. 如果您尚未登录 Amazon Web Services Management Console,请在出现提示时登录。

  3. 在存储库的指定模板页面上,选择Amazon S3 URL. 对于模板 URL,请键入 https://s3.amazonaws.com/cloudformation-examples/community/common-attacks.json

  4. 选择 Next (下一步)

  5. Specify stack details (指定堆栈详细信息) 页面上,指定下列值:

    堆栈名称

    您可以使用默认名称 (CommonAttackProtection),也可以更改该名称。堆栈名称不得包含空格,必须是您的Amazon Web Services 账户.

    名称

    为 Amazon CloudFormation 将创建的 Web ACL 指定名称。您指定的名称也用作 Amazon CloudFormation 将创建的条件和规则的前缀,以便于您找到所有相关对象。

  6. 选择 Next (下一步)

  7. (可选)在配置堆栈选项页面上,输入标签和高级设置,或将这些框保留为空。

  8. 选择 Next (下一步)

  9. 在存储库的审核页上,查看配置,然后选择创建堆栈.

    在您选择创建堆栈、Amazon CloudFormation创建Amazon WAF标识的经典资源解决方案概述.

第 2 步:将 Web ACL 与 CloudFront 分配

晚于Amazon CloudFormation创建堆栈,您必须关联您的 CloudFront 分配以激活Amazon WAFClassic。

注意

您可以将 Web ACL 与任何所需数量的分配相关联,也可以仅将一个 Web ACL 与给定分配相关联。

将 Web ACL 与 CloudFront 分配相关联

  1. 登录到Amazon Web Services Management Console,然后打开Amazon WAF控制台https://console.aws.amazon.com/wafv2/.

  2. 选择转到Amazon WAFClassic.

  3. 在导航窗格中,选择 Web ACL

  4. 选择要与 CloudFront 分配关联的 Web ACL。

  5. 在存储库的Rule选项卡,在Amazon使用此 Web ACL 的资源中,选择添加关联.

  6. 系统提示时,请使用资源列表以选择要与此 Web ACL 关联的分配。

  7. 选择添加

  8. 要将此 Web ACL 与其他 CloudFront 分配相关联,请重复步骤 4 到步骤 6。

第 3 步:(可选) 向 IP 匹配条件中添加 IP 地址

在您创建 Amazon CloudFormation 堆栈时,Amazon CloudFormation 为您创建了 IP 匹配条件,将其添加到规则,再将该规则添加到 Web ACL,并将 Web ACL 配置为根据 IP 地址阻止请求。但 IP 匹配条件不包含任何 IP 地址。如果要根据 IP 地址阻止请求,请执行以下过程。

编辑 Amazon CloudFormation 参数值

  1. 打开Amazon WAF控制台https://console.aws.amazon.com/wafv2/.

  2. 在导航窗格中,选择 IP addresses

  3. IP match conditions 窗格中,选择要编辑的 IP 匹配条件。

  4. 添加 IP 地址范围:

    1. 在右窗格中,选择 Add IP address or range

    2. 采用 CIDR 表示法键入 IP 地址或范围。以下是两个示例:

      • 要指定 IP 地址 192.0.2.44,请键入 192.0.2.44/32

      • 要指定从 192.0.2.0 到 192.0.2.255 的 IP 地址范围,请键入 192.0.2.0/24

      Amazon WAF经典支持 IPv4 地址范围:/8 和任何介于 /16 到 /32 之间的范围。Amazon WAF传统版支持 IPv6 地址范围:/24、/32、/48、/56、/64 和 /128。有关 CIDR 表示法的更多信息,请参阅维基百科条目无类域间路由

      注意

      Amazon WAF传统版同时支持 IPv4 和 IPv6 IP 地址。

    3. 要添加更多 IP 地址,请选择 Add another IP address,然后键入值。

    4. 选择添加

第 4 步:(可选)更新 Web ACL 以阻止较大的正文

在您创建 Amazon CloudFormation 堆栈时,Amazon CloudFormation 创建了一个大小约束条件,用于筛选请求正文长度大于 8192 字节的请求。此外,它还将该条件添加到规则中,并将规则添加到 Web ACL。在本示例中,Amazon CloudFormation 将 Web ACL 配置为对请求计数,但不阻止请求。当您要确保不会意外阻止有效请求时,此配置很有用。

如果要阻止长度超过 8192 字节的请求,请执行以下过程。

为 Web ACL 中的规则更改操作

  1. 打开Amazon WAF控制台https://console.aws.amazon.com/wafv2/.

  2. 在导航窗格中,选择 Web ACL

  3. 选择要编辑的 Web ACL。

  4. 在右窗格中,选择 Rules 选项卡。

  5. 选择 Edit Web ACL

  6. 要更改prefixLargeBodyMatchRule下,选择首选项。 (prefix是您为 Web ACL 的名称指定的值。)

  7. 选择保存更改

第 5 步:(可选)删除您的Amazon CloudFormation堆栈

如果您要停止针对常见攻击的保护(如解决方案概述中所述),请删除您在第 1 步:创建Amazon CloudFormation堆栈,用于设置Amazon WAF针对常见攻击的经典保护中创建的 Amazon CloudFormation 堆栈。这将删除Amazon WAF经典资源Amazon CloudFormation创建并停止Amazon这些资源的费用。

删除 Amazon CloudFormation 堆栈

  1. 登录到Amazon Web Services Management Console,然后打开Amazon CloudFormation控制台https://console.aws.amazon.com/cloudformation.

  2. 选中堆栈对应的复选框。默认名称为 CommonAttackProtection

  3. 选择 Delete Stack

  4. 选择 Yes, Delete 以确认。

  5. 要跟踪堆栈删除的进度,请选中堆栈对应的复选框,然后在底部窗格中选择 Events 选项卡。

相关资源

适用于Amazon WAF经典样本,包括 Lambda 函数,Amazon CloudFormation模板和开发工具包用法示例,请转到以下地址的 GitHub:https://github.com/awslabs/aws-waf-sample.