阻止沒有有效令牌的請求 - AWS WAF、AWS Firewall Manager 與 AWS Shield Advanced

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

阻止沒有有效令牌的請求

當您使用智慧型威脅AWS受管規則群組AWSManagedRulesACFPRuleSetAWSManagedRulesATPRuleSet、和時AWSManagedRulesBotControlRuleSet,規則群組會叫用 AWS WAF Token 管理來評估 Web 要求 Token 的狀態,並據此標示要求。

注意

Token 標籤僅適用於您使用其中一個受管規則群組評估的 Web 要求。

如需有關權杖管理套用之標籤的資訊,請參閱前一節智慧型威脅緩和管理規則群組的 Token 標籤

然後,智慧型威脅緩和受管理規則群組會如下處理 Token 需求:

  • AWSManagedRulesACFPRuleSetAllRequests規則被配置為對所有請求運行該Challenge操作,有效地阻止任何沒有accepted令牌標籤的請求。

  • AWSManagedRulesATPRuleSet阻止具有rejected令牌標籤的請求,但不會阻止帶有absent令牌標籤的請求。

  • AWSManagedRulesBotControlRuleSet目標防護層級會在用戶端傳送五個沒有 accepted Token 標籤的要求後提出挑戰。它不會阻止沒有有效令牌的單個請求。規則群組的一般保護層級不會管理權杖需求。

如需有關智慧型安全威脅規則群組的其他詳細資訊AWS WAF欺詐控制帳戶創建欺詐預防(ACFP)規則組,請參閱AWS WAF詐騙控制帳戶接管預防 (ATP) 規則群組AWS WAF機器人控制規則群組

使用機器人控制或 ATP 管理規則群組時封鎖遺失 Token 的要求

透過「機器人控制」和「可承諾量」規則群組,沒有有效權杖的請求可能會結束規則群組評估,並繼續由 Web ACL 評估。

若要封鎖遺失其 Token 或其 Token 遭拒絕的所有要求,請新增規則以在受管規則群組之後立即執行,以擷取並封鎖規則群組未為您處理的要求。

以下是使用可承諾量管理規則群組之 Web ACL 的 JSON 清單範例。Web ACL 已新增規則來擷取標awswaf:managed:token:absent籤並加以處理。此規則會將評估範圍縮小為前往登入端點的 Web 要求,以符合可承諾量規則群組的範圍。新增的規則會以粗體列出。

{ "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:" }