Cloudflare-WAF-Protokolle erfassen

Unterstützt in:

In diesem Dokument wird beschrieben, wie Sie Cloudflare-WAF-Logs erfassen, indem Sie einen Google Security Operations-Feed einrichten.

Weitere Informationen finden Sie unter Datenaufnahme in Google Security Operations.

Mit einem Datenaufnahmelabel wird der Parser identifiziert, der Roh-Logdaten in das strukturierte UDM-Format normalisiert. Die Informationen in diesem Dokument beziehen sich auf den Parser mit dem Datenaufnahmelabel CLOUDFLARE_WAF.

Cloudflare WAF mit der API konfigurieren

Nachdem Sie das Cloudflare-Log aktiviert haben, verwenden Sie die folgenden Parameter, um die Integration zu aktivieren:

  • Auth-E-Mail-Adresse: die E-Mail-Adresse des Cloudflare-Kontos.

  • Auth-Schlüssel: Das Cloudflare API-Token.

  • Zonen-ID: die Cloudflare-Zonen-ID.

So rufen Sie die Zonen-ID und den Authentifizierungsschlüssel ab:

  1. Melden Sie sich im Cloudflare-Dashboard an.
  2. Klicken Sie auf die Website, die überwacht werden soll.
  3. Klicke auf API-Schlüssel abrufen, um den Authentifizierungsschlüssel zu erhalten.
  4. Wählen Sie API-Token aus.
  5. Klicken Sie auf Token erstellen.
  6. Geben Sie auf der Seite Token erstellen die folgenden Werte an:
    1. Geben Sie im Feld Tokenname den Tokennamen ein.
    2. Führen Sie im Abschnitt Berechtigungen die folgenden Schritte aus:
      1. Wählen Sie in der ersten, zweiten und dritten Liste jeweils Zone, Protokolle und Lesen aus.
      2. Klicken Sie auf Weitere hinzufügen. Wählen Sie in der ersten, zweiten und dritten Liste jeweils Zone, Analytics und Lesen aus.
      3. Klicken Sie auf Weitere hinzufügen. Wählen Sie in der ersten, zweiten und dritten Liste jeweils Zone, Firewall-Dienste und Lesen aus.
      4. Wählen Sie im Bereich Zonenressourcen in der ersten und zweiten Liste jeweils Einbeziehen und Alle Zonen aus.
  7. Klicken Sie auf Weiter zur Zusammenfassung.
  8. Klicken Sie auf Token erstellen.
  9. Kopieren Sie das angezeigte Token. Es ist erforderlich, um den Google Security Operations-Feed zu konfigurieren.

Cloudflare WAF über das Cloudflare-Dashboard konfigurieren

  1. Melden Sie sich im Cloudflare-Dashboard an.
  2. Klicken Sie auf die Website, die überwacht werden soll.
  3. Gehen Sie zu Analysen und Protokolle > Logpush.
  4. Wählen Sie Logpush-Job erstellen aus.
  5. Wählen Sie unter Ziel auswählen die Option Google Cloud Storage aus.
  6. Geben Sie die folgenden Zieldetails ein oder wählen Sie sie aus:
    • Bucket: Name des Google Cloud-Buckets
    • Pfad: Speicherort des Buckets im Speichercontainer
    • Protokolle in tägliche Unterordner organisieren (empfohlen)
    • Wenn Sie Cloudflare Zugriff zum Hochladen von Dateien in Ihren Bucket gewähren möchten, muss Cloudflare IAM Ihrem Bucket als Nutzer mit der Rolle Storage-Objekt-Administrator hinzugefügt worden sein.
    • Wenn Sie die Zieldetails eingegeben haben, wählen Sie Continue (Weiter) aus.
  7. Zur Bestätigung der Inhaberschaft sendet Cloudflare eine Datei an das von Ihnen angegebene Ziel. Um das Token zu finden, wähle in der Datei mit der Inhaberschaftsanfrage auf dem Tab Übersicht die Schaltfläche Öffnen aus und kopiere es dann in das Cloudflare-Dashboard, um deinen Zugriff auf den Bucket zu bestätigen. Gib das Eigentumstoken ein und wähle Weiter aus.
  8. Wählen Sie das Dataset aus, das an den Speicherdienst gesendet werden soll.
  9. Logpush-Job konfigurieren:
    • Geben Sie den Jobnamen ein.
    • Wählen Sie unter Wenn Protokolle übereinstimmen die Ereignisse aus, die in die Protokolle aufgenommen oder daraus entfernt werden sollen. Diese Option ist nicht für alle Datensätze verfügbar.
    • Wählen Sie unter Send the following fields (Die folgenden Felder senden) aus, ob alle Protokolle an Ihr Speicherziel gesendet werden sollen, oder wählen Sie die Protokolle aus, die gesendet werden sollen.
  10. Wählen Sie Senden aus, wenn Sie die Konfiguration des Logpush-Jobs abgeschlossen haben.

Feed in Google Security Operations für die Aufnahme von Cloudflare-WAF-Protokollen konfigurieren

  1. Wählen Sie SIEM-Einstellungen > Feeds aus.
  2. Klicken Sie auf Neu hinzufügen.
  3. Geben Sie einen eindeutigen Namen für den Feednamen ein.
  4. Wählen Sie Google Cloud Storage als Quelltyp aus.
  5. Wählen Sie Cloudflare WAF als Logtyp aus.
  6. Klicken Sie auf Dienstkonto abrufen. Google Security Operations stellt ein eindeutiges Dienstkonto bereit, das Google Security Operations zum Aufnehmen von Daten verwendet.
  7. Konfigurieren Sie den Zugriff des Dienstkontos auf die Cloud Storage-Objekte. Weitere Informationen finden Sie unter Zugriff auf das Dienstkonto von Google Security Operations gewähren.
  8. Klicken Sie auf Weiter.
  9. Konfigurieren Sie die folgenden Eingabeparameter:
    • URI des Speicher-Buckets
    • URI ist ein
    • Option zum Löschen von Quellen
  10. Klicken Sie auf Weiter und dann auf Senden.

Weitere Informationen zu Google Security Operations-Feeds finden Sie in der Dokumentation zu Google Security Operations-Feeds. Informationen zu den Anforderungen für die einzelnen Feedtypen finden Sie unter Feedkonfiguration nach Typ.

Wenn beim Erstellen von Feeds Probleme auftreten, wenden Sie sich an den Google Security Operations-Support.

Referenz für die Feldzuordnung

Dieser Parser extrahiert Felder aus JSON-Logs der Cloudflare Web Application Firewall (WAF) und wandelt sie in das Unified Data Model (UDM) um. Es verarbeitet verschiedene Protokollfelder, darunter Netzwerkinformationen, HTTP-Details, Sicherheitsergebnisse und Metadaten, und ordnet sie entsprechenden UDM-Feldern zu, um eine einheitliche Darstellung und Analyse innerhalb von Google Security Operations zu ermöglichen.

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
Aktion security_result.action_details Der Wert des Felds „Aktion“ im Rohprotokoll wird security_result.action_details zugeordnet.
Aktion security_result.action Das Feld security_result.action wird anhand des Werts des Felds „Aktion“ abgeleitet. „allow“ (zulassen) für Karten „challengeSolved“, „jschallengeSolved“, „managedchallengenoninteractivesolved“ und „managedchallengeinteractivesolved“ werden ALLOW_WITH_MODIFICATION zugeordnet. „drop“, „block“ und „connectionclose“ werden BLOCK zugeordnet. „challengefailed“ und „jschallengefailed“ werden auf FAIL zugeordnet. Alle anderen nicht leeren Werte oder „unbekannt“ werden UNKNOWN_ACTION zugeordnet.
ClientASN network.asn Der Wert des Felds „ClientASN“ im Rohprotokoll wird in einen String konvertiert und network.asn zugeordnet.
ClientASNDescription additional.fields.key Legen Sie „ClientASNDescription“ fest.
ClientASNDescription additional.fields.value.string_value Der Wert des Felds „ClientASNDescription“ im Rohprotokoll wird additional.fields.value.string_value zugeordnet.
ClientCountry principal.location.country_or_region Der Wert des Felds „ClientCountry“ im Rohprotokoll wird principal.location.country_or_region zugeordnet.
ClientIP principal.ip Der Wert des Felds „ClientIP“ im Rohprotokoll wird principal.ip zugeordnet.
ClientRefererHost intermediary.hostname Der Wert des Felds „ClientRefererHost“ im Rohprotokoll wird intermediary.hostname zugeordnet.
ClientRefererPath network.http.referral_url Der Wert des Felds „ClientRefererPath“ im Rohprotokoll wird network.http.referral_url zugeordnet.
ClientRequestMethod network.http.method Der Wert des Felds „ClientRequestMethod“ im Rohprotokoll wird network.http.method zugeordnet.
ClientRequestHost target.hostname Der Wert des Felds „ClientRequestHost“ im Rohprotokoll wird target.hostname zugeordnet.
ClientRequestPath target.file.full_path Der Wert des Felds „ClientRequestPath“ im Rohprotokoll wird target.file.full_path zugeordnet, wenn er nicht leer oder „/“ ist.
ClientRequestProtocol network.application_protocol Der Protokollteil des Feldwerts „ClientRequestProtocol“ (z.B. „HTTP“ aus „HTTP/1.1“ wird extrahiert, in Großbuchstaben umgewandelt und network.application_protocol zugeordnet.
ClientRequestUserAgent network.http.user_agent Der Wert des Felds „ClientRequestUserAgent“ im Rohprotokoll wird network.http.user_agent zugeordnet.
Datum/Uhrzeit metadata.event_timestamp Der Wert des Felds „Datum/Uhrzeit“ im Rohprotokoll wird als RFC 3339-Zeitstempel geparst und metadata.event_timestamp zugeordnet.
EdgeColoCode additional.fields.key Legen Sie „EdgeColoCode“ fest.
EdgeColoCode additional.fields.value.string_value Der Wert des Felds „EdgeColoCode“ im Rohprotokoll wird additional.fields.value.string_value zugeordnet.
EdgeResponseStatus network.http.response_code Der Wert des Felds „EdgeResponseStatus“ im Rohprotokoll wird in eine Ganzzahl konvertiert und network.http.response_code zugeordnet.
Art metadata.product_event_type Der Wert des Felds „Kind“ im Rohprotokoll wird metadata.product_event_type zugeordnet.
Metadata.filter target.resource.attribute.labels.key Wählen Sie „Metadatenfilter“ aus.
Metadata.filter target.resource.attribute.labels.value Der Wert des Felds „Metadata.filter“ im Rohprotokoll wird target.resource.attribute.labels.value zugeordnet.
Metadata.type target.resource.attribute.labels.key Legen Sie „Metadatentyp“ fest.
Metadata.type target.resource.attribute.labels.value Der Wert des Felds „Metadata.type“ im Rohprotokoll wird target.resource.attribute.labels.value zugeordnet.
RayID metadata.product_log_id Der Wert des Felds „RayID“ im Rohprotokoll wird metadata.product_log_id zugeordnet.
RuleID security_result.rule_id Der Wert des Felds „RuleID“ im Rohprotokoll wird security_result.rule_id zugeordnet.
Quelle security_result.rule_name Der Wert des Felds „Quelle“ im Rohprotokoll wird security_result.rule_name zugeordnet.
metadata.vendor_name „Cloudflare“ ist hartcodiert.
metadata.product_name Hartcodiert auf „Cloudflare-Log-Aggregator“.
metadata.log_type Hartcodiert auf „CLOUDFLARE_WAF“.
metadata.event_type Wird von der Parserlogik anhand der Anwesenheit von „ClientIP“, „ClientRequestHost“ und dem Wert von „app_protocol“ bestimmt. Mögliche Werte sind NETWORK_HTTP, NETWORK_CONNECTION, STATUS_UPDATE und GENERIC_EVENT.

Änderungen

2023-08-30

  • Feld „ClientRequestPath“ wurde initialisiert.

2023-02-02

  • Der Wert „security_result“ wurde vor dem Zusammenführen mit dem Ereignis validiert.

2022-09-16

  • Das Feld „Aktion“ wurde in „security_result.action_details“ umgewandelt.
  • „security_result.action“ wurde in „ALLOW_WITH_MODIFICATION“ umgewandelt, wenn die Aktion „challengeSolved“, „jschallengeSolved“, „managedchallengenoninteractivesolved“ oder „managedchallengeinteractivesolved“ enthält.
  • „security_result.action“ wurde in „BLOCK“ geändert, wenn die Aktion „drop“, „block“ oder „connectionclose“ enthält.
  • „security_result.action“ wurde in „FAIL“ umgewandelt, wenn „challengefailed“ oder „jschallengefailed“ in der Aktion enthalten ist.

2022-07-25

  • Beschreibung – neu erstellter Parser