使用大小约束条件 - AWS WAF、AWS Firewall Manager 和 AWS Shield Advanced

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

使用大小约束条件

注意

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

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

如果要基于请求指定部分的长度允许或阻止 Web 请求,请创建一个或多个大小约束条件。大小约束条件确定 Web 请求中您希望的部分。AWS WAF经典来看,你想要的字节数AWS WAF要查找的经典和运算符,如大于 (>) 或小于 (<)。例如,您可以使用大小约束条件来查找长度超过 100 个字节的查询字符串。在这个过程中的稍后阶段,在创建 Web ACL 时,需要指定是基于这些设置允许还是阻止请求。

请注意,如果你配置AWS WAFClassic (经典) 可检查请求正文,例如,通过在正文中搜索指定字符串,AWS WAFClassic 只检查前 8192 个字节 (8 KB)。如果 Web 请求的请求正文不会超过 8192 个字节,则可以创建一个大小约束条件并阻止请求正文大于 8192 个字节的请求。

创建大小约束条件

创建大小约束条件时,需要指定筛选条件以确定应对的 Web 请求部分。AWS WAF经典来评估长度。您可以将多个筛选条件添加到大小约束条件,也可以为每个筛选条件创建单独的条件。下面是每种配置影响的方式AWS WAF经典行为:

  • 每个大小约束条件的筛选条件— 将单独的大小约束条件添加到一个规则并将该规则添加到一个 Web ACL 时,Web 请求必须与所有条件匹配,AWS WAF这样,您可以根据条件允许或阻止任何请求。

    例如,假设您创建两个条件。一个条件与查询字符串大于 100 个字节的 Web 请求匹配。另一个条件与请求正文大于 1024 个字节的 Web 请求匹配。将这两个条件添加到同一个规则并将该规则添加到 Web ACL 时,AWS WAF只有在两个条件都为真时,经典才允许或阻止请求。

  • 每个大小约束条件有多个筛选条件数— 将包含多个筛选条件的大小约束条件添加到一个规则并将该规则添加到一个 Web ACL 时,Web 请求只需与大小约束条件中的一个筛选条件匹配,AWS WAFClassic 可根据该条件允许或阻止请求。

    假设您创建一个而不是两个条件,并且这一个条件包含与前面示例相同的两个筛选条件。AWS WAF如果查询字符串大于 100 个字节或请求正文大于 1024 个字节,则 Classic 会允许或阻止请求。

注意

将大小约束条件添加到规则时,您还可以将配置。AWS WAF经典允许或阻止网络请求不要匹配条件中的值。

创建大小约束条件

  1. 登录到AWS Management Console打开AWS WAF控制台https://console.aws.amazon.com/wafv2/.

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

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

  3. 选择 Create condition (创建条件)

  4. 指定适用的筛选条件设置。有关更多信息,请参阅 创建或编辑大小约束条件时指定的值

  5. 选择 Add another filter

  6. 如果要添加其他筛选条件,请重复步骤 4 和 5。

  7. 添加完筛选器后,选择 Create size constraint condition

创建或编辑大小约束条件时指定的值

创建或更新大小约束条件时,需要指定以下值:

名称

为大小约束条件输入名称。

该名称只能包含字母数字字字字字字字字符 (A-Z、0-9) 以及以下特殊字符:_-!” #`+*}, ./。 条件的名称在创建后不可更改。

Part of the request to filter on

选择应对每个 Web 请求的部分:AWS WAF经典来评估长度:

标头

指定的请求标头,例如 User-AgentReferer 标头。如果选择 Header,则在 Header 字段中指定标头的名称。

HTTP method

HTTP 方法,指示请求要求源执行的操作的类型。CloudFront 支持以下方法:DELETEGETHEADOPTIONSPATCHPOSTPUT

查询字符串

URL 中在 ? 字符之后出现的部分 (如果有)。

URI

例如,请求的 URI 路径,用于标识资源,/images/daily-ad.jpg. 这不包括 URI 的查询字符串或片段组件。想要了解有关信息,请参阅统一资源标识符 (URI):通用语法.

除非指定了 Transformation (转换),否则 URI 不会被标准化,并且会被检查,就像 AWS 是作为请求的一部分从客户端收到它一样。Transformation (转换) 将按指定方式重新设置 URI 的格式。

Body

请求中包含要作为 HTTP 请求正文发送到 Web 服务器的任何附加数据 (如表单数据) 的部分。

单一查询参数(仅限值)

您已定义为查询字符串的一部分的任何参数。例如,如果 URL 为“www.xyz.com?UserName=abc&SalesRegion=seattle”,您可以向 UserNameSalesRegion 参数添加一个筛选条件。

如果您选择 Single query parameter (value only) (单一查询参数(仅限值)),您还将指定 Query parameter name (查询参数名称)。这是查询字符串中您将检查的参数,如 UserNameQuery parameter name (查询参数名称) 的最大长度为 30 个字符。Query parameter name (查询参数名称) 不区分大小写。例如,如果您指定 UserName 作为 Query parameter name (查询参数名称),这将匹配 UserName 的所有变体,如 usernameUsERName

所有查询参数(仅限值)

与相似单一查询参数(仅限值),而不是检查单个参数的价值,AWS WAFClassic 将检查查询字符串中所有参数的值,以确定是否有大小约束条件。例如,如果 URL 是 “www.xyz. comUSERNAME=ABC & SalesRegion = 西雅图”,然后选择所有查询参数(仅限值)、AWS WAFClassic 将触发一个匹配值,如果任何一个UserName要么SalesRegion超过指定的大小。

Header (仅当“Part of the request to filter on”是“Header”时)

如果你选择了标头为了Part of the request to filter on,则从常见标头列表中选择标头,或键入应使用的标头的名称AWS WAF经典来评估长度。

比较运算符

选择自己想要的方式AWS WAFClassic (经典) 按照为指定的值评估 Web 请求中的查询字符串的长度。Size.

例如,如果您选择大于为了比较运算符然后键入100为了Size、AWS WAFClassic 评估 Web 请求中是否存在长度超过 100 个字节的查询字符串。

Size

输入应对应的长度(以字节为单位)AWS WAF应在查询字符串中监视的经典。

注意

如果选择 URI 作为 Part of the request to filter on 的值,则 URI 中的 / 算作一个字符。例如,URI 路径/logo.jpg长度是 9 个字符。

Transformation

转换之前重新格式化 Web 请求AWS WAFClassic 会评估请求中指定部分的长度。这可消除一些不寻常的格式,可防范攻击者在 Web 请求中使用它们以试图绕过。AWS WAFClassic。

注意

如果选择Body为了Part of the request to filter on,你无法配置AWS WAFClassic (经典) 执行转换,因为只转发前 8192 个字节进行检查。但是,您仍可以基于 HTTP 请求正文的大小来筛选流量并指定转换。None(无). (AWS WAFClassic 会从请求标头获取正文的长度。)

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

转换可以执行以下操作:

None(无)

AWS WAF在检查长度之前,Classic 不会对 Web 请求执行任何文本转换。

Convert to lowercase

AWS WAF将大写字母 (A-Z) 转换为小写字母 (a-z)。

HTML decode

AWS WAFClassic 将 HTML 编码的字符替换为未编码的字符:

  • &quot; 替换为 &

  • &nbsp; 替换为不间断空格

  • &lt; 替换为 <

  • &gt; 替换为 >

  • 将以十六进制格式表示的字符 &#xhhhh; 替换为对应字符

  • 将以十进制格式表示的字符 &#nnnn; 替换为对应字符

规范化空格

AWS WAFClassic 将以下字符替换为空格字符(十进制 32):

  • \f,换页符,十进制 12

  • \t,制表符,十进制 9

  • \n,换行符,十进制 10

  • \r,回车符,十进制 13

  • \v,垂直制表符,十进制 11

  • 不间断空格,十进制 160

此外,此选项将多个空格替换为一个空格。

Simplify command line

对于包含操作系统命令行命令的请求,使用此选项可执行以下转换:

  • 删除以下字符:\ " ' ^

  • 删除以下字符之前的空格:/ (

  • 将以下字符替换为空格:, ;

  • 将多个空格替换为一个空格

  • 将大写字母 (A-Z) 转换为小写字母 (a-z)

URL decode

解码 URL 编码的请求。

在大小约束条件中添加和删除筛选条件

您可以在大小约束条件中添加或删除筛选条件。要更改筛选条件,请添加一个新筛选条件并删除旧条件。

在大小约束条件中添加或删除筛选条件

  1. 登录到AWS Management Console打开AWS WAF控制台https://console.aws.amazon.com/wafv2/.

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

  2. 在导航窗格中,选择 Size constraint

  3. 选择要在其中添加或删除筛选条件的条件。

  4. 要添加筛选条件,请执行以下步骤:

    1. 选择 Add filter

    2. 指定适用的筛选条件设置。有关更多信息,请参阅 创建或编辑大小约束条件时指定的值

    3. 选择 Add(添加)。

  5. 要删除筛选条件,请执行以下步骤:

    1. 选择要删除的筛选条件。

    2. 选择 Delete filter

删除大小约束条件

如果要删除某个大小约束条件,需要先删除该条件中的所有筛选条件,然后从使用该条件的所有规则中将其删除,如以下过程中所述。

删除大小约束条件

  1. 登录到AWS Management Console打开AWS WAF控制台https://console.aws.amazon.com/wafv2/.

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

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

  3. Size constraint conditions 窗格中,选择要删除的大小限制条件。

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

    如果使用此大小约束条件的规则的列表为空,请转到步骤 6。如果列表中包含任何规则,则记下这些规则,然后继续执行步骤 5。

  5. 要从使用某个大小约束条件的规则中将其删除,请执行以下步骤:

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

    2. 选择使用要删除的大小约束条件的规则的名称。

    3. 在右窗格中,选择要从规则中删除的大小约束条件,然后选择 Remove selected condition

    4. 对使用要删除的大小约束条件的所有其余规则重复步骤 b 和 c。

    5. 在导航窗格中,选择 Size constraint

    6. Size constraint conditions 窗格中,选择要删除的大小限制条件。

  6. 选择 Delete 删除所选条件。