开始使用Amazon WAFClassic - Amazon WAF、Amazon Firewall Manager 和 Amazon Shield Advanced
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

开始使用Amazon WAFClassic

注意

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

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

本教程介绍如何使用Amazon WAFClassic 执行以下任务:

  • 设置Amazon WAFClassic。

  • 使用Amazon WAF经典控制台,并指定您希望用于筛选 Web 请求的条件。例如,您可以指定请求的来源 IP 地址以及请求中仅由攻击者使用的值。

  • 向规则中添加条件。规则使您可以确定要阻止或允许的目标 Web 请求。Web 请求必须与规则中的所有条件匹配。Amazon WAFClassic 会基于指定的条件阻止或允许请求。

  • 向 Web ACL 中添加规则。可以在其中指定基于添加到每个规则的条件阻止还是允许 Web 请求。

  • 指定默认操作 (阻止或允许)。这就是这样的行动Amazon WAFClassic 会在 Web 请求不与任何规则匹配时执行。

  • 选择 Amazon CloudFront 你想要的分发Amazon WAF经典来检查其 Web 请求。本教程只介绍 CloudFront 的操作步骤,但应用程 Application Load Balancer 和 Amazon API Gateway 的操作步骤基本相同。Amazon WAF经典适用于 CloudFront 适用于所有人Amazon Web Services 区域.Amazon WAF 在列出的区域中提供了与 API Gateway 或应用 Application Load Balancer 配合使用的经典版Amazon服务终端节点.

注意

对于在本教程中创建的资源,Amazon 向您收取的费用通常少于每日 0.25 美元。当您完成本教程时,建议您删除资源以避免产生不必要的费用。

第 1 步:设置Amazon WAFClassic

如果你已经注册了Amazon Web Services 账户并按照中所述创建了 IAM 用户设置Amazon WAFClassic接下来,请转到第 2 步:创建 Web ACL.

如果未执行这些操作,请转到设置Amazon WAFClassic并至少执行前两个步骤。(您可以暂时跳过下载工具,因为本入门主题侧重于使用Amazon WAF经典控制台。)

第 2 步:创建 Web ACL

这些区域有:Amazon WAF经典控制台将指导您完成配置过程。Amazon WAF基于您指定的条件 (如请求来源的 IP 地址或请求中的值) 阻止或允许 Web 请求。在此步骤中,您将创建一个 Web ACL。

创建 Web ACL

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

    如果您看到切换到Amazon WAFClassic在导航窗格中,选择它。

  2. 如果这是您首次使用Amazon WAF选择 Classic,转到Amazon WAFClassic接下来,选择配置 Web ACL.

    如果你用过Amazon WAF之前经典之前,选择Web ACL在导航窗格中选择,然后选择创建 Web ACL.

  3. Name web ACL (命名 web ACL) 页面上,对于 Web ACL name (Web ACL 名称),输入一个名称。

    注意

    Web ACL 在创建之后无法更改名称。

  4. 适用于CloudWatch 指标名称接下来,输入一个名称。该名称只能包含字母数字字符 (A-Z、a-z、0-9),且不能包含空格。

    注意

    Web ACL 在创建之后无法更改名称。

  5. 对于 Region(亚马逊云科技区域),选择一个区域。如果您将此 Web ACL 与 CloudFront 分发,选择全球(CloudFront).

  6. 对于 Amazon resource to associate,选择要与您的 Web ACL 关联的资源,然后选择 Next

第 3 步:创建 IP 匹配条件

IP 匹配条件指定请求的来源 IP 地址或 IP 地址范围。在此步骤中,您将创建一个 IP 匹配条件。在后面的步骤中,您会指定是允许还是阻止源自指定 IP 地址的请求。

注意

有关 IP 匹配条件的更多信息,请参阅使用 IP 匹配条件

创建 IP 匹配条件

  1. Create conditions (创建条件) 页面上,对于 IP match conditions (IP 匹配条件),选择 Create condition (创建条件)

  2. Create IP match condition (创建 IP 匹配条件) 对话框中,对于 Name (名称),输入一个名称。该名称只能包含字母数字字符(A-Z、a-z、0-9)或以下特殊字符:_-!"#`+*},./。

  3. 对于 Address (地址),输入 192.0.2.0/24。此 IP 地址范围 (采用 CIDR 表示法指定) 包含从 192.0.2.0 到 192.0.2.255 的 IP 地址。(192.0.2.0/24 IP 地址范围保留供示例使用,因此不会有 Web 请求源自这些 IP 地址。)

    Amazon WAFClassic 支持 IPv4 地址范围:/8 和任何介于 /16 到 /32 之间的范围。Amazon WAF经典版支持 IPv6 地址范围:/24、/32、/48、/56、/64 和 /128。(要指定一个 IP 地址,如 192.0.2.44,请输入 192.0.2.44/32。) 不支持其他范围。

    有关 CIDR 表示法的更多信息,请参阅维基百科条目 Classless Inter-Domain Routing

  4. 选择 Create(创建)。

第 4 步:创建地理匹配条件

地理匹配条件指定请求源自的一个或多个国家/地区。在此步骤中,您将创建一个地理匹配条件。在后面的步骤中,您会指定是允许还是阻止源自指定国家/地区的请求。

注意

有关地理匹配条件的更多信息,请参阅使用地理匹配条件

创建地理匹配条件

  1. Create conditions 页面上,对于 Geo match conditions,选择 Create condition

  2. Create geo match condition (创建地理匹配条件) 对话框中,对于 Name (名称),输入一个名称。该名称只能包含字母数字字符(A-Z、a-z、0-9)或以下特殊字符:_-!"#`+*},./。

  3. 选择位置类型和国家/地区。目前,Location type (位置类型) 只能是 Country (国家/地区)

  4. 选择 Add location

  5. 选择 Create(创建)。

第 5 步:创建字符串匹配条件

字符串匹配条件标识你想要的字符串Amazon WAF在请求中搜索的 Classic (Classic),如标头或查询字符串中的指定值。字符串通常由可打印 ASCII 字符组成,但您可以指定从十六进制 0x00 到 0xFF (十进制 0 到 255) 的任何字符。在此步骤中,您将创建一个字符串匹配条件。在后面的步骤中,您会指定是允许还是阻止包含指定字符串的请求。

注意

有关字符串匹配条件的更多信息,请参阅使用字符串匹配条件

创建字符串匹配条件

  1. Create conditions (创建条件) 页面上,对于 String and regex match conditions (字符串和正则表达式匹配条件),选择 Create condition (创建条件)

  2. Create string match condition (创建字符串匹配条件) 对话框中,输入下列值:

    名称

    输入名称。该名称只能包含字母数字字符(A-Z、a-z、0-9)或以下特殊字符:_-!"#`+*},./。

    类型

    选择 String match

    Part of the request to filter on

    选择 Web 请求中您希望的部分。Amazon WAF经典来检查指定字符串。

    对于此示例,选择 Header

    注意

    如果选择Body对于的价值Part of the request to filter on、Amazon WAF经典版只检查前 8192 个字节 (8 KB),因为 CloudFront 只转发前 8192 个字节进行检查。要允许或阻止正文长度超过 8192 个字节的请求,可以创建大小约束条件。(Amazon WAFClassic 会从请求标头获取正文的长度。) 有关更多信息,请参阅 使用大小约束条件

    Header (在“Part of the request to filter on”为“Header”时是必需的)

    因为你选择了标头为了Part of the request to filter on,您必须指定希望使用哪个标头。Amazon WAF经典检查。输入 User-Agent (用户代理)。(此值不区分大小写。)

    Match type

    选择指定字符串必须出现在 User-Agent 标头中的何处,例如,字符串开头、末尾还是其他什么地方。

    对于此示例,选择Exactly matches,这表明Amazon WAFClassic 会在 Web 请求中检查与指定值完全相同的标头值。

    Transformation

    为了绕过Amazon WAF经典,攻击者会在 Web 请求中使用不寻常的格式,例如通过添加空格或通过对部分或所有请求进行 URL 编码。转换会通过删除空格、通过对请求进行 URL 解码或是通过执行可消除攻击者常用的许多不寻常格式的其他操作,将 Web 请求转换为更标准的格式。

    您只能指定一个类型的文本转换。

    对于此示例,选择 None

    Value is base64 encoded

    当您在 Value to match (要匹配的值) 中输入的值已进行了 base64 编码时,选中此复选框。

    对于此示例,不要选中此复选框。

    Value to match

    指定所需的值Amazon WAF在中指示的 Web 请求部分中搜索的经典Part of the request to filter on.

    对于此示例,请输入BadBot.Amazon WAF 经典将检查User-Agent值的 Web 请求标头BadBot.

    Value to match 的最大长度是 50 个字符。如果您要指定 base64 编码值,您可以提供最多 50 个字符(编码前)。

  3. 如果您想Amazon WAF经典来检查 Web 请求中的多个值,如User-Agent包含的标题BadBot包含查询字符串,包含BadParameter,您有两个选项:

    • 如果您希望仅当 Web 请求同时包含两个值 (AND) 时才允许或阻止请求,则为每个值创建一个字符串匹配条件。

    • 如果您希望在 Web 请求包含任意一个值或同时包含两个值 (OR) 时允许或阻止请求,则将两个值添加到同一个字符串匹配条件。

    对于此示例,选择 Create

