F5 Shape-Logs erfassen
Parserversion: 1.0
In diesem Dokument wird beschrieben, wie Sie F5 Shape-Logs mit Google Cloud Storage V2 in Google Security Operations aufnehmen.
F5 Distributed Cloud Bot Defense (früher Shape Security) schützt Anwendungen vor automatisierten Angriffen, indem böswillige Bots erkannt und abgewehrt werden. Bot Defense verwendet JavaScript und native Mobile SDKs, um Telemetriedaten von Clientbrowsern und Mobilgeräten zu erfassen. Diese Telemetriedaten werden untersucht, bevor Anfragen Ihre Anwendung erreichen. Der Dienst bietet integrierte Dashboards und Berichte, mit denen Sie detaillierte Informationen zum analysierten Traffic aufrufen können, einschließlich Sicherheitsereignissen, Zugriffs- und Audit-Logs.
Hinweis
Folgende Voraussetzungen müssen erfüllt sein:
- Eine Google SecOps-Instanz
- Ein GCP-Projekt mit aktivierter Cloud Storage API
- Berechtigungen zum Erstellen und Verwalten von GCS-Buckets
- Berechtigungen zum Verwalten von IAM-Richtlinien für GCS-Buckets
- Berechtigter Zugriff auf die F5 Distributed Cloud Console
- Ein F5 Distributed Cloud-Konto mit Zugriff auf den Dienst „Multi-Cloud Network Connect“ oder „Shared Configuration“
Google Cloud Storage-Bucket erstellen
- Gehen Sie zur Google Cloud Console.
- Wählen Sie Ihr Projekt aus oder erstellen Sie ein neues.
- Rufen Sie im Navigationsmenü Cloud Storage > Buckets auf.
- Klicken Sie auf Bucket erstellen.
Geben Sie die folgenden Konfigurationsdetails an:
Einstellung Wert Bucket benennen Geben Sie einen global eindeutigen Namen ein, z. B. f5-xc-logs.Standorttyp Wählen Sie die Option aus, die am besten zu Ihren Anforderungen passt (Region, Dual-Region, Multi-Region). Standort Wählen Sie den Standort aus (z. B. us-central1).Speicherklasse Standard (für Logs, auf die häufig zugegriffen wird, empfohlen). Zugriffskontrolle Einheitlich (empfohlen) Schutztools Optional: Aktivieren Sie die Objektversionsverwaltung oder die Aufbewahrungsrichtlinie. Klicken Sie auf Erstellen.
F5 Shape-API-Anmeldedaten generieren
F5 Distributed Cloud verwendet API-Zertifikate (mTLS) oder API-Tokens für die Authentifizierung. API-Zertifikate werden für eine erhöhte Sicherheit empfohlen.
API-Zertifikat erstellen
- Melden Sie sich in der F5 Distributed Cloud Console an.
- Wählen Sie auf der Startseite der Console Administration aus.
- Klicken Sie im linken Navigationsmenü auf Persönliche Verwaltung > Anmeldedaten.
- Klicken Sie auf Anmeldedaten hinzufügen.
- Geben Sie im Abschnitt Metadaten einen Namen für Ihr Zertifikat ein, z. B.
secops-integration. - Wählen Sie in der Liste Anmeldedatentyp die Option API-Zertifikat aus.
- Geben Sie ein Passwort ein und bestätigen Sie es im Feld Passwort bestätigen.
Wählen Sie in der Kalenderliste ein Ablaufdatum aus.
Klicken Sie auf Herunterladen, um das Zertifikat im
.p12-Dateiformat zu generieren und herunterzuladen.Speichern Sie die heruntergeladene Zertifikatsdatei und das Passwort sicher für die spätere Verwendung.
GCP Cloud-Anmeldedaten in F5 Distributed Cloud erstellen
Für F5 Distributed Cloud sind Google Cloud Anmeldedaten für Dienstkonten erforderlich, um Logs in Ihren GCS-Bucket zu schreiben.
Google Cloud Dienstkonto erstellen
- Wechseln Sie in der GCP Console zu IAM und Verwaltung > Dienstkonten.
- Klicken Sie auf Dienstkonto erstellen.
- Geben Sie die folgenden Konfigurationsdetails an:
- Name des Dienstkontos: Geben Sie
f5-xc-log-writer(oder den gewünschten Namen) ein. - Beschreibung des Dienstkontos: Geben Sie
Service account for F5 Distributed Cloud to write logs to GCSein.
- Name des Dienstkontos: Geben Sie
- Klicken Sie auf Erstellen und fortfahren.
- Gehen Sie im Bereich Diesem Dienstkonto Zugriff auf das Projekt erteilen so vor:
- Klicken Sie auf Rolle auswählen.
- Suchen Sie nach Storage Object Admin und wählen Sie die Rolle aus.
- Klicken Sie auf Weiter.
- Klicken Sie auf Fertig.
IAM-Berechtigungen für GCS-Bucket erteilen
- Rufen Sie Cloud Storage > Buckets auf.
- Klicken Sie auf den Namen Ihres Buckets (z. B.
f5-xc-logs). - Wechseln Sie zum Tab Berechtigungen.
- Klicken Sie auf Zugriff erlauben.
- Geben Sie die folgenden Konfigurationsdetails an:
- Hauptkonten hinzufügen: Geben Sie die E-Mail-Adresse des Dienstkontos ein (z. B.
f5-xc-log-writer@PROJECT_ID.iam.gserviceaccount.com). - Rollen zuweisen: Wählen Sie Storage Object Admin aus.
- Hauptkonten hinzufügen: Geben Sie die E-Mail-Adresse des Dienstkontos ein (z. B.
- Klicken Sie auf Speichern.
Dienstkontoschlüssel erstellen
- Wechseln Sie in der GCP Console zu IAM und Verwaltung > Dienstkonten.
- Suchen Sie das Dienstkonto (z. B.
f5-xc-log-writer) und klicken Sie darauf. - Rufen Sie den Tab Schlüssel auf.
- Klicken Sie auf Schlüssel hinzufügen > Neuen Schlüssel erstellen.
- Wählen Sie JSON als Schlüsseltyp aus.
- Klicken Sie auf Erstellen.
- Die JSON-Schlüsseldatei wird automatisch heruntergeladen. Speichern Sie diese Datei sicher.
Google Cloud Cloud-Anmeldedaten zu F5 Distributed Cloud hinzufügen
- Wählen Sie in der F5 Distributed Cloud Console auf der Startseite Multi-Cloud Network Connect oder Shared Configuration aus.
- Klicken Sie im linken Navigationsmenü auf Verwalten > Websiteverwaltung > Cloud-Anmeldedaten.
- Klicken Sie auf Cloud-Anmeldedaten hinzufügen.
- Geben Sie im Abschnitt Metadaten einen Namen ein, z. B.
gcp-secops-logs. - Wählen Sie in der Liste Cloud Credentials Type (Typ der Cloud-Anmeldedaten) die Option GCP Credentials (GCP-Anmeldedaten) aus.
- Klicken Sie im Bereich GCP Credentials (GCP-Anmeldedaten) auf Configure (Konfigurieren).
- Im Abschnitt Dienstkontoschlüssel:
- Wählen Sie in der Liste Secret-Typ die Option Blindfolded Secret aus.
- Wählen Sie in der Liste Aktion die Option Neues Geheimnis verbergen aus.
- Wählen Sie in der Liste Richtlinientyp die Option Eingebaut aus.
- Fügen Sie im Feld Secret to Blindfold (Secret für Blindfold) den gesamten Inhalt der heruntergeladenen JSON-Schlüsseldatei ein.
- Klicken Sie auf Übernehmen.
- Klicken Sie auf Speichern und beenden.
Globalen Log-Empfänger für GCS konfigurieren
Der globale Log-Empfänger von F5 Distributed Cloud streamt Logs alle 5 Minuten im NDJSON-Format (durch Zeilenumbruch getrenntes JSON) an GCS.
Globalen Log-Empfänger erstellen
- Wählen Sie in der F5 Distributed Cloud Console auf der Startseite Multi-Cloud Network Connect oder Shared Configuration aus.
- Für Multi-Cloud Network Connect: Rufen Sie Verwalten > Log-Verwaltung > Globaler Log-Empfänger auf.
- Gemeinsame Konfiguration: Rufen Sie Verwalten > Global Log Receiver auf.
- Klicken Sie auf Globalen Log-Empfänger hinzufügen.
- Geben Sie im Abschnitt Metadaten einen Namen ein, z. B.
secops-gcs-receiver. - Fügen Sie optional Labels und eine Beschreibung hinzu.
Wählen Sie in der Liste Logtyp die Logtypen aus, die Sie erfassen möchten:
- Anfragelogs: HTTP-Zugriffsprotokolle von Load Balancern
- Sicherheitsereignisse: Sicherheitsereignisse für Bot Defense und WAF
- Audit-Logs: Konfigurations- und administrative Audit-Logs
- DNS-Anfragelogs: DNS-Abfragelogs
Gehen Sie in der Liste Log Message Selection (Auswahl von Log-Nachrichten) so vor:
- Wenn Sie den Dienst Multi-Cloud Network Connect verwenden, wählen Sie Select logs from current namespace (System-Namespace) aus.
- Wenn Sie den Dienst Gemeinsame Konfiguration verwenden, wählen Sie eine der folgenden Optionen aus:
- Logs aus dem aktuellen Namespace auswählen: Sendet nur Logs aus dem freigegebenen Namespace.
- Logs aus allen Namespaces auswählen: Sendet Logs aus allen Namespaces.
- Logs in bestimmten Namespaces auswählen: Geben Sie bestimmte Namespace-Namen ein und klicken Sie auf Element hinzufügen, um weitere hinzuzufügen.
Wählen Sie in der Liste Receiver Configuration (Empfängerkonfiguration) die Option GCP Bucket aus.
Geben Sie im Abschnitt GCP-Bucket die folgende Konfiguration an:
- GCP-Bucket-Name: Geben Sie den Namen Ihres GCS-Buckets ein (z. B.
f5-xc-logs). - GCP Cloud Credentials (GCP-Cloud-Anmeldedaten): Wählen Sie in der Liste die von Ihnen erstellten Cloud-Anmeldedaten aus (z. B.
gcp-secops-logs).
- GCP-Bucket-Name: Geben Sie den Namen Ihres GCS-Buckets ein (z. B.
Erweiterte Einstellungen konfigurieren (optional)
- Klicken Sie auf den Umschalter Erweiterte Felder anzeigen.
Konfigurieren Sie im Abschnitt Batch-Optionen optional Folgendes:
- Batch Timeout Options (Batch-Zeitlimitoptionen): Wählen Sie Timeout Seconds (Zeitlimit in Sekunden) aus und geben Sie einen Wert ein (Standard:
300Sekunden). - Batch Max Events (Maximale Anzahl von Ereignissen pro Batch): Wählen Sie Max Events (Maximale Anzahl von Ereignissen) aus und geben Sie optional einen Wert zwischen 32 und 2.000 ein.
- Batch Bytes: Wählen Sie Max Bytes aus und geben Sie einen Wert zwischen 4.096 und 1.048.576 ein (Standard:
10485760Byte / 10 MB).
- Batch Timeout Options (Batch-Zeitlimitoptionen): Wählen Sie Timeout Seconds (Zeitlimit in Sekunden) aus und geben Sie einen Wert ein (Standard:
Konfiguration abschließen und testen
- Klicken Sie auf Speichern und beenden, um den globalen Log-Empfänger zu erstellen.
- Suchen Sie in der Liste Global Log Receiver (Globaler Log-Empfänger) nach Ihrem Empfänger (z. B.
secops-gcs-receiver). - Klicken Sie in der Spalte Aktionen auf die drei Punkte … und wählen Sie Verbindung testen aus.
Warten Sie, bis der Test abgeschlossen ist. Eine Erfolgsmeldung weist darauf hin, dass die Verbindung funktioniert.
Prüfen, ob Logs in GCS geschrieben werden:
- Rufen Sie in der GCP Console Cloud Storage > Buckets auf.
- Klicken Sie auf den Namen Ihres Buckets (z. B.
f5-xc-logs). - Innerhalb von 5 bis 10 Minuten sollten Ordner mit der folgenden Struktur erstellt werden:
- Tagesordner:
YYYY-MM-DD/ - Stündlicher Unterordner:
YYYY-MM-DD/HH/ - Logdateien:
YYYY-MM-DD/HH/logs_YYYYMMDDHHMMSS.ndjson.gz
- Tagesordner:
Zulassungsliste für die Firewall konfigurieren
Für F5 Distributed Cloud müssen bestimmte IP-Bereiche in Ihrer Firewall für die Logübermittlung zugelassen werden.
Fügen Sie die folgenden IP-Adressbereiche der Zulassungsliste Ihrer Firewall hinzu:
193.16.236.64/29185.160.8.152/29
Google SecOps-Dienstkonto abrufen
Google SecOps verwendet ein eindeutiges Dienstkonto, um Daten aus Ihrem GCS-Bucket zu lesen. Sie müssen diesem Dienstkonto Zugriff auf Ihren Bucket gewähren.
E‑Mail-Adresse des Dienstkontos abrufen
- Rufen Sie die SIEM-Einstellungen > Feeds auf.
- Klicken Sie auf Neuen Feed hinzufügen.
- Klicken Sie auf Einzelnen Feed konfigurieren.
- Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B.
F5 Distributed Cloud Bot Defense. - Wählen Sie Google Cloud Storage V2 als Quelltyp aus.
- Wählen Sie F5_SHAPE als Log type (Protokolltyp) aus.
Klicken Sie auf Dienstkonto abrufen. Es wird eine eindeutige E-Mail-Adresse für das Dienstkonto angezeigt, z. B.:
secops-12345678@secops-gcp-prod.iam.gserviceaccount.comKopieren Sie die E-Mail-Adresse, um sie im nächsten Schritt zu verwenden.
Klicken Sie auf Weiter.
Geben Sie Werte für die folgenden Eingabeparameter an:
Storage-Bucket-URL: Geben Sie den GCS-Bucket-URI mit dem Präfixpfad ein:
gs://f5-xc-logs/- Ersetzen Sie
f5-xc-logsdurch den Namen Ihres tatsächlichen GCS-Buckets. - Wenn Sie im globalen Log-Empfänger ein bestimmtes Präfix konfiguriert haben, fügen Sie es in den Pfad ein (z. B.
gs://f5-xc-logs/bot-defense/).
- Ersetzen Sie
Option zum Löschen der Quelle: Wählen Sie die gewünschte Option zum Löschen aus:
- Nie: Löscht nach Übertragungen nie Dateien (empfohlen für Tests).
- Übertragene Dateien löschen: Dateien werden nach der erfolgreichen Übertragung gelöscht.
Übertragene Dateien und leere Verzeichnisse löschen: Löscht Dateien und leere Verzeichnisse nach der erfolgreichen Übertragung.
Maximales Dateialter: Dateien einschließen, die in den letzten Tagen geändert wurden (Standardwert: 180 Tage).
Asset-Namespace: Der Asset-Namespace.
Aufnahmelabels: Das Label, das auf die Ereignisse aus diesem Feed angewendet werden soll.
Klicken Sie auf Weiter.
Prüfen Sie die neue Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.
Dem Google SecOps-Dienstkonto IAM-Berechtigungen gewähren
Das Google SecOps-Dienstkonto benötigt die Rolle Storage Object Viewer für Ihren GCS-Bucket.
- Rufen Sie Cloud Storage > Buckets auf.
- Klicken Sie auf den Namen Ihres Buckets (z. B.
f5-xc-logs). - Wechseln Sie zum Tab Berechtigungen.
- Klicken Sie auf Zugriff erlauben.
- Geben Sie die folgenden Konfigurationsdetails an:
- Hauptkonten hinzufügen: Fügen Sie die E‑Mail-Adresse des Google SecOps-Dienstkontos ein.
- Rollen zuweisen: Wählen Sie Storage Object Viewer aus.
- Klicken Sie auf Speichern.
UDM-Zuordnungstabelle
| Logfeld | UDM-Zuordnung | Logik |
|---|---|---|
| msg.requestHeaders.Proxy-Client-IP, msg.requestHeaders.WF-Forwarded-For, msg.requestHeaders.X-Forwarded-For, msg.requestHeaders.wl-proxy-client-ip, msg.hashedUserAgent, msg.transactionId, msg.hashedUsername, msg.dcgShapeFailedOn, ShapeShifterId, eventType, eventId, latRequest, latResponse, latTotal, latRspWait, count, latEccWait | additional.fields | Zusammengeführt aus Labels, die aus verschiedenen Feldern erstellt wurden |
| Vermittler | Vermittler | Wert wird direkt kopiert, wenn er nicht leer ist |
| Beschreibung | metadata.description | Wert direkt kopiert |
| target, has_principal_machine | metadata.event_type | Auf NETWORK_HTTP setzen, wenn target != "", andernfalls STATUS_UPDATE, wenn has_principal_machine == true, andernfalls GENERIC_EVENT |
| App | network.application_protocol | Wert in Großbuchstaben |
| requestMethod, msg.method | network.http.method | Wert aus „requestMethod“, falls nicht leer, andernfalls „msg.method“ |
| requestClientApplication, msg.requestHeaders.User-Agent | network.http.parsed_user_agent | Wert aus „requestClientApplication“, falls nicht leer, andernfalls „msg.requestHeaders.User-Agent“, in geparsten User-Agent konvertiert |
| requestContext, msg.requestHeaders.Referer | network.http.referral_url | Wert aus „requestContext“, falls nicht leer, andernfalls „msg.requestHeaders.Referer“ |
| msg.sseResponseCode, prCode | network.http.response_code | Wert aus „msg.sseResponseCode“, falls nicht leer, andernfalls „prCode“, in eine Ganzzahl konvertiert |
| requestClientApplication, msg.requestHeaders.User-Agent | network.http.user_agent | Wert aus „requestClientApplication“, falls nicht leer, andernfalls „msg.requestHeaders.User-Agent“ |
| requestHeader.x-shape-src-virtual | observer.ip | Wert direkt kopiert |
| Prinzipal | Prinzipal | Wert direkt kopiert |
| msg.host | principal.asset.hostname | Wert direkt kopiert |
| src, msg.src, msg.trueClientIP, requestHeader.X-Forwarded-For | principal.asset.ip | Wert aus „src“, falls nicht leer, andernfalls „msg.src“, andernfalls „msg.trueClientIP“, andernfalls erste IP aus „X-Forwarded-For“, falls ungleich „src“ |
| msg.host | principal.hostname | Wert direkt kopiert |
| src, msg.src, msg.trueClientIP, requestHeader.X-Forwarded-For | principal.ip | Wert aus „src“, falls nicht leer, andernfalls „msg.src“, andernfalls „msg.trueClientIP“, andernfalls erste IP aus „X-Forwarded-For“, falls ungleich „src“ |
| msg.requestHeaders | principal.resource.attribute.labels | Zusammengeführt aus Schlüssel/Wert-Paaren in msg.requestHeaders |
| msg.uri | principal.url | Wert direkt kopiert |
| security_result | security_result | Wert direkt kopiert |
| deviceExternalId | security_result.about.asset_id | Wert direkt kopiert |
| flowLabel, agentLabel, requestHeader.Content-Length, requestHeader.Content-Type, requestHeader.Accept, requestHeader.Accept-Encoding, browserType, accountInfo, requestHeader.Via, asn, tid, ctag, requestHeader.Cache-Control, transactionResult | security_result.about.labels | Zusammengeführt aus Labels, die aus verschiedenen Feldern erstellt wurden |
| act, msg.transactionResult | security_result.action | Auf ALLOW gesetzt, wenn „act“ mit „PASS“ übereinstimmt und „isAttack“ wahr ist, andernfalls UNKNOWN_ACTION; oder ALLOW, wenn „msg.transactionResult“ gleich „Success“ ist, BLOCK, wenn „Failure“ |
| act, msg.transactionResult | security_result.action_details | Wert aus „act“, falls nicht leer, andernfalls „msg.transactionResult“ |
| die Ausprägung | security_result.severity | Auf „HIGH“ setzen, wenn „Error“, „error“ oder „warning“; auf „CRITICAL“ setzen, wenn „critical“; auf „MEDIUM“ setzen, wenn „notice“; auf „LOW“ setzen, wenn „information“, „info“ oder „INFO“ |
| die Ausprägung | security_result.severity_details | Wert direkt kopiert |
| attackCause | security_result.threat_name | Wert direkt kopiert |
| Ziel | Ziel | Wert direkt kopiert |
| appName | target.application | Wert direkt kopiert |
| dst, msg.dst | target.asset.ip | Wert aus „dst“, falls nicht leer, andernfalls „msg.dst“ |
| dhost | target.hostname | Wert direkt kopiert |
| dst, msg.dst | target.ip | Wert aus „dst“, falls nicht leer, andernfalls „msg.dst“ |
| countryName | target.location.country_or_region | Wert direkt kopiert |
| dpt | target.port | In Ganzzahl konvertiert |
| msg.responseHeaders | target.resource.attribute.labels | Zusammengeführt aus Schlüssel/Wert-Paaren in msg.responseHeaders |
| Anfrage | target.url | Wert direkt kopiert |
| requestHeader.X-Forwarded-For | intermediary.ip | Auf nachfolgende IPs aus dem X-Forwarded-For-Array festgelegt |
| metadata.product_name | Auf „Form“ festgelegt | |
| metadata.vendor_name | Auf „F5“ festgelegt | |
requestHeaders_id_array.User-Agent |
network.http.user_agent |
Aus dem Änderungsprotokoll zugeordnet |
requestHeaders_id_array.Referer |
network.http.referral_url |
Aus dem Änderungsprotokoll zugeordnet |
requestHeaders_id_array.Proxy-Client-IP", "requestHeaders_id_array.WF-Forwarded-For", "requestHeaders_id_array.X-Forwarded-For", and "requestHeaders_id_array.wl-proxy-client-ip |
additional.fields |
Aus dem Änderungsprotokoll zugeordnet |
Änderungsprotokoll
Änderungsprotokoll für diesen Parser ansehen
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten