Wie lasse ich Anfragen von einem Bot zu, die von einer verwalteten Regelgruppe von AWS WAF Bot Control blockiert wurden?

Letzte Aktualisierung: 28.06.2022

Ich möchte Anfragen von einem Bot zulassen, der von der AWS WAF-Bot-Control-Regelgruppe blockiert wurde. Wie erlaube ich Anfragen von einem legitimen Bot?

Kurzbeschreibung

Gehen Sie wie folgt vor, um Anfragen von einem Bot zu erlauben, die von der AWS WAF-Bot-Control-Regelgruppe blockiert wurden:

  1. Identifizieren Sie die Bot-Control-Regel, die die Anforderungen von AWS WAF-Protokollen blockiert, indem Sie AWS WAF-Protokolle abfragen.
  2. Legen Sie die Bot-Control-Regel fest, die die Anforderungen zum Zählen blockiert.
  3. Erstellen Sie eine benutzerdefinierte Regel, die mit der Bezeichnung der ausgeschlossenen Regel übereinstimmt und alle übereinstimmenden Anforderungen außer dem Bot, den Sie zulassen möchten, blockiert.
  4. Vergewissern Sie sich, dass der Bot-Verkehr zulässig ist.

Die verwaltete Regelgruppe Bot Control überprüft Bots anhand der IP-Adressen von AWS WAF. Wenn Sie Bots verifiziert haben, die über einen Proxy oder ein CDN weiterleiten, das die Client-IP-Adresse beim Weiterleiten der Anfragen nicht beibehält, müssen Sie den Bot ausdrücklich zulassen.

Lösung

Identifizieren Sie die Bot-Control-Regel, die die Anfragen blockiert

Analysieren Sie die AWS WAF-Protokolle, um die Bot-Control-Regel zu identifizieren, die Anforderungen des erforderlichen Bots blockiert.

1.    Um AWS WAF-Protokolle mit Amazon Athena zu analysieren, erstellen Sie mithilfe der Partitionsprojektion eine Tabelle für AWS WAF-Protokolle in Athena. Anweisungen finden Sie unter Erstellen der Tabelle für AWS WAF-Protokolle in Athena mithilfe der Partitionsprojektion.

2.    Führen Sie die folgende Athena-Abfrage aus, um die Details der Anfrage zu ermitteln, die von der Bot-Control-Regelgruppe blockiert wurde:

Hinweis: Ersetzen Sie waf_logs durch Ihren Tabellennamen. Das Zeitintervall `time > now () - interval '3' day` kann durch das angegebene Zeitintervall ersetzt werden.
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

Beispiele für Amazon Athena-Abfragen zum Filtern von Datensätzen für einen bestimmten Zeitraum finden Sie unter Beispielabfragen für AWS WAF-Protokolle.

3.    (Optional) Um Ihre Suche weiter einzugrenzen, fügen Sie mithilfe des UND-Operators in der Where-Klausel einen zusätzlichen Filter für UserAgent hinzu. Eine Beschreibung der Felder in WAF-Protokollen finden Sie unter Protokollfelder. Sie können beispielsweise den Filter kv['user-agent'] like 'Postman%' hinzufügen, um Ihre Ergebnisse einzugrenzen.

4.    Überprüfen Sie die Spalte matchedRule, um die Regel zu identifizieren, die die Anforderungen blockiert.
Hinweis:
Weitere Informationen zu Bot-Control-Regeln finden Sie unter AWS WAF-Bot-Control-Regelgruppe.

Legen Sie die Bot-Control-Regel fest, die die Anforderungen zum Zählen blockiert

Bearbeiten Sie die Gruppe Bot-Control-Regel, um die Regel festzulegen, die das Zählen der Anfragen blockiert. Informationen zum Festlegen einer Regel zum Zählen finden Sie unter Festlegen von Regelaktionen für das Zählen in einer Regelgruppe. Dadurch kann die Regel ihre Kennzeichnung auf übereinstimmende Anfragen anwenden und den Bot zulassen, der nicht blockiert ist.

Erstellen Sie eine benutzerdefinierte Regel, die mit der Bezeichnung der ausgeschlossenen Regel übereinstimmt und alle übereinstimmenden Anfragen außer dem Bot, den Sie zulassen möchten, blockiert.

Fügen Sie Ihrer Web-ACL basierend auf der Regelkennzeichnung, das die Anforderung blockiert, eine Regel für die Kennzeichnungsübereinstimmung hinzu. Die Regel für die Kennzeichnungsübereinstimmung muss nach der von Bot Control verwalteten Regelgruppe kommen. Informationen zu den von Bot Control verwalteten Regelgruppenkennzeichnungen finden Sie unter AWS WAF-Bot-Control-Regelgruppe.

Wenn eine Regel mit der Kategoriekennzeichnung die Anfrage blockiert

Konfigurieren Sie Ihre benutzerdefinierte Regel, um einen bestimmten blockierten Bot zuzulassen.
Wichtig:
Ersetzen Sie die Bot-Kategorie- und Bot-Namensbezeichnungen in der Regelkonfiguration durch die Bot-Kategorie- und Bot-Namensbezeichnungen aus den Athena-Abfrageergebnissen.

Für alle anderen Regelkennzeichnungen

Erstellen Sie eine benutzerdefinierte Regel zum Erstellen einer Ausnahme für einen blockierten Benutzeragenten.
Wichtig: Ersetzen Sie die Bot-Signalkennzeichnung und den UserAgent-Wert im Feld SearchString in der Regelkonfiguration durch die Bot-Signalkennzeichnung und den UserAgent-Wert aus den Kennzeichnungen und UserAgent-Spalten der Athena-Abfrageergebnisse.

Stellen Sie sicher, dass der Bot-Verkehr zulässig ist

Überprüfen Sie erneut die AWS WAF-Protokolle, um sicherzustellen, dass der Bot jetzt zugelassen ist. Wenn der Bot immer noch blockiert ist, wiederholen Sie den vorherigen Vorgang, um zusätzliche Regeln zu ermitteln, die die Anforderungen blockieren.


War dieser Artikel hilfreich?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?