기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
유효하지 않은 요청 차단 AWS WAF token
이 섹션에서는 사용 시 토큰이 누락된 로그인 요청을 차단하는 방법을 설명합니다. 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 관리형 규칙 그룹을 사용할 때 토큰이 누락된 요청을 차단하려면
봇 컨트롤 및 ATP 규칙 그룹을 사용하면 유효한 토큰이 없는 요청이 규칙 그룹 평가를 종료하고 웹에서 계속 평가될 수 ACL 있습니다.
토큰이 없거나 토큰이 거부된 모든 요청을 차단하려면 관리형 규칙 그룹 바로 뒤에 실행되도록 규칙을 추가하여 해당 규칙 그룹이 처리하지 않는 요청이 캡처 및 차단되도록 합니다.
다음은 ATP 관리형 규칙 그룹을 ACL 사용하는 웹에 대한 예제 JSON 목록입니다. ACL웹에는 awswaf:managed:token:absent
레이블을 캡처하고 처리하는 규칙이 추가되었습니다. 이 규칙은 규칙 그룹의 범위와 일치하도록 로그인 엔드포인트로 이동하는 웹 요청으로 평가 범위를 좁힙니다. 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:" }