本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
设置 AWS WAF 及其组件
本教程介绍如何使用 AWS WAF 执行以下任务:
设置 AWS WAF。
-
使用 AWS WAF 控制台中的向导创建 Web 访问控制列表 (Web ACL)。
-
选择希望 AWS WAF 检查其 Web 请求的 AWS 资源。本教程介绍 Amazon CloudFront 的步骤。Amazon API Gateway REST API、应用程序负载均衡器、AWS AppSync GraphQL API、Amazon Cognito 用户群体、AWS App Runner 服务或 AWS 已验证访问实例的过程基本相同。
-
添加要用于筛选 Web 请求的规则和规则组。例如,您可以指定请求的来源 IP 地址以及请求中仅由攻击者使用的值。对于每个规则,您可以指定如何处理匹配的 Web 请求。您可以采取阻止或计算等操作,也可以运行像验证码这样的机器人质询。您可以为在 Web ACL 中定义的每条规则以及您在规则组中定义的每条规则定义操作。
请为 Web ACL 指定默认操作(Block 或 Allow)。当 Web ACL 中的规则未明确允许或阻止请求时,AWS WAF 会对请求采取这项操作。
注意
对于在本教程中创建的资源,AWS 向您收取的费用通常少于每日 0.25 美元。当您完成本教程时,建议您删除资源以避免产生不必要的费用。
步骤 1:设置 AWS WAF
如果您尚未按照 设置您的账户以使用服务 中的常规设置步骤操作,请立即执行操作。
步骤 2:创建 Web ACL
AWS WAF 控制台会指导您完成一系列操作,以配置 AWS WAF 基于指定条件(如请求的来源 IP 地址或请求中的值)阻止或允许 Web 请求。在此步骤中,您将创建一个 Web ACL。有关 AWS WAF Web ACL 的更多信息,请参阅 在 AWS WAF 中使用 Web ACL。
创建 Web ACL
登录 AWS Management Console,然后打开 AWS WAF 控制台,网址为:https://console.aws.amazon.com/wafv2/
。 -
在 AWS WAF 主页上,选择创建 Web ACL。
-
对于 名称,输入要用于标识此 Web ACL 的名称。
注意
Web ACL 在创建之后无法更改名称。
-
(可选)对于 描述 - 可选,如果需要,请输入 Web ACL 的较长描述。
-
对于 CloudWatch 指标名称,更改默认名称(如果适用)。按照控制台上的指导进行有效字符操作。该名称不能包含为 AWS WAF 保留的特殊字符、空格或指标名称,包括“All”和“Default_Action”。
注意
创建 Web ACL 之后,无法更改 CloudWatch 指标名称。
-
对于 资源类型,请选择 CloudFront 分发。该 区域 会自动填充到 全球 (CloudFront,以便进行 CloudFront 分发。
-
(可选)对于关联 AWS 资源(可选),选择添加 AWS 资源。在对话框中,选择要关联的资源,然后选择添加。AWS WAF 返回到描述 Web ACL 和关联的 AWS 资源页面。
-
选择下一步。
步骤 3:添加字符串匹配规则
在此步骤中,您将使用字符串匹配语句创建规则,并指示如何处理匹配请求。字符串匹配规则语句标识您希望 AWS WAF 在请求中搜索的字符串。字符串通常由可打印 ASCII 字符组成,但您可以指定从十六进制 0x00 到 0xFF (十进制 0 到 255) 的任何字符。除了指定要搜索的字符串外,您还可以指定要搜索的 Web 请求组件,例如标头、查询字符串或请求正文。
此语句类型在 Web 请求组件上运行,需要以下请求组件设置:
请求组件 – Web 请求中要检查的部分,例如查询字符串或正文。
警告
如果要您检查请求组件正文、JSON 正文、标头 或 Cookie,请在 中的 Web 请求组件过大 AWS WAF 中阅读有关可检查的内容 AWS WAF 数量的限制。
有关请求组件的更多信息,请参阅 在 AWS WAF 中调整规则语句设置。
可选文本转换 – 在检查请求组件之前 AWS WAF 要对其执行的转换。例如,您可以将空格转换为小写或标准化空格。如果您指定多个转换,AWS WAF 将按列出的顺序处理它们。有关信息,请参阅在 AWS WAF 中使用文本转换。
有关 AWS WAF 规则的更多信息,请参阅 AWS WAF 规则。
创建字符串匹配规则语句
-
在 添加规则和规则组 页面上,选择 添加规则、添加我自己的规则和规则组、规则生成器,然后选择 规则可视化编辑器。
注意
控制台提供 规则可视化编辑器 和 规则 JSON 编辑器。JSON 编辑器使您可以轻松地在 Web ACL 之间复制配置,并且对于更复杂的规则集(如那些具有多个嵌套级别的规则集)是必需的。
此过程使用 规则可视化编辑器。
-
对于 名称,输入要用于标识此规则的名称。
-
对于 类型,选择 常规规则。
-
对于 如果请求,选择 与语句匹配。
其他选项适用于逻辑规则语句类型。您可以使用它们来组合或否定其他规则语句的结果。
-
在语句上,对于检查,打开下拉列表并选择希望 AWS WAF 在其中检查的 Web 请求组件。对于此示例,选择单个标头。
选择单个标头时,还可以指定希望 AWS WAF 检查的标头。输入
User-Agent
。此值不区分大小写。 -
对于 匹配类型,选择指定的字符串必须出现在
User-Agent
标头中的位置。在此示例中,选择 完全匹配字符串。这表示 AWS WAF 检查每个 Web 请求中的用户代理标头是否存在与您指定的字符串相同的字符串。
-
对于 要匹配的字符串,请指定希望 AWS WAF 搜索的字符串。要匹配的字符串 的最大长度是 200 个字符。如果您要指定 base64 编码值,您可以指定最多 200 个字符(编码前)。
在此示例中,输入 MyAgent。AWS WAF 会在 Web 请求中检查
User-Agent
标头,以获取值MyAgent
。 -
将 文本转换 保留设置为 无。
-
对于操作,选择您希望规则在与 Web 请求匹配时执行的操作。在此示例中,选择计数,其他选项保持不变。计数操作会为与规则匹配的 Web 请求创建指标,但不会影响请求是允许还是阻止。有关操作选择的更多信息,请参阅 在 AWS WAF 中使用规则操作 和 在 AWS WAF 中将 Web ACL 与规则和规则组配合使用。
-
选择 添加规则。
步骤 4:添加 AWS 托管规则的规则组
AWS 托管规则提供了一组托管规则组,其中大部分可以免费用于 AWS WAF 客户。有关规则组的更多信息,请参阅AWS WAF 规则组。我们将向此 Web ACL 添加 AWS 托管规则的规则组。
添加 AWS 托管规则的规则组
-
在 添加规则和规则组 页面上,选择 添加规则,然后选择 添加托管规则组。
-
在添加托管规则组页面上,展开 AWS 托管规则组。(您还将看到为 AWS Marketplace 卖家提供的列表。您可以订阅列表上的产品,然后按照适用于 AWS 托管规则的规则组的方式使用它们。)
-
对要添加的每个规则组执行以下操作:
-
在操作列中,打开添加到 Web ACL切换选项。
-
选择编辑,然后在规则组的规则列表中打开覆盖所有规则操作下拉列表并选择 Count。这会将规则组中所有规则的操作设置为仅计数。这样,您就可以在使用规则组中的所有规则之前,查看其中的任何规则其对 Web 请求的行为。
-
选择保存规则。
-
-
选择添加规则,然后选择 添加托管规则组。这样,您将返回到添加规则和规则组页面。
步骤 5:完成 Web ACL 配置
完成向 Web ACL 配置中添加规则和规则组后,通过管理 Web ACL 中规则的优先级并配置诸如指标、标记和日志记录之类的设置来结束。
完成 Web ACL 配置
-
在 添加规则和规则组 页面上,选择 下一步。
-
在 设置规则优先级页面上,您可以看到 Web ACL 中规则和规则组的处理顺序。AWS WAF 从列表顶部开始处理它们。您可以通过上下移动规则来更改处理顺序。要执行此操作,请在列表中选择一个,然后选择 上移 或 下移。有关规则优先级的更多信息,请参阅 在 Web ACL 中设置规则优先级。
-
选择下一步。
-
在配置指标页面上,对于 Amazon CloudWatch 指标,您可以查看规则和规则组的计划指标,并可以查看 Web 请求采样选项。有关查看采样请求的信息,请参阅 查看 Web 请求示例。有关 Amazon CloudWatch 指标的更多信息,请参阅 使用 Amazon CloudWatch 监控。
您可以在 AWS WAF 控制台 Web ACL 页面的流量概述选项卡下访问 Web 流量指标摘要。控制台控制面板提供 Web ACL 的 Amazon CloudWatch 指标的近实时摘要。有关更多信息,请参阅 Web ACL 流量概述控制面板。
-
选择下一步。
-
在 审核和创建 Web ACL 页面上,查看您的设置,然后选择 创建 Web ACL。
该向导将返回到 Web ACL 页面,其中列出了您的新 Web ACL。
步骤 6:清除资源
现在您已成功完成了教程。为了防止您的账户产生额外的 AWS WAF 费用,需要清除所创建的 AWS WAF 对象。或者,您可以更改配置以便与您确实要使用 AWS WAF 进行管理 Web 请求匹配。
注意
对于在本教程中创建的资源,AWS 向您收取的费用通常少于每日 0.25 美元。完成后,建议您删除资源以防止产生不必要的费用。
删除 AWS WAF 进行收费的对象
-
在 Web ACL 页面中,从列表中选择您的 Web ACL,然后选择 编辑。
-
在关联 AWS 资源选项卡上,对于每个关联的资源,选择资源名称旁边的单选按钮,然后选择取消关联。这将使 Web ACL 与您的 AWS 资源取消关联。
-
在以下每个屏幕中,选择 下一步,直到您返回到 Web ACL 页面。
在 Web ACL 页面中,从列表中选择您的 Web ACL,然后选择 删除。
规则和规则语句不存在于规则组和 Web ACL 定义之外。如果您删除某个 Web ACL,则会删除您在该 Web ACL 中定义的所有单独规则。从 Web ACL 中删除规则组时,您只需删除对它的引用即可。