Ongoing service disruptions
For the most recent update on ongoing service disruptions affecting the AWS Middle East (UAE) Region (ME-CENTRAL-1), refer to the AWS Health Dashboard. For information on AWS Service migration, see How do I migrate my services to another region?
Comment autoriser les requêtes provenant d'un bot bloqué par un groupe de règles de contrôle des bots AWS WAF ?
Je souhaite autoriser les requêtes provenant d'un bot légitime bloqué par un groupe de règles de contrôle des bots AWS WAF.
Résolution
Pour autoriser les requêtes provenant d'un bot légitime bloquées par un groupe de règles de contrôle des bots, procédez comme suit.
Remarque : Le groupe de règles de contrôle des bots AWS WAF utilise les adresses IP d'AWS WAF pour vérifier les bots. Certains bots vérifiés passent par un proxy ou un CDN qui ne conserve pas l'adresse IP du client lorsqu'il transmet les requêtes. Si votre bot est acheminé de cette façon, vous devez l'autoriser spécifiquement.
Identifier la règle de contrôle des bots qui bloque les requêtes provenant de vos journaux AWS WAF
Pour identifier la règle qui bloque la requête légitime du bot, analysez vos journaux AWS WAF. Utilisez une requête Amazon Athena ou Amazon CloudWatch Log Insights.
Utiliser une requête Athena pour analyser les journaux AWS WAF
Procédez comme suit :
- Utilisez la projection de partition pour créer une table pour les journaux AWS WAF dans Athena.
- Pour trouver les détails de la requête bloquée, exécutez la requête Athena suivante :
Remarque : Remplacez waf_logs par le nom de votre table, waf_data par le nom de votre base de données, time > now() - interval '3' day par votre plage de temps et pingdom% par le nom de votre 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
Par exemple, les requêtes Athena filtrent les enregistrements pour une plage de temps spécifiée, consultez la section Interroger les journaux AWS WAF. - Consultez la colonne matchedRule pour identifier la règle qui bloque les requêtes légitimes des bots. Voici l'exemple de sortie de la requête Athena de l'étape 2 :
N° : 1
timestamp: 2024-04-10 15:11:18.000
Action**:** BLOCK
terminatingRuleId: AWS-AWSManagedRulesBotControlRuleSet
matchedRule: CategoryMonitoring
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like 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
country: US
labels: [{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}]
Remarque : La sortie de la requête Athena apparaît sous forme de table.
Utiliser une requête CloudWatch Log Insights
Procédez comme suit :
-
Ouvrez la console CloudWatch.
-
Dans le volet de navigation, sélectionnez Journaux, puis Log Insights.
-
Sous Log Insights, ouvrez la liste déroulante Critères de sélection.
-
Choisissez un ou plusieurs groupes de journaux à interroger ou choisissez Parcourir les groupes de journaux.
-
Sélectionnez votre groupe de journaux.
-
(Facultatif) Choisissez une période pour votre requête.
-
Collez la requête suivante dans l'éditeur de requêtes.
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 -
(Facultatif) Pour rechercher un bot à partir d'une adresse IP spécifique, ajoutez le filtre suivant à la requête précédente :
| filter IP = '10.0.0.0/8'Remarque : Remplacez 10.0.0.0/8 par votre adresse IP.
-
(Facultatif) Pour rechercher un bot avec une valeur d'agent utilisateur spécifique, ajoutez le filtre suivant à la requête précédente :
| filter userAgent like 'user-agent value'Remarque : Remplacez valeur user-agent par la valeur de votre agent utilisateur.
-
Pour afficher l'intégralité du message du journal, développez les entrées du journal.
-
Pour trouver la règle qui bloque les requêtes légitimes des bots, recherchez terminatingRuleId et ruleGroupList.x.terminatingRule.ruleId. Les étiquettes associées à ces champs indiquent la raison pour laquelle la requête a été bloquée. Dans l'exemple suivant, ruleGroupList.0.terminatingRule.ruleID est bloqué en raison de 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
Plusieurs étiquettes peuvent être associées à une requête. Aux fins de ces instructions, seules les requêtes relatives aux règles de blocage sont pertinentes.
Définir la règle de contrôle des bots qui bloque les requêtes à comptabiliser
Procédez comme suit :
- Ouvrez la console AWS WAF.
- Dans le volet de navigation, sélectionnez AWS WAF.
- Choisissez Packs de ressources et de protection.
- Trouvez votre pack de protection et choisissez Afficher et modifier à côté de Règles.
- Dans le volet droit, sélectionnez le groupe de règles AWSManagedRulesBotControlRuleSet.
- Dans la section Dérogations aux règles, modifiez l'action pour comptabiliser la règle bloquante.
- Choisissez Enregistrer la règle.
Remarque : AWS WAF vérifie et associe des étiquettes aux requêtes qui correspondent à la règle, mais ne les bloque pas.
Créer une règle personnalisée pour toutes les requêtes correspondantes, à l'exception du bot que vous souhaitez autoriser
Pour bloquer les requêtes illégitimes, créez une règle qui fait correspondre les étiquettes pour autoriser les requêtes présentant des caractéristiques spécifiques et bloque les autres requêtes. Exemple :
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
Remarque : Si la règle qui bloque comporte l’étiquette awswaf:managed:aws:bot-control:bot:category, le contrôle des bots associe une autre étiquette au nom du bot. Vous pouvez utiliser cette étiquette de nom de bot pour identifier les bots légitimes. Sinon, utilisez l'en-tête user-agent pour identifier les bots légitimes.
Pour créer une règle personnalisée, procédez comme suit :
- Ouvrez la console AWS WAF.
- Dans le volet de navigation, sélectionnez AWS WAF.
- Choisissez Packs de ressources et de protection.
- Trouvez votre pack de protection et choisissez Afficher et modifier à côté de Règles.
- Dans le volet droit, choisissez Ajouter des règles.
Choisissez Règle personnalisée, puis sélectionnez Suivant.
Choisissez à nouveau Règle personnalisée, puis sélectionnez Suivant. - Définissez l'Action de la règle sur BLOQUER.
- Saisissez le Nom de votre règle.
- Dans S’il s’agit d’une requête, développez la liste déroulante et choisissez correspond à toutes les instructions (ET).
- Dans Instruction 1, procédez comme suit :
Dans Inspecter, choisissez Inclut une étiquette.
Dans Instruction, choisissez Étiquette.
Dans Clé de correspondance, sélectionnez awswaf:managed:aws:bot-control:bot:category: category-name.
Remarque : Remplacez category-name par le nom de votre catégorie de règle. - Dans Instruction 2, procédez comme suit :
Dans Inspecter, choisissez Inclut une étiquette. Dans Instruction, choisissez Étiquette.
Dans Clé de correspondance, sélectionnez awswaf:managed:aws:bot-control:bot:name: bot-name.
Remarque : Remplacez bot-name par le nom de votre bot.
Développez Configuration de la règle, sous Instruction négative (NON), choisissez Passer les résultats de l’instruction en nombre négatif. - Sélectionnez Créer une règle.
- Pour définir la priorité de la règle, cliquez sur Modifier l'ordre des règles dans le volet droit et faites glisser la règle sous la règle de contrôle des bots.
- Choisissez Enregistrer l'ordre des règles.
L'exemple suivant est une règle personnalisée qui utilise des étiquettes pour autoriser les bots à devenir des bots légitimes et bloque tous les autres 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" } }
Vérifier qu'AWS WAF autorise le trafic de bots légitime
Pour vérifier qu'AWS WAF autorise le suivi légitime des bots, consultez à nouveau les journaux AWS WAF. Si le bot est toujours bloqué, répétez le processus précédent avec des règles supplémentaires. Parfois, plusieurs règles bloquent le trafic légitime. Dans ce cas, vous devez répéter le processus précédent à plusieurs reprises.
Informations connexes
Exemple de contrôle des bots : Autoriser un bot bloqué spécifique
Exemple de contrôle des bots : Créer une exception pour un agent utilisateur bloqué
Champs des journaux pour le trafic du pack de protection ou de l'ACL Web
- Balises
- AWS WAF
- Langue
- Français

Contenus pertinents
- demandé il y a un an
- Réponse acceptéedemandé il y a 2 ans
- demandé il y a 6 mois
- demandé il y a un an
AWS OFFICIELA mis à jour il y a 8 mois