Ejemplo de ACFP: respuesta personalizada para credenciales comprometidas
De forma predeterminada, la comprobación de credenciales que realiza el grupo de reglas AWSManagedRulesACFPRuleSet
gestiona las credenciales comprometidas etiquetando la solicitud y bloqueándola. Para obtener más información sobre el grupo de reglas y el comportamiento de las reglas, consulte Grupo de reglas de prevención contra fraude en la creación de cuentas (ACFP) de control de fraudes de AWS WAF.
Para informar al usuario de que las credenciales de la cuenta que ha proporcionado están comprometidas, puede hacer lo siguiente:
-
Anular la regla
SignalCredentialCompromised
para Count: esto hace que la regla solo cuente y etiquete las solicitudes coincidentes. -
Agregar una regla de coincidencia de etiquetas con una gestión personalizada: configure esta regla para que coincida con la etiqueta de la ACFP y realice su gestión personalizada.
Las siguientes listas de la ACL web muestran el grupo de reglas administrado de la ACFP del ejemplo anterior, con la acción de regla SignalCredentialCompromised
anulada para el recuento. Con esta configuración, cuando este grupo de reglas evalúe cualquier solicitud web que utilice credenciales comprometidas, etiquetará la solicitud, pero no la bloqueará.
Además, la ACL web ahora tiene una respuesta personalizada con el nombre aws-waf-credential-compromised
y una nueva regla con el nombre AccountSignupCompromisedCredentialsHandling
. La prioridad de la regla es una configuración numérica superior a la del grupo de reglas, por lo que se ejecuta después del grupo de reglas en la evaluación de la ACL web. La nueva regla hace coincidir cualquier solicitud con la etiqueta de credenciales comprometidas del grupo de reglas. Cuando la regla encuentra una coincidencia, aplica la acción Block a la solicitud con el cuerpo de la respuesta personalizada. El cuerpo de la respuesta personalizada proporciona información al usuario final de que sus credenciales se han visto comprometidas y propone una acción que tomar.
{ "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}" } } }