ACFP の例: 侵害された認証情報についてのカスタムレスポンス - AWS WAF、AWS Firewall Manager、および AWS Shield Advanced

ACFP の例: 侵害された認証情報についてのカスタムレスポンス

デフォルトでは、ルールグループ AWSManagedRulesACFPRuleSet によって実行される認証情報チェックは、リクエストにラベル付けしてブロックすることで、侵害された認証情報を処理します。ルールグループとルールの動作の詳細については、「AWS WAF Fraud Control Account Creation Fraud Prevention (ACFP) ルールグループ」を参照してください。

ユーザーが提供したアカウント認証情報が侵害されたことをユーザーに通知するために、次を実行できます。

  • SignalCredentialCompromised ルールを Count にオーバーライド — これにより、ルールは一致するリクエストをカウントしてラベル付けのみします。

  • カスタム処理でラベル一致ルールの追加 – ACFP ラベルと照合し、カスタム処理を実行するようにルールを設定します。

次のウェブ ACL リスティングは、SignalCredentialCompromised ルールアクションがカウントするようにオーバーライドされた状態で、前の例の ACFP マネージドルールグループを示しています。この設定では、このルールグループは、侵害された認証情報を使用するウェブリクエストを評価すると、リクエストにラベルを付けますが、ブロックすることはありません。

さらに、ウェブ ACL には aws-waf-credential-compromised という名前のカスタムレスポンスと AccountSignupCompromisedCredentialsHandling という名前の新しいルールが追加されました。ルールの優先順位にはルールグループよりも大きい数値が設定されているため、ウェブ ACL 評価では、ルールはルールグループの後に実行されます。新しいルールは、ルールグループの侵害された認証情報ラベルを持つすべてのリクエストと照合します。ルールは一致を見つけると、カスタムレスポンス本文を含むリクエストに Block アクションを適用します。カスタムレスポンス本文は、認証情報が侵害されたという情報をエンドユーザーに提供し、実行するアクションを提案します。

{ "Name": "compromisedCreds", "Id": "... ", "ARN": "arn:aws:wafv2:us-east-1:111122223333:regional/webacl/compromisedCreds/...", "DefaultAction": { "Allow": {} }, "Description": "", "Rules": [ { "Name": "AWS-AWSManagedRulesACFPRuleSet", "Priority": 0, "Statement": { "ManagedRuleGroupStatement": { "VendorName": "AWS", "Name": "AWSManagedRulesACFPRuleSet", "ManagedRuleGroupConfigs": [ { "AWSManagedRulesACFPRuleSet": { "CreationPath": "/web/signup/submit-registration", "RegistrationPagePath": "/web/signup/registration", "RequestInspection": { "PayloadType": "JSON", "UsernameField": { "Identifier": "/form/username" }, "PasswordField": { "Identifier": "/form/password" }, "EmailField": { "Identifier": "/form/email" }, "PhoneNumberFields": [ { "Identifier": "/form/country-code" }, { "Identifier": "/form/region-code" }, { "Identifier": "/form/phonenumber" } ], "AddressFields": [ { "Identifier": "/form/name" }, { "Identifier": "/form/street-address" }, { "Identifier": "/form/city" }, { "Identifier": "/form/state" }, { "Identifier": "/form/zipcode" } ] }, "EnableRegexInPath": false } } ], "RuleActionOverrides": [ { "Name": "SignalCredentialCompromised", "ActionToUse": { "Count": {} } } ] } }, "OverrideAction": { "None": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "AWS-AWSManagedRulesACFPRuleSet" } }, { "Name": "AccountSignupCompromisedCredentialsHandling", "Priority": 1, "Statement": { "LabelMatchStatement": { "Scope": "LABEL", "Key": "awswaf:managed:aws:acfp:signal:credential_compromised" } }, "Action": { "Block": { "CustomResponse": { "ResponseCode": 406, "CustomResponseBodyKey": "aws-waf-credential-compromised", "ResponseHeaders": [ { "Name": "aws-waf-credential-compromised", "Value": "true" } ] } } }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "AccountSignupCompromisedCredentialsHandling" } } ], "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "compromisedCreds" }, "Capacity": 51, "ManagedByFirewallManager": false, "RetrofittedByFirewallManager": false, "LabelNamespace": "awswaf:111122223333:webacl:compromisedCreds:", "CustomResponseBodies": { "aws-waf-credential-compromised": { "ContentType": "APPLICATION_JSON", "Content": "{\n \"credentials-compromised\": \"The credentials you provided have been found in a compromised credentials database.\\n\\nTry again with a different username, password pair.\"\n}" } } }