¿Cómo puedo permitir las solicitudes de un bot bloqueado por un grupo de reglas de Bot Control de AWS WAF?
Quiero permitir las solicitudes de un bot legítimo que esté bloqueado por un grupo de reglas de Bot Control de AWS WAF.
Resolución
Para permitir las solicitudes de un bot legítimo bloqueado por un grupo de reglas de Bot Control, sigue estos pasos.
Nota: El grupo de reglas de Bot Control de AWS WAF usa direcciones IP de AWS WAF para verificar los bots. Algunos bots verificados se dirigen a través de un proxy o una CDN que no conserva la dirección IP del cliente cuando reenvía las solicitudes. Si tu bot se enruta de esta manera, debes permitir específicamente ese bot.
Identificación de la regla de Bot Control que bloquea las solicitudes de tus registros de AWS WAF
Para identificar la regla que bloquea la solicitud de bot legítima, analiza los registros de AWS WAF. Utiliza una consulta de Amazon Athena o Información de registros de Amazon CloudWatch.
Uso de una consulta de Athena para analizar los registros de AWS WAF
Sigue estos pasos:
- Utiliza la proyección de particiones para crear una tabla para los registros de AWS WAF en Athena.
- Para encontrar los detalles de la solicitud bloqueada, ejecuta la siguiente consulta de Athena:
Nota: Sustituye waf_logs por el nombre de la tabla, waf_data por el nombre de la base de datos, time > now() - interval '3' day por el intervalo de tiempo y pingdom% por el nombre del bot.WITH waf_data AS (SELECT from_unixtime(waf.timestamp / 1000) as time, waf.terminatingRuleId, waf.action, waf.httprequest.clientip as clientip, waf.httprequest.requestid as requestid, waf.httprequest.country as country, rulegroup.terminatingrule.ruleid as matchedRule, labels as Labels, map_agg(LOWER(f.name), f.value) AS kv FROM waf_logs waf, UNNEST(waf.httprequest.headers) AS t(f), UNNEST(waf.rulegrouplist) AS t(rulegroup) WHERE rulegroup.terminatingrule.ruleid IS NOT NULL GROUP BY 1, 2, 3, 4, 5, 6, 7,8) SELECT waf_data.time, waf_data.action, waf_data.terminatingRuleId, waf_data.matchedRule, waf_data.kv['user-agent'] as UserAgent, waf_data.kv['user-agent'] like 'pingdom%', waf_data.clientip, waf_data.country, waf_data.Labels FROM waf_data Where terminatingRuleId='AWS-AWSManagedRulesBotControlRuleSet' and time > now() - interval '3' day ORDER BY time DESC
Por ejemplo, para las consultas de Athena que filtran los registros para un intervalo de tiempo específico, consulta Consulta de los registros de AWS WAF. - Consulta la columna matchedRule para identificar la regla que bloquea las solicitudes legítimas de bots. A continuación se muestra el resultado de ejemplo de la consulta de Athena del paso 2:
Nº: 1
marca de tiempo: 2024-04-10 15:11:18.000
Acción**:** BLOCK
terminatingRuleId: AWS-AWSManagedRulesBotControlRuleSet
matchedRule: CategoryMonitoring
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, como Gecko) Ubuntu Chromium/61.0.3163.100 Chrome/61.0.3163.100 Safari/537.36 PingdomPageSpeed/1.0 (pingbot/2.0; +http://www.pingdom.com/)
_col5: false
clientip: 192.0.2.0
**país:**ESTADOS UNIDOS
etiquetas: [{name=awswaf:managed:token:absent}, {name=awswaf:managed:aws:bot-control:bot:name:pingdom}, {name=awswaf:managed:aws:bot-control:bot:unverified}, {name=awswaf:managed:aws:bot-control:bot:category:monitoring},{name=awswaf:managed:captcha:absent}, {name=awswaf:managed:aws:bot-control:signal:non_browser_user_agent}]
Nota: El resultado de la consulta de Athena aparece en forma de tabla.
Uso de una consulta de Información de registros de CloudWatch
Sigue estos pasos:
-
Abre la consola de CloudWatch.
-
En el panel de navegación, elige Registros y, a continuación, selecciona Información de registros.
-
En Información de registros, abre el menú desplegable Criterios de selección.
-
Elige uno o más grupos de registro para consultar o elige Examinar grupos de registro.
-
Selecciona tus grupos de registro.
-
(Opcional) Elige un intervalo de tiempo para la consulta.
-
Pega la siguiente consulta en el editor de consultas.
fields @timestamp, @message | parse @message '{"name":"User-Agent","value":"*"}' as userAgent | filter @message like 'awswaf:managed:aws:bot-control' | parse @message '"labels":[*]' as Labels | parse @message '"httpRequest":{"clientIp":"*","country":"*"' as IP, Country | parse @message '"terminatingRule":{"ruleId":"*","action":"*"' as ruleID, action | filter action = "BLOCK" | display @timestamp, userAgent, IP, Country, ruleID, action, terminatingRuleId, Labels | sort by @timestamp DESC | limit 100 -
(Opcional) Para buscar un bot desde una dirección IP específica, agrega el siguiente filtro a la consulta anterior:
| filter IP = '10.0.0.0/8'Nota: Sustituye 10.0.0.0/8 por tu dirección IP.
-
(Opcional) Para buscar un bot con un valor de agente de usuario específico, agrega el siguiente filtro a la consulta anterior:
| filter userAgent like 'user-agent value'Nota: Sustituye user-agent value por el valor de agente de usuario.
-
Para ver el mensaje de registro completo, expande las entradas del registro.
-
Para encontrar la regla que bloquea las solicitudes legítimas de bots, busca terminatingRuleId y ruleGroupList.x.terminatingRule.ruleId. Las etiquetas adjuntas a estos campos muestran el motivo por el que se bloqueó la solicitud. En el ejemplo siguiente, ruleGroupList.0.terminatingRule.ruleID está bloqueado debido a CategoryMonitoring:
httpSourceName ALB labels.0.name awswaf:managed:token:absent labels.1.name awswaf:managed:aws:bot-control:bot:name:pingdom labels.2.name awswaf:managed:aws:bot-control:bot:unverified labels.3.name awswaf:managed:aws:bot-control:bot:category:monitoring labels.4.name awswaf:managed:captcha:absent ruleGroupList.0.customerConfig.0.name InspectionLevel ruleGroupList.0.customerConfig.0.value COMMON ruleGroupList.0.customerConfig.1.name EnableMachineLearning ruleGroupList.0.customerConfig.1.value null ruleGroupList.0.ruleGroupId AWS#AWSManagedRulesBotControlRuleSet ruleGroupList.0.terminatingRule.action BLOCK ruleGroupList.0.terminatingRule.ruleId CategoryMonitoring terminatingRuleId AWS-AWSManagedRulesBotControlRuleSet terminatingRuleType MANAGED_RULE_GROUP
Una solicitud puede tener varias etiquetas adjuntas. A los efectos de estas instrucciones, solo son relevantes las solicitudes relacionadas con las reglas de bloqueo.
Establecimiento de la regla de Bot Control que bloquea el recuento de solicitudes
Sigue estos pasos:
- Abre la consola de AWS WAF.
- En el panel de navegación, selecciona AWS WAF.
- Elige Paquetes de recursos y protección.
- Busca tu paquete de protección y elige Ver y editar junto a Reglas.
- En el panel derecho, selecciona el grupo de reglas AWSManagedRulesBotControlRuleSet.
- En Anulaciones de reglas, cambia la acción a Contar para la regla que está bloqueando.
- Selecciona Guardar regla.
Nota: AWS WAF verifica y adjunta etiquetas a las solicitudes que cumplen la regla, pero no las bloquea.
Creación de una regla personalizada para todas las solicitudes coincidentes, excepto para el bot que se quiere permitir
Para bloquear las solicitudes ilegítimas, crea una regla que combine las etiquetas para permitir las solicitudes con características específicas y que bloquee otras solicitudes. Por ejemplo:
Name: name of the rule IF (Statement 1):the request contains the label AND NOT IF (Statement 2):the request contains the label(enter the bot label you want to allow) Then Action: Block
Nota: Si la regla que bloquea tiene la etiqueta awswaf:managed:aws:bot-control:bot:category, Bot Control adjunta otra etiqueta al nombre del bot. Puedes usar esta etiqueta con el nombre del bot para identificar los bots legítimos. De lo contrario, usa el encabezado user-agent para identificar los bots legítimos.
Para crear esta regla personalizada, sigue estos pasos:
- Abre la consola de AWS WAF.
- En el panel de navegación, selecciona AWS WAF.
- Elige Paquetes de recursos y protección.
- Busca tu paquete de protección y elige Ver y editar junto a Reglas.
- En el panel derecho, selecciona Agregar reglas.
Elige Regla personalizada y selecciona Siguiente.
Vuelve a elegir Regla personalizada y selecciona Siguiente. - Actualiza la acción de la regla a BLOCK.
- Introduce el nombre de la regla.
- En Si una solicitud, expande el menú desplegable y elige cumple todas las instrucciones (AND).
- En Instrucción 1, completa lo siguiente:
En Inspeccionar, elige Tiene una etiqueta.
En Instrucción, elige Etiqueta.
En Clave de coincidencia, selecciona awswaf:managed:aws:bot-control:bot:category: category-name.
Nota: Sustituye category-name por el nombre de la categoría de la regla. - En Instrucción 2, completa lo siguiente:
En Inspeccionar, elige Tiene una etiqueta. En Instrucción, elige Etiqueta.
En Clave de coincidencia, selecciona awswaf:managed:aws:bot-control:bot:name: bot-name.
Nota: Sustituye bot-name por el nombre de tu bot.
Amplía Configuración de la regla, en Negar instrucción (NOT), selecciona Negar los resultados de la instrucción. - Selecciona Crear regla.
- Para establecer la prioridad de las reglas, haz clic en Editar orden de reglas en el panel derecho y arrastra la regla hasta debajo de la regla de Bot Control.
- Selecciona Guardar orden de reglas.
El siguiente ejemplo es una regla personalizada que usa etiquetas para permitir que los bots sean bots legítimos y bloquea todos los demás bots:
{ "Name": "expection-rule", "Priority": 2, "Statement": { "AndStatement": { "Statements": [ { "LabelMatchStatement": { "Scope": "LABEL", "Key": "awswaf:managed:aws:bot-control:bot:category:monitoring" } }, { "NotStatement": { "Statement": { "LabelMatchStatement": { "Scope": "LABEL", "Key": "awswaf:managed:aws:bot-control:bot:name:pingdom" } } } } ] } }, "Action": { "Block": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "expection-rule" } }
Validar que AWS WAF permita el tráfico legítimo de bots
Para comprobar que AWS WAF permite el seguimiento legítimo de bots, vuelve a comprobar los registros de AWS WAF. Si el bot sigue bloqueado, repite el proceso anterior con reglas adicionales. A veces, más de una regla bloquea el tráfico legítimo. En este caso, debes repetir el proceso anterior varias veces.
Información relacionada
Ejemplo de Bot Control: permitir un bot bloqueado específico
Ejemplo de Bot Control: crear una excepción para un agente de usuario bloqueado
Campos de registro para el tráfico de paquetes de protección o ACL web
- Etiquetas
- AWS WAF
- Idioma
- Español

Contenido relevante
- Respuesta aceptadapreguntada hace 8 meses
- preguntada hace 10 meses
- preguntada hace 10 meses
- preguntada hace 3 meses
- preguntada hace 22 días
OFICIAL DE AWSActualizada hace 5 meses