Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
Wie lasse ich Anfragen von einem Bot zu, der von einer AWS WAF Bot Control-Regelgruppe blockiert wird?
Ich möchte Anfragen von einem legitimen Bot zulassen, der von einer AWS WAF Bot Control-Regelgruppe blockiert wird.
Lösung
Gehe wie folgt vor, um Anfragen von einem legitimen Bot zuzulassen, der von einer Bot-Control-Regelgruppe blockiert wurde.
Hinweis: Die AWS WAF Bot Control-Regelgruppe verwendet IP-Adressen von AWS WAF, um Bots zu verifizieren. Einige verifizierte Bots leiten über einen Proxy oder ein CDN weiter, das die Client-IP-Adresse nicht beibehält, wenn Anfragen weitergeleitet werden. Wenn der Bot auf diese Weise weiterleitet, musst du diesen Bot ausdrücklich zulassen.
Die Bot-Control-Regel identifizieren, die die Anfragen aus den AWS-WAF-Protokollen blockiert
Analysiere die AWS-WAF-Protokolle, um die Regel zu identifizieren, die die legitime Bot-Anfrage blockiert. Verwende eine Amazon Athena-Abfrage oder Amazon CloudWatch Log-Insights.
Eine Athena-Abfrage verwenden, um AWS-WAF-Protokolle zu analysieren
Führe die folgenden Schritte aus:
- Verwende die Partitionsprojektion, um eine Tabelle für AWS-WAF-Protokolle in Athena zu erstellen.
- Führe die folgende Athena-Abfrage aus, um die Details der blockierten Anfrage zu finden:
Hinweis: Ersetze waf_logs durch den Tabellennamen, waf_data durch den Datenbanknamen, time > now() - interval '3' day durch den Zeitraum und pingdom% durch den Bot-Namen.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
Zum Beispiel Athena-Abfragen, die Datensätze für einen bestimmten Zeitraum filtern, findest du unter Abfragen von AWS-WAF-Protokollen. - Überprüfe die Spalte matchedRule, um die Regel zu identifizieren, die legitime Bot-Anfragen blockiert. Das Folgende ist die Beispielausgabe der Athena-Abfrage aus Schritt 2:
#: 1
timestamp: 2024-04-10 15:11:18.000
Aktion**:** BLOCKIEREN
**terminatingRuleId:**AWS-AWSManagedRulesBotControlRuleSet
matchedRule: CategoryMonitoring
UserAgent: Mozilla/5.0 (X11; Linux x86\ _64) AppleWebKit/537.36 (KHTML, wie 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: falsch
Client-IP: 192.0.2.0
Land: USA
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}]
Hinweis: Die Athena-Abfrageausgabe wird als Tabelle angezeigt.
Eine CloudWatch Log Insights-Abfrage verwenden
Führe die folgenden Schritte aus:
-
Öffne die CloudWatch-Konsole.
-
Wähle im Navigationsbereich Protokolle und dann Protokoll-Insights.
-
Öffne unter Protokoll-Insights das Drop-down Auswahlkriterien,
-
Wähle eine oder mehrere Protokollgruppen für die Abfrage aus oder wähle Protokollgruppen durchsuchen.
-
Wähle deine Protokollgruppen aus.
-
(Optional) Wähle einen Zeitraum für die Abfrage.
-
Füge die folgende Abfrage in den Abfrage-Editor ein.
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 -
(Optional) Um einen Bot mit einer bestimmten IP-Adresse zu finden, füge der vorherigen Abfrage den folgenden Filter hinzu:
| filter IP = '10.0.0.0/8'Hinweis: Ersetze 10.0.0.0/8 durch die IP-Adresse.
-
(Optional) Um einen Bot mit einem bestimmten User-Agent-Wert zu finden, füge der vorherigen Abfrage den folgenden Filter hinzu:
| filter userAgent like 'user-agent value'Hinweis: Ersetze den Wert „user-agent“ durch den User-Agent-Wert.
-
Um die gesamte Protokollmeldung zu sehen, erweitere die Protokolleinträge.
-
Um die Regel zu finden, die legitime Bot-Anfragen blockiert, suche nach terminatingRuleId und ruleGroupList.x.terminatingRule.ruleId. Die an diese Felder angehängten Label geben den Grund an, warum die Anfrage blockiert wurde. Im folgenden Beispiel ist ruleGroupList.0.terminatingRule.ruleID aufgrund von CategoryMonitoring blockiert:
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
Einer Anfrage können mehrere Labels beigefügt sein. Für die Zwecke dieser Anweisungen sind nur die Anfragen relevant, die sich auf Blockregeln beziehen.
Die Bot Control-Regel einstellen, die das Zählen der Anfragen blockiert
Führe die folgenden Schritte aus:
- Öffne die AWS-WAF-Konsole.
- Wähle im Navigationsbereich AWS WAF.
- Wähle Ressourcen und Schutzpakete.
- Suche das Schutzpaket und wähle neben Regeln die Option Anzeigen und Bearbeiten.
- Wähle im rechten Bereich die Regelgruppe AWSManagedRulesBotControlRuleSet aus.
- Ändere unter Regelüberschreibungen die Aktion für die Regel, die blockiert, in Zählen.
- Wähle Regel speichern.
Hinweis: AWS WAF verifiziert Anfragen, die der Regel entsprechen und fügt Bezeichnungen an, blockiert sie jedoch nicht.
Eine benutzerdefinierte Regel für alle übereinstimmenden Anfragen außer dem Bot erstellen, den du zulassen möchtest
Um unzulässige Anfragen zu blockieren, erstelle eine Regel, die Bezeichnungen abgleicht, um Anfragen mit bestimmten Merkmalen zuzulassen und andere Anfragen zu blockieren. Zum Beispiel:
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
Hinweis: Wenn die Regel, die blockiert, das Label awswaf:managed:aws:bot-control:bot:category hat, fügt Bot Control dem Bot-Namen ein weiteres Label hinzu. Du kannst dieses Bot-Namens-Label verwenden, um legitime Bots zu identifizieren. Verwende andernfalls den User-Agent-Header, um legitime Bots zu identifizieren.
Gehe wie folgt vor, um eine benutzerdefinierte Regel zu erstellen:
- Öffne die AWS-WAF-Konsole.
- Wähle im Navigationsbereich AWS WAF.
- Wähle Ressourcen und Schutzpakete.
- Suche das Schutzpaket und wähle neben Regeln die Option Anzeigen und Bearbeiten.
- Wähle im rechten Bereich Regeln hinzufügen.
Wähle Benutzerdefinierte Regel und dann Weiter aus.
Wähle erneut Benutzerdefinierte Regel und wähle dann Weiter aus. - Aktualisiere die Regel Aktion zu BLOCKIEREN.
- Gib den Regelnamen ein.
- Erweitere für Wenn eine Anfrage das Drop-down-Menü und wähle Entspricht allen Anweisungen (UND).
- Fülle in Anweisung 1 Folgendes aus:
Wählen für Prüfen Hat ein Label.
Wähle für Anweisung die Option Label.
Wähle für abgleichschlüssel awswaf:managed:aws:bot-control:bot:category: category-name aus.
Hinweis: Ersetze category-name durch den Namen der Regelkategorie. - Fülle in Anweisung 2 die folgenden Angaben aus:
Wähle Untersuchen Hat ein Label. Wähle für Anweisung die Option Label.
Wähle für Abgleichschlüssel awswaf:managed:aws:bot-control:bot:name: bot-name aus.
Hinweis: Ersetze bot-name durch den Bot-Namen.
Erweitere die Regelkonfiguration und wähle unter Anweisung negieren (NICHT) die Option Anweisungsergebnisse negieren. - Wähle Regel erstellen.
- Um die Regelpriorität festzulegen, klicke im rechten Bereich auf Regelreihenfolge bearbeiten und ziehe die Regel unter die Bot Controll-Regel.
- Wähle Regelreihenfolge speichern.
Das folgende Beispiel ist eine benutzerdefinierte Regel, die Labels verwendet, um Bots legitime Bots zuzulassen und alle anderen Bots zu blockieren:
{ "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" } }
Sicherstellen, dass AWS WAF legitimen Bot-Datenverkehr zulässt
Um zu überprüfen, ob AWS WAF legitimen Bot-Track zulässt, überprüfe erneut die AWS-WAF-Protokolle. Wenn der Bot immer noch blockiert ist, wiederhole den vorherigen Vorgang mit zusätzlichen Regeln. Manchmal blockiert mehr als eine Regel legitimen Datenverkehr. In diesem Fall musst du den vorherigen Vorgang mehrmals wiederholen.
Ähnliche Informationen
Beispiel für Bot Control: Einen bestimmten blockierten Bot zulassen
Beispiel für Bot Control: Eine Ausnahme für einen blockierten User-Agent erstellen
- Tags
- AWS WAF
- Sprache
- Deutsch

Relevanter Inhalt
AWS OFFICIALAktualisiert vor 3 Jahren