기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
유효한 AWS WAF 토큰이 없는 요청 차단
이 섹션에서는 AWS WAF 모바일를 사용할 때 토큰이 누락된 로그인 요청을 차단하는 방법을 설명합니다SDK.
지능형 위협 AWS 관리형 규칙 규칙 그룹 AWSManagedRulesACFPRuleSet
, AWSManagedRulesATPRuleSet
및를 사용하면 AWSManagedRulesBotControlRuleSet
규칙 그룹은 AWS WAF 토큰 관리를 호출하여 웹 요청 토큰의 상태를 평가하고 그에 따라 요청에 레이블을 지정합니다.
참고
토큰 레이블 지정은 이러한 관리형 규칙 그룹 중 하나를 사용하여 평가하는 웹 요청에만 적용됩니다.
토큰 관리에서 적용하는 레이블 지정에 대한 내용은 앞의 의 토큰 레이블 유형 AWS WAF 섹션을 참조하세요.
그러면 지능형 위협 완화 관리형 규칙 그룹이 다음과 같이 토큰 요구 사항을 처리합니다.
-
AWSManagedRulesACFPRuleSet
AllRequests
규칙은를 실행하도록 구성됩니다.Challenge 모든 요청에 대한 작업으로accepted
토큰 레이블이 없는를 효과적으로 차단합니다. -
AWSManagedRulesATPRuleSet
는rejected
토큰 레이블이 있는 요청을 차단하지만absent
토큰 레이블이 있는 요청은 차단하지 않습니다. -
AWSManagedRulesBotControlRuleSet
대상 보호 수준에서는 클라이언트가accepted
토큰 레이블 없이 요청을 5회 전송하고 나면 클라이언트에 챌린지를 제시합니다. 이 수준은 유효한 토큰이 없는 개별 요청을 차단하지는 않습니다. 이 규칙 그룹의 공통 보호 수준은 토큰 요구 사항을 관리하지 않습니다.
지능형 위협 규칙 그룹에 대한 자세한 내용은 AWS WAF 사기 제어 계정 생성 사기 방지(ACFP) 규칙 그룹, AWS WAF 사기 제어 계정 탈취 방지(ATP) 규칙 그룹 및 AWS WAF Bot Control 규칙 그룹 섹션을 참조하세요.
Bot Control 또는 ATP 관리형 규칙 그룹을 사용할 때 토큰이 누락된 요청을 차단하려면
Bot Control 및 ATP 규칙 그룹을 사용하면 유효한 토큰이 없는 요청이 규칙 그룹 평가를 종료하고 웹에서 계속 평가할 수 있습니다ACL.
토큰이 없거나 토큰이 거부된 모든 요청을 차단하려면 관리형 규칙 그룹 바로 뒤에 실행되도록 규칙을 추가하여 해당 규칙 그룹이 처리하지 않는 요청이 캡처 및 차단되도록 합니다.
다음은 ATP 관리형 규칙 그룹을 ACL 사용하는 웹의 예제 JSON 목록입니다. 웹에는 awswaf:managed:token:absent
레이블을 캡처하고 처리하는 규칙ACL이 추가되었습니다. 규칙은 평가 범위를 로그인 엔드포인트로 이동하는 웹 요청으로 좁혀 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, "RetrofittedByFirewallManager": false, "LabelNamespace": "awswaf:111111111111:webacl:exampleWebACL:" }