F5 Shape-Logs erfassen
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 es schädliche Bots identifiziert und abwehrt. 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, in denen Sie detaillierte Informationen zum analysierten Traffic aufrufen können, einschließlich Sicherheitsereignissen, Zugriffs- und Audit-Logs.
Hinweise
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
- Privilegierter 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 je nach Bedarf „Region“, „Dual-Region“ oder „Multi-Region“ aus. Standort Wählen Sie den Speicherort aus (z. B. us-central1).Speicherklasse Standard (empfohlen für Logs, auf die häufig zugegriffen wird). Zugriffskontrolle Einheitlich (empfohlen). Schutzmaßnahmen 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 erhöhte Sicherheit empfohlen.
API-Zertifikat erstellen
- Melden Sie sich in der F5 Distributed Cloud Console an.
- Wählen Sie auf der Startseite der Konsole Administration aus.
- Klicken Sie im Navigationsmenü links auf Personal Management > Credentials (Personalverwaltung > 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 Credential Type (Anmeldedatentyp) die Option API Certificate (API-Zertifikat) aus.
- Geben Sie ein Passwort ein und bestätigen Sie es im Feld Passwort bestätigen.
Wählen Sie ein Ablaufdatum aus der Kalenderliste 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.
Google Cloud-Anmeldedaten in F5 Distributed Cloud erstellen
Für F5 Distributed Cloud sind Google Cloud Dienstkontoanmeldedaten erforderlich, um Logs in Ihren GCS-Bucket zu schreiben.
Google Cloud Dienstkonto erstellen
- Wechseln Sie in der GCP Console zu IAM & Verwaltung > Dienstkonten.
- Klicken Sie auf Dienstkonto erstellen.
- Geben Sie die folgenden Konfigurationsdetails an:
- Name des Dienstkontos: Geben Sie
f5-xc-log-writer(oder Ihren bevorzugten 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.
- Im Abschnitt Diesem Dienstkonto Zugriff auf das Projekt erteilen:
- Klicken Sie auf Rolle auswählen.
- Suchen Sie nach Storage-Objekt-Administrator 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-Objekt-Administrator 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 & 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 Navigationsmenü links 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 Type (Geheimnistyp) die Option Blindfolded Secret (Geheimnis mit verbundenen Augen) aus.
- Wählen Sie in der Liste Aktion die Option Neues Secret verbergen aus.
- Wählen Sie in der Liste Policy Type (Richtlinientyp) die Option Built-in (Integriert) aus.
- Fügen Sie im Feld Secret to Blindfold (Geheimnis für Blindfold) den gesamten Inhalt der heruntergeladenen JSON-Schlüsseldatei ein.
- Klicken Sie auf Übernehmen.
- Klicken Sie auf Speichern und beenden.
Global Log Receiver 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 > Globaler Log-Empfänger 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 Log Type (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: Logs von DNS-Abfragen
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 Shared Configuration (Gemeinsame Konfiguration) verwenden, wählen Sie eine der folgenden Optionen aus:
- Logs aus dem aktuellen Namespace auswählen: Es werden nur Logs aus dem freigegebenen Namespace gesendet.
- Logs aus allen Namespaces auswählen: Sendet Logs aus allen Namespaces.
- Logs in bestimmten Namespaces auswählen: Geben Sie bestimmte Namespacenamen 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 (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-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 (Optionen für Zeitüberschreitung bei Batch): Wählen Sie Timeout Seconds (Zeitüberschreitung 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 (Batch-Byte): Wählen Sie Max Bytes (Max. Byte) aus und geben Sie einen Wert zwischen 4.096 und 1.048.576 ein (Standard:
10485760Byte / 10 MB).
- Batch Timeout Options (Optionen für Zeitüberschreitung bei Batch): Wählen Sie Timeout Seconds (Zeitüberschreitung 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 Logempfänger) nach Ihrem Empfänger (z. B.
secops-gcs-receiver). - Klicken Sie in der Spalte Aktionen auf das Dreipunkt-Menü ... 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 Sie, 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/ - Protokolldateien:
YYYY-MM-DD/HH/logs_YYYYMMDDHHMMSS.ndjson.gz
- Tagesordner:
Zulassungsliste für die Firewall konfigurieren
Für die Protokollübermittlung in F5 Distributed Cloud müssen bestimmte IP-Bereiche in Ihrer Firewall 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 Logtyp 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 Löschoption aus:
- Nie: Es werden nach Übertragungen nie Dateien gelöscht (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.
Höchstalter für Dateien: 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-Objekt-Betrachter 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-Objekt-Betrachter 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 auf STATUS_UPDATE, wenn has_principal_machine == true, andernfalls auf 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 setzen, wenn „act“ mit „PASS“ übereinstimmt und „isAttack“ „true“ ist, andernfalls UNKNOWN_ACTION; oder ALLOW, wenn „msg.transactionResult“ „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 von „dst“, falls nicht leer, andernfalls „msg.dst“ |
| dhost | target.hostname | Wert direkt kopiert |
| dst, msg.dst | target.ip | Wert von „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 festlegen |
| metadata.product_name | Auf „Form“ festgelegt | |
| metadata.vendor_name | Auf „F5“ festgelegt |
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten