Cloudflare-WAF-Logs erfassen
Parserversion: 6.0
Dieser Parser extrahiert Felder aus JSON-Logs der Cloudflare Web Application Firewall (WAF), transformiert sie und ordnet sie dem Unified Data Model (UDM) zu. Er verarbeitet verschiedene Cloudflare-Aktionen und reichert die Daten mit Metadaten und Netzwerkinformationen an, bevor die Ausgabe im UDM-Format strukturiert wird.
Hinweis
Folgende Voraussetzungen müssen erfüllt sein:
- Google SecOps-Instanz
- Privilegierter Zugriff auf Google Cloud.
- Cloudflare Enterprise-Tarif.
- Privilegierter Zugriff auf Cloudflare. Weitere Informationen finden Sie unter Cloudflare.
Google Cloud -Storage-Bucket erstellen
- In der Google Cloud Console anmelden
Rufen Sie die Seite Cloud Storage-Buckets auf.
Klicken Sie auf Erstellen.
Konfigurieren Sie den Bucket:
- Name: Geben Sie einen eindeutigen Namen ein, der den Anforderungen für Bucket-Namen entspricht (z. B. cloudflare-waf).
- Speicherort für Daten auswählen: Wählen Sie einen Standort aus.
- Speicherklasse für Daten auswählen: Wählen Sie entweder eine Standardspeicherklasse für den Bucket oder Autoclass für die automatische Speicherklassenverwaltung aus.
- Zugriff auf Objekte steuern: Wählen Sie aus, dass die Verhinderung des öffentlichen Zugriffs nicht erzwungen werden soll, und wählen Sie ein Zugriffssteuerungsmodell für die Objekte Ihres Buckets aus.
- Speicherklasse: Wählen Sie die Speicherklasse nach Ihren Anforderungen aus (z. B. Standard).
Klicken Sie auf Erstellen.
Bucket-Berechtigungen für Cloudflare-IAM-Nutzer gewähren
- Gehen Sie in Google Cloudzu Storage > Browser > Bucket > Berechtigungen.
- Fügen Sie das Konto logpush@cloudflare-data.iam.gserviceaccount.com mit der Berechtigung „Storage-Objekt-Administrator“ hinzu.
Logpush-Job für WAF-Logs über die Cloudflare-Benutzeroberfläche erstellen
- Melden Sie sich in Cloudflare an.
- Gehen Sie zu Analytics & Logs > Logpush.
- Wählen Sie Logpush-Job erstellen aus.
- Wählen Sie unter Ziel auswählen die Option Google Cloud Storage aus.
- Geben Sie die folgenden Zieldetails ein:
- Bucket: Google Cloud Storage-Bucket-Name
- Pfad: Bucket-Speicherort im Speichercontainer
- Wählen Sie Logs in täglichen Unterordnern organisieren aus.
- Klicken Sie auf Weiter.
- Wählen Sie das Dataset Security (WAF) aus, um es in den Speicher zu übertragen.
- Konfigurieren Sie den Logpush-Job:
- Geben Sie den Jobnamen ein.
- Unter „Wenn Logs übereinstimmen“ können Sie die Ereignisse auswählen, die in Ihre Logs aufgenommen oder daraus entfernt werden sollen. Weitere Informationen finden Sie unter Filter. Diese Option ist nicht für alle Datasets verfügbar.
- In den Feldern Folgendes senden können Sie auswählen, ob alle Logs an Ihr Speicherziel gesendet werden sollen oder ob Sie nur bestimmte Logs senden möchten.
- Klicken Sie auf Senden.
Feeds einrichten
So konfigurieren Sie einen Feed:
- Rufen Sie die Einstellungen > Datenverwaltung > Feeds auf. Wenn Sie eine reine SIEM-Plattform verwenden, rufen Sie die Einstellungen > Feeds auf.
- Klicken Sie auf Neuen Feed hinzufügen.
- Klicken Sie auf der nächsten Seite auf Einzelnen Feed konfigurieren.
- Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B. Cloudflare WAF-Logs.
- Wählen Sie Google Cloud Storage V2 als Quelltyp aus.
- Wählen Sie Cloudflare WAF als Protokolltyp aus.
- Klicken Sie auf Dienstkonto abrufen.
- Klicken Sie auf Weiter.
Geben Sie Werte für die folgenden Eingabeparameter an:
- Storage-Bucket-URI: die Cloud Storage-URL.
- Optionen zum Löschen der Quelle: Wählen Sie die gewünschte Löschoption aus.
Klicken Sie auf Weiter.
Prüfen Sie die neue Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.
UDM-Zuordnungstabelle
| Logfeld | UDM-Zuordnung | Logik |
|---|---|---|
Action |
security_result.action_details |
Der Wert von Action aus dem Rohlog wird diesem UDM-Feld direkt zugewiesen. |
Action |
security_result.action |
Der Wert dieses Felds wird aus dem Feld Action im Rohlog abgeleitet. Wenn Action „allow“ ist, wird das UDM-Feld auf ALLOW gesetzt. Wenn Action „challengeSolved“, „jschallengeSolved“, „managedchallengenoninteractivesolved“ oder „managedchallengeinteractivesolved“ ist, wird das UDM-Feld auf ALLOW_WITH_MODIFICATION gesetzt. Wenn Action „drop“, „block“ oder „connectionclose“ ist, wird das UDM-Feld auf BLOCK gesetzt. Wenn Action „challengefailed“ oder „jschallengefailed“ ist, wird das UDM-Feld auf FAIL gesetzt. Andernfalls wird er auf UNKNOWN_ACTION gesetzt. |
ClientASN |
network.asn |
Der Wert von ClientASN aus dem Rohlog wird diesem UDM-Feld direkt zugewiesen, nachdem er in einen String konvertiert wurde. |
ClientASNDescription |
additional.fields.key |
Der Schlüssel ist statisch auf „ClientASNDescription“ festgelegt. |
ClientASNDescription |
additional.fields.value.string_value |
Der Wert von ClientASNDescription aus dem Rohlog wird diesem UDM-Feld direkt zugewiesen. |
ClientCountry |
principal.location.country_or_region |
Der Wert von ClientCountry aus dem Rohlog wird diesem UDM-Feld direkt zugewiesen. |
ClientIP |
principal.ip |
Der Wert von ClientIP aus dem Rohlog wird diesem UDM-Feld direkt zugewiesen. |
ClientRefererHost |
intermediary.hostname |
Der Wert von ClientRefererHost aus dem Rohlog wird diesem UDM-Feld direkt zugewiesen. |
ClientRefererPath |
network.http.referral_url |
Der Wert von ClientRefererPath aus dem Rohlog wird diesem UDM-Feld direkt zugewiesen. |
ClientRequestHost |
target.hostname |
Der Wert von ClientRequestHost aus dem Rohlog wird diesem UDM-Feld direkt zugewiesen. |
ClientRequestMethod |
network.http.method |
Der Wert von ClientRequestMethod aus dem Rohlog wird diesem UDM-Feld direkt zugewiesen. |
ClientRequestPath |
target.file.full_path |
Der Wert von ClientRequestPath aus dem Rohlog wird diesem UDM-Feld direkt zugewiesen. |
ClientRequestProtocol |
network.application_protocol |
Der Protokollteil von ClientRequestProtocol (z.B. „HTTP“ aus „HTTP/1.1“) wird mit Grok extrahiert, in Großbuchstaben umgewandelt und diesem UDM-Feld zugewiesen. |
ClientRequestUserAgent |
network.http.user_agent |
Der Wert von ClientRequestUserAgent aus dem Rohlog wird diesem UDM-Feld direkt zugewiesen. |
Datetime |
metadata.event_timestamp |
Der Wert von Datetime aus dem Rohlog wird als RFC 3339-Zeitstempel geparst und diesem UDM-Feld zugewiesen. |
EdgeColoCode |
additional.fields.key |
Der Schlüssel ist statisch auf „EdgeColoCode“ festgelegt. |
EdgeColoCode |
additional.fields.value.string_value |
Der Wert von EdgeColoCode aus dem Rohlog wird diesem UDM-Feld direkt zugewiesen. |
EdgeResponseStatus |
network.http.response_code |
Der Wert von EdgeResponseStatus aus dem Rohlog wird diesem UDM-Feld direkt zugewiesen und in eine Ganzzahl konvertiert. |
Kind |
metadata.product_event_type |
Der Wert von Kind aus dem Rohlog wird diesem UDM-Feld direkt zugewiesen. |
Metadata.filter |
target.resource.attribute.labels.value |
Der Wert von Metadata.filter aus dem Rohlog wird dem Feld value eines Labels in target.resource.attribute.labels zugewiesen. Der key für dieses Label ist statisch auf „Metadatenfilter“ festgelegt. |
Metadata.type |
target.resource.attribute.labels.value |
Der Wert von Metadata.type aus dem Rohlog wird dem Feld value eines Labels in target.resource.attribute.labels zugewiesen. Der key für dieses Label ist statisch auf „Metadatentyp“ festgelegt. Der Wert dieses Felds wird anhand des Vorhandenseins und der Werte von ClientIP, ClientRequestHost und app_protocol abgeleitet. Den Parsercode für die spezifische Logik finden Sie im Parsercode. Statisch auf „Cloudflare“ festgelegt. Statisch auf „Cloudflare log Aggregator“ festgelegt. Statisch auf „CLOUDFLARE_WAF“ festgelegt. |
RayID |
metadata.product_log_id |
Der Wert von RayID aus dem Rohlog wird diesem UDM-Feld direkt zugewiesen. |
RuleID |
security_result.rule_id |
Der Wert von RuleID aus dem Rohlog wird diesem UDM-Feld direkt zugewiesen. |
Source |
security_result.rule_name |
Der Wert von Source aus dem Rohlog wird diesem UDM-Feld direkt zugewiesen. |
timestamp |
metadata.event_timestamp, events.timestamp |
Der Wert von timestamp aus dem Rohlog wird diesen UDM-Feldern direkt zugewiesen. |
Änderungsprotokoll
Änderungsprotokoll für diesen Parser ansehen
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten