Cloudflare-WAF-Protokolle erfassen
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:
- Melden Sie sich im Cloudflare-Dashboard an.
- Klicken Sie auf die Website, die überwacht werden soll.
- Klicke auf API-Schlüssel abrufen, um den Authentifizierungsschlüssel zu erhalten.
- Wählen Sie API-Token aus.
- Klicken Sie auf Token erstellen.
- Geben Sie auf der Seite Token erstellen die folgenden Werte an:
- Geben Sie im Feld Tokenname den Tokennamen ein.
- Führen Sie im Abschnitt Berechtigungen die folgenden Schritte aus:
- Wählen Sie in der ersten, zweiten und dritten Liste jeweils Zone, Protokolle und Lesen aus.
- Klicken Sie auf Weitere hinzufügen. Wählen Sie in der ersten, zweiten und dritten Liste jeweils Zone, Analytics und Lesen aus.
- Klicken Sie auf Weitere hinzufügen. Wählen Sie in der ersten, zweiten und dritten Liste jeweils Zone, Firewall-Dienste und Lesen aus.
- Wählen Sie im Bereich Zonenressourcen in der ersten und zweiten Liste jeweils Einbeziehen und Alle Zonen aus.
- Klicken Sie auf Weiter zur Zusammenfassung.
- Klicken Sie auf Token erstellen.
- Kopieren Sie das angezeigte Token. Es ist erforderlich, um den Google Security Operations-Feed zu konfigurieren.
Cloudflare WAF über das Cloudflare-Dashboard konfigurieren
- Melden Sie sich im Cloudflare-Dashboard an.
- Klicken Sie auf die Website, die überwacht werden soll.
- Gehen Sie zu Analysen und Protokolle > 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 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.
- 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.
- Wählen Sie das Dataset aus, das an den Speicherdienst gesendet werden soll.
- 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.
- 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
- Wählen Sie SIEM-Einstellungen > Feeds aus.
- Klicken Sie auf Neu hinzufügen.
- Geben Sie einen eindeutigen Namen für den Feednamen ein.
- Wählen Sie Google Cloud Storage als Quelltyp aus.
- Wählen Sie Cloudflare WAF als Logtyp aus.
- Klicken Sie auf Dienstkonto abrufen. Google Security Operations stellt ein eindeutiges Dienstkonto bereit, das Google Security Operations zum Aufnehmen von Daten verwendet.
- 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.
- Klicken Sie auf Weiter.
- Konfigurieren Sie die folgenden Eingabeparameter:
- URI des Speicher-Buckets
- URI ist ein
- Option zum Löschen von Quellen
- 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