步骤 5A:创建正则表达式条件(可选)

正则表达式条件是一种字符串匹配条件,二者的相似之处在于它标识您希望的字符串。Amazon WAF在请求中搜索的 Classic (Classic),如标头或查询字符串中的指定值。主要区别在于您使用正则表达式 (regex) 来指定所需的字符串模式。Amazon WAF要搜索的 Classic。在此步骤中,您将创建一个正则表达式匹配条件。在后面的步骤中,您会指定是允许还是阻止包含指定字符串的请求。

注意

有关正则表达式匹配条件的更多信息,请参阅使用正则表达式匹配条件

创建正则表达式匹配条件

  1. Create conditions (创建条件) 页面上,对于 String match and regex conditions (字符串匹配和正则表达式条件),选择 Create condition (创建条件)

  2. Create string match condition (创建字符串匹配条件) 对话框中,输入下列值:

    名称

    输入名称。该名称只能包含字母数字字符(A-Z、a-z、0-9)或以下特殊字符:_-!"#`+*},./。

    类型

    选择 Regex match

    Part of the request to filter on

    选择 Web 请求中您希望的部分。Amazon WAF经典来检查指定字符串。

    对于此示例,选择 Body

    注意

    如果选择Body对于的价值Part of the request to filter on、Amazon WAF经典版只检查前 8192 个字节 (8 KB),因为 CloudFront 只转发前 8192 个字节进行检查。要允许或阻止正文长度超过 8192 个字节的请求,可以创建大小约束条件。(Amazon WAFClassic 会从请求标头获取正文的长度。) 有关更多信息,请参阅 使用大小约束条件

    Transformation

    为了绕过Amazon WAF经典,攻击者会在 Web 请求中使用不寻常的格式,例如通过添加空格或通过对部分或所有请求进行 URL 编码。转换会通过删除空格、通过对请求进行 URL 解码或是通过执行可消除攻击者常用的许多不寻常格式的其他操作,将 Web 请求转换为更标准的格式。

    您只能指定一个类型的文本转换。

    对于此示例,选择 None

    与请求匹配的正则表达式模式

    选择 Create regex pattern set

    新模式集名称

    输入名称,然后指定所需的正则表达式模式。Amazon WAF要搜索的 Classic。

    接下来,输入正则表达式请求 [a@] maAB [a@] dRequest.Amazon WAF 经典将检查User-Agent值的 Web 请求标头:

    • IamABadRequest

    • IamAB@dRequest

    • I@mABadRequest

    • I@mAB@dRequest

  3. 选择 Create pattern set and add filter

  4. 选择 Create(创建)。

第 6 步:创建 SQL 注入匹配条件

SQL 注入匹配条件标识 Web 请求中您希望的部分 (如标头或查询字符串)。Amazon WAF经典来检查恶意 SQL 代码。攻击者使用 SQL 查询从数据库中提取数据。在此步骤中,您将创建一个 SQL 注入匹配条件。在后面的步骤中,您会指定是允许还是阻止表现为包含恶意 SQL 代码的请求。

注意

有关字符串匹配条件的更多信息,请参阅使用 SQL 注入匹配条件

创建 SQL 注入匹配条件

  1. Create conditions 页面上,对于 SQL injection match conditions,选择 Create condition

  2. Create SQL injection match condition (创建 SQL 注入匹配条件) 对话框中,输入下列值:

    名称

    输入名称。

    Part of the request to filter on

    选择 Web 请求中您希望的部分。Amazon WAF经典来检查恶意 SQL 代码。

    对于此示例,选择 Query string

    注意

    如果选择Body对于的价值Part of the request to filter on、Amazon WAF经典版只检查前 8192 个字节 (8 KB),因为 CloudFront 只转发前 8192 个字节进行检查。要允许或阻止正文长度超过 8192 个字节的请求,可以创建大小约束条件。(Amazon WAFClassic 会从请求标头获取正文的长度。) 有关更多信息,请参阅 使用大小约束条件

    Transformation

    对于此示例,选择 URL decode

    攻击者会使用不寻常的格式 (如 URL 编码) 试图绕过。Amazon WAFClassic。这些区域有:URL decode选项可在之前消除 Web 请求中的一些这类格式。Amazon WAFClassic 会检查请求。

    您只能指定一个类型的文本转换。

  3. 选择 Create(创建)。

  4. 选择 Next(下一步)。

步骤 7:(可选) 创建其他条件

Amazon WAFClassic 还提供其他条件,包括:

  • 大小约束条件— 标识 Web 请求中您希望的部分 (如标头或查询字符串)。Amazon WAF经典来检查长度。有关更多信息,请参阅 使用大小约束条件

  • 跨站点脚本匹配条件— 标识 Web 请求中您希望的部分 (如标头或查询字符串)。Amazon WAF检查恶意脚本。有关更多信息,请参阅 使用跨站点脚本匹配条件

您可以选择现在创建这些条件,也可以跳到步骤 8:创建规则并添加条件

步骤 8:创建规则并添加条件

您可以创建规则以指定所需的条件。Amazon WAF在 Web 请求中搜索的经典。如果您将多个条件添加到一个规则,则 Web 请求必须与该规则中的所有条件匹配。Amazon WAF经典允许或阻止基于该规则的请求。

注意

有关规则的更多信息,请参阅使用规则

创建规则并添加条件

  1. Create rules 页面上,选择 Create rule

  2. Create rule (创建规则) 对话框中,键入下列值:

    名称

    输入名称。

    CloudWatch 指标名称

    输入的名称 CloudWatch 指标是Amazon WAFClassic 将创建并与规则关联。该名称只能包含字母数字字符 (A-Z、a-z、0-9),且不能包含空格。

    Rule type

    选择 Regular rule (常规规则)Rate-based rule (基于速率的规则)。基于速率的规则与常规规则基本相同,但还考虑到任何五分钟时段来自标识的 IP 地址的请求数。有关这些规则类型的更多信息,请参阅 怎么样Amazon WAF经典作品。对于此示例,请选择 Regular rule

    Rate limit

    对于基于速率的规则,请输入与规则条件匹配的 IP 地址在任何五分钟内允许的最大请求数。

  3. 对于要添加到规则的第一个条件,指定以下设置:

    • 选择是否想Amazon WAF经典:基于 Web 请求与条件中的设置匹配还是不匹配,允许或阻止请求。

      对于此示例,选择 does

    • 选择您要添加到规则的条件的类型:IP 匹配集条件、字符串匹配集条件或 SQL 注入匹配集条件。

      对于此示例,选择 originate from IP addresses in

    • 选择要添加到规则的条件。

      对于此示例,选择您在前面的任务中创建的 IP 匹配条件。

  4. 选择 Add condition (添加条件)

  5. 添加您之前创建的地理匹配条件。指定以下值:

    • When a request does

    • originate from a geographic location in

    • 选择您的地理匹配条件。

  6. 选择 Add another condition

  7. 添加您之前创建的字符串匹配条件。指定以下值:

    • When a request does

    • match at least one of the filters in the string match condition

    • 选择您的字符串匹配条件。

  8. 选择 Add condition (添加条件)

  9. 添加您之前创建的 SQL 注入匹配条件。指定以下值:

    • When a request does

    • match at least one of the filters in the SQL injection match condition

    • 选择您的 SQL 注入匹配条件。

  10. 选择 Add condition (添加条件)

  11. 添加您之前创建的大小约束条件。指定以下值:

    • When a request does

    • match at least one of the filters in the size constraint condition

    • 选择您的大小约束条件。

  12. 如果您创建了任何其他条件 (如正则表达式条件),以类似方式添加这些条件。

  13. 选择 Create(创建)。

  14. 对于 Default action,选择 Allow all requests that don't match any rules

  15. 选择 Review and create

步骤 9:将规则添加 Web ACL

向 Web ACL 中添加规则时,您可指定以下设置:

  • 你想要的动作Amazon WAFClassic 可以接受与规则中所有条件匹配的 Web 请求:允许、阻止或计数。

  • Web ACL 的默认操作。这是您想要的操作Amazon WAF经典的接受网络请求请勿匹配规则中的所有条件:允许或阻止请求。

Amazon WAFClassic 开始禁 CloudFront 匹配以下所有条件(以及您可能添加的任何其他条件)的 Web 请求:

  • User-Agent 标头的值是 BadBot

  • (如果您创建并添加了正则表达式条件) Body 的值是四个字符串中与模式 I[a@]mAB[a@]dRequest 匹配的任一个字符串

  • 请求源自 192.0.2.0-192.0.2.255 范围中的 IP 地址

  • 请求源自您在地理匹配条件中所选的国家/地区

  • 请求表现为在查询字符串中包含恶意 SQL 代码

Amazon WAF经典允许 CloudFront 以响应不满足所有这三个条件的任何请求。

步骤 10:清除 资源

现在您已成功完成了教程。为了防止您的账户累积额外Amazon WAF经典费用,你应清理Amazon WAF你创建的经典对象。或者,您可以更改配置以便与您确实要进行允许、阻止和计数的 Web 请求匹配。

注意

对于在本教程中创建的资源,Amazon 向您收取的费用通常少于每日 0.25 美元。完成后,建议您删除资源以防止产生不必要的费用。

删除对象Amazon WAF对于的经典收费

  1. 取消 Web ACL 与 CloudFront 分布:

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

      如果您看到切换到Amazon WAFClassic在导航窗格中,选择它。

    2. 选择要删除的 Web ACL 的名称。这将在右窗格中打开一个页面,其中显示 Web ACL 的详细信息。

    3. 在右窗格中,在Rule选项卡,转到Amazon使用此 Web ACL 的资源部分。对于 CloudFront 选择与 Web ACL 关联的分配,选择x中的类型column.

  2. 从规则中删除条件:

    1. 在导航窗格中,选择 Rules (规则)

    2. 选择在教程中创建的规则。

    3. 选择 Edit rule

    4. 选择每个条件标题右侧的 x

    5. 选择 Update(更新)。

  3. 从 Web ACL 中删除规则,然后删除 Web ACL:

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

    2. 选择在教程中创建的 Web ACL 的名称。这将在右窗格中打开一个页面,其中显示 Web ACL 的详细信息。

    3. Rules 选项卡上,选择 Edit web ACL

    4. 选择规则标题右侧的 x

    5. 选择 Actions,然后选择 Delete web ACL

  4. 删除规则:

    1. 在导航窗格中,选择 Rules (规则)

    2. 选择在教程中创建的规则。

    3. 请选择 Delete(删除)。

    4. Delete 对话框中,再次选择 Delete 以确认。

Amazon WAFClassic 不对条件收取费用,但如果您要完成清除,请执行以下过程以从条件中删除筛选条件并删除条件。

删除筛选条件和条件

  1. 删除 IP 匹配条件中的 IP 地址范围,然后删除 IP 匹配条件:

    1. 在的导航窗格中Amazon WAF经典控制台,选择IP 地址.

    2. 选择在教程中创建的 IP 匹配条件。

    3. 选中您添加的 IP 地址范围的复选框。

    4. 选择 Delete IP address or range

    5. IP match conditions 窗格中,选择 Delete

    6. Delete 对话框中,再次选择 Delete 以确认。

  2. 删除 SQL 注入匹配条件中的筛选条件,然后删除 SQL 注入匹配条件:

    1. 在导航窗格中,选择 SQL injection

    2. 选择在教程中创建的 SQL 注入匹配条件。

    3. 选中您添加的筛选条件的复选框。

    4. 选择 Delete filter

    5. SQL injection match conditions 窗格中,选择 Delete

    6. Delete 对话框中,再次选择 Delete 以确认。

  3. 删除字符串匹配条件中的筛选条件,然后删除字符串匹配条件:

    1. 在导航窗格中,选择 String and regex matching

    2. 选择在教程中创建的字符串匹配条件。

    3. 选中您添加的筛选条件的复选框。

    4. 选择 Delete filter

    5. String match conditions 窗格中,选择 Delete

    6. Delete 对话框中,再次选择 Delete 以确认。

  4. 如果您创建了一个,请删除正则表达式匹配条件中的筛选条件,然后删除正则表达式匹配条件:

    1. 在导航窗格中,选择 String and regex matching

    2. 选择在教程中创建的正则表达式匹配条件。

    3. 选中您添加的筛选条件的复选框。

    4. 选择 Delete filter

    5. Regex match conditions 窗格中,选择 Delete

    6. Delete 对话框中,再次选择 Delete 以确认。

  5. 删除大小约束条件中的筛选条件,然后删除大小约束条件:

    1. 在导航窗格中,选择 Size constraints

    2. 选择在教程中创建的大小约束条件。

    3. 选中您添加的筛选条件的复选框。

    4. 选择 Delete filter

    5. Size constraint conditions 窗格中,选择 Delete

    6. Delete 对话框中,再次选择 Delete 以确认。