Comment puis-je autoriser les demandes d'un bot bloqué par le groupe de règles gérées AWS WAF Bot Control ?

Dernière mise à jour : 28/06/2022

Je souhaite autoriser les requêtes d'un bot qui a été bloqué par le groupe de règles AWS WAF Bot Control. Comment puis-je autoriser les demandes d'un bot légitime ?

Brève description

Pour autoriser les demandes d'un bot bloqué par le groupe de règles AWS WAF Bot Control, procédez comme suit :

  1. Identifiez la règle Bot Control qui bloque les demandes des journaux AWS WAF en interrogeant les journaux AWS WAF.
  2. Définissez la règle Bot Control qui bloque le comptage des demandes.
  3. Créez une règle personnalisée pour correspondre à l'étiquette de la règle exclue et pour bloquer toutes les demandes de correspondance, à l'exception du bot que vous souhaitez autoriser.
  4. Vérifiez que le trafic des robots est autorisé.

Le groupe de règles gérées Bot Control vérifie les bots à l'aide des adresses IP d'AWS WAF. Si vous avez vérifié des bots qui acheminent le trafic au moyen d'un proxy ou d'un CDN qui ne conserve pas l'adresse IP du client lors du transfert des demandes, vous devez autoriser spécifiquement le bot.

Solution

Identifier la règle Bot Control qui bloque les demandes

Analysez les journaux AWS WAF pour identifier la règle Bot Control qui bloque les demandes du bot requis.

1.    Pour analyser les journaux AWS WAF à l'aide d'Amazon Athena, créez une table pour les journaux AWS WAF dans Athena à l'aide de la projection de partition. Pour obtenir des instructions, reportez-vous à la section Création de la table pour les journaux AWS WAF dans Athena à l'aide de la projection de partition.

2.    Exécutez la requête Athena suivante pour trouver les détails de la demande bloquée par le groupe de règles Bot Control :

Remarque : remplacez waf_logs par le nom de votre table. L'intervalle de temps `time > now() - interval '3' day` peut être remplacé par l'intervalle de temps que vous avez spécifié.
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.clientip,
       waf_data.country,
       waf_data.Labels
FROM waf_data
Where terminatingRuleId='AWS-AWSManagedRulesBotControlRuleSet' and time > now() - interval '3' day
ORDER BY time
DESC

Pour obtenir des exemples de requêtes Amazon Athena visant à filtrer les enregistrements pour une période spécifiée, reportez-vous à la section Exemples de requêtes pour les journaux AWS WAF.

3.    (Facultatif) Pour affiner davantage votre recherche, ajoutez un filtre supplémentaire sur UserAgent à l'aide de l'opérateur AND dans la clause Where. Pour une description des champs des journaux WAF, reportez-vous à la section Champs de journaux. Par exemple, vous pouvez ajouter le filtre kv['user-agent'] like 'Postman%' pour affiner vos résultats.

4.    Vérifiez la colonne matchedRule pour identifier la règle qui bloque les demandes.
Remarque :
pour plus d'informations sur les règles Bot Control, reportez-vous à la section Groupe de règles AWS WAF Bot Control.

Définir la règle Bot Control qui bloque le comptage des demandes

Modifiez le groupe de règles Bot Control pour définir la règle qui bloque le comptage des demandes. Pour définir une règle de comptage, reportez-vous à la section Définition des actions de règle de comptage dans un groupe de règles. Cela permet à la règle d'appliquer son étiquette aux demandes correspondantes et d'autoriser le bot qui n'est pas bloqué.

Créer une règle personnalisée pour correspondre à l'étiquette de la règle exclue et pour bloquer toutes les demandes de correspondance, à l'exception du bot que vous souhaitez autoriser

Ajoutez une règle de correspondance des étiquettes à votre ACL web en fonction de l'étiquette de règle qui bloque la demande. La règle de correspondance des étiquettes doit être placée après le groupe de règles gérées par Bot Control. Pour plus d'informations sur les étiquettes de groupes de règles gérées par Bot Control, reportez-vous à la section Groupe de règles AWS WAF Bot Control.

Si une règle avec l'étiquette de catégorie bloque la demande

Configurez votre règle personnalisée pour autoriser un bot bloqué spécifique.
Important :
remplacez les étiquettes de catégorie et de nom de bot dans la configuration de la règle par les étiquettes de catégorie et de nom de bot des résultats de la requête Athena.

Pour toutes les autres étiquettes de règles

Créez une règle personnalisée pour Créer une exception pour un agent utilisateur bloqué.
Important : remplacez l'étiquette du signal du bot et la valeur UserAgent dans le champ SearchString dans la configuration de la règle par l'étiquette du signal du bot et la valeur UserAgent des étiquettes etUserAgent des résultats des requêtes Athena.

Vérifier que le trafic du bot est autorisé

Vérifiez à nouveau les journaux AWS WAF pour vérifier que le bot est désormais autorisé. Si le bot est toujours bloqué, répétez le processus précédent pour identifier les règles supplémentaires qui bloquent les demandes.


Cet article vous a-t-il été utile ?


Avez-vous besoin d'aide pour une question technique ou de facturation ?