阻止没有有效令牌的请求 - Amazon WAFAmazon Firewall Manager、和 Amazon Shield Advanced
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

阻止没有有效令牌的请求

当您使用智能威胁 Amazon 托管规则组AWSManagedRulesACFPRuleSetAWSManagedRulesATPRuleSetAWSManagedRulesBotControlRuleSet、和时,规则组会调用 Amazon WAF 令牌管理来评估 Web 请求令牌的状态并相应地标记请求。

注意

令牌标签仅适用于您使用其中一个托管规则组评估的 Web 请求。

有关令牌管理应用的标签的信息,请参阅前面的部分 智能威胁缓解托管规则组的令牌标记

然后,智能威胁缓解托管规则组按如下方式处理令牌要求:

  • AWSManagedRulesACFPRuleSet AllRequests 规则配置为对所有请求运行 Challenge 操作,从而有效地阻止任何没有 accepted 令牌标签的请求。

  • AWSManagedRulesATPRuleSet 会阻止带有 rejected 令牌标签的请求,但不会阻止带有 absent 令牌标签的请求。

  • 在客户端发送五个没有 accepted 令牌标签的请求后,AWSManagedRulesBotControlRuleSet 目标保护级别会向他们提出质询。它不会阻止没有有效令牌的单个请求。规则组的通用保护级别不管理令牌要求。

有关智能威胁规则组的其他详细信息,请参阅 Amazon WAF 欺诈控制账户创建防作弊 (ACFP) 规则组Amazon WAF 防欺诈控制账户盗用 (ATP) 规则组Amazon WAF 机器人控制规则组

使用机器人控制功能或 ATP 托管规则组时阻止缺少令牌的请求

使用机器人控制功能和 ATP 规则组时,没有有效令牌的请求可以退出规则组评估并继续由 Web ACL 进行评估。

要阻止所有缺少令牌或令牌被拒绝的请求,请添加一条规则,使其在托管规则组之后立即运行,以捕获并阻止该规则组未处理的请求。

以下是使用 ATP 托管规则组的 Web ACL 的 JSON 列表示例。Web ACL 添加了一条规则,用于捕获 awswaf:managed:token:absent 标签并对其进行处理。该规则将其评估范围缩小到发送到登录端点的 Web 请求,以匹配 ATP 规则组的范围。添加的规则以粗体列出。

{ "Name": "exampleWebACL", "Id": "55555555-6666-7777-8888-999999999999", "ARN": "arn:aws:wafv2:us-east-1:111111111111:regional/webacl/exampleWebACL/55555555-4444-3333-2222-111111111111", "DefaultAction": { "Allow": {} }, "Description": "", "Rules": [ { "Name": "AWS-AWSManagedRulesATPRuleSet", "Priority": 1, "Statement": { "ManagedRuleGroupStatement": { "VendorName": "AWS", "Name": "AWSManagedRulesATPRuleSet", "ManagedRuleGroupConfigs": [ { "AWSManagedRulesATPRuleSet": { "LoginPath": "/web/login", "RequestInspection": { "PayloadType": "JSON", "UsernameField": { "Identifier": "/form/username" }, "PasswordField": { "Identifier": "/form/password" } }, "ResponseInspection": { "StatusCode": { "SuccessCodes": [ 200 ], "FailureCodes": [ 401, 403, 500 ] } } } } ] } }, "OverrideAction": { "None": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "AWS-AWSManagedRulesATPRuleSet" } }, { "Name": "RequireTokenForLogins", "Priority": 2, "Statement": { "AndStatement": { "Statements": [ { "Statement": { "LabelMatchStatement": { "Scope": "LABEL", "Key": "awswaf:managed:token:absent" } } }, { "ByteMatchStatement": { "SearchString": "/web/login", "FieldToMatch": { "UriPath": {} }, "TextTransformations": [ { "Priority": 0, "Type": "NONE" } ], "PositionalConstraint": "STARTS_WITH" } }, { "ByteMatchStatement": { "SearchString": "POST", "FieldToMatch": { "Method": {} }, "TextTransformations": [ { "Priority": 0, "Type": "NONE" } ], "PositionalConstraint": "EXACTLY" } } ] } }, "Action": { "Block": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "RequireTokenForLogins" } } ], "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "exampleWebACL" }, "Capacity": 51, "ManagedByFirewallManager": false, "LabelNamespace": "awswaf:111111111111:webacl:exampleWebACL:" }