WordPress-CMS-Logs erfassen
Übersicht
Dieser Parser extrahiert WordPress CMS-Logs aus JSON- oder Nur-Text-formatierten Nachrichten. Es verarbeitet sowohl JSON- als auch Nicht-JSON-formatierte Logs, parst relevante Felder und ordnet sie dem UDM zu, einschließlich Nutzerdetails, Netzwerkinformationen, Ressourcenattributen und Details zu Sicherheitsergebnissen. Der Parser führt auch mehrere Datentransformationen durch, z. B. das Konvertieren von Datentypen, das Zusammenführen von Feldern und die Verarbeitung bestimmter Logmuster für Kubernetes und andere Ressourcen.
Hinweise
Prüfen Sie, ob die folgenden Voraussetzungen erfüllt sind:
- Google SecOps-Instanz.
- Privilegierter Zugriff auf eine WordPress-Website.
- Ein Plug-in, das Webhook-Funktionen ermöglicht (z. B. WP Webhooks).
Feeds einrichten
Es gibt zwei verschiedene Einstiegspunkte zum Einrichten von Feeds in der Google SecOps-Plattform:
- SIEM-Einstellungen > Feeds
- Content Hub> Content-Pakete
Feeds über „SIEM-Einstellungen“ > „Feeds“ einrichten
So konfigurieren Sie einen Feed:
- Rufen Sie die SIEM-Einstellungen > Feeds auf.
- Klicken Sie auf Neuen Feed hinzufügen.
- Klicken Sie auf der nächsten Seite auf Einen einzelnen Feed konfigurieren.
- Geben Sie im Feld Feed name (Feedname) einen Namen für den Feed ein, z. B. Wordpress CMS Logs (Wordpress-CMS-Logs).
- Wählen Sie Webhook als Quelltyp aus.
- Wählen Sie WordPress als Logtyp aus.
- Klicken Sie auf Weiter.
- Optional: Geben Sie Werte für die folgenden Eingabeparameter an:
- Trennzeichen für Aufteilung: Das Trennzeichen, das zum Trennen von Logzeilen verwendet wird, z. B.
\n
.
- Trennzeichen für Aufteilung: Das Trennzeichen, das zum Trennen von Logzeilen verwendet wird, z. B.
- Klicken Sie auf Weiter.
- Prüfen Sie die Feedkonfiguration auf dem Bildschirm Finalize (Abschließen) und klicken Sie dann auf Submit (Senden).
- Klicken Sie auf Geheimen Schlüssel generieren, um einen geheimen Schlüssel zur Authentifizierung dieses Feeds zu generieren.
- Kopieren Sie den geheimen Schlüssel und speichern Sie ihn. Sie können diesen geheimen Schlüssel nicht noch einmal aufrufen. Bei Bedarf können Sie einen neuen geheimen Schlüssel generieren. Dadurch wird der vorherige geheime Schlüssel jedoch ungültig.
- Kopieren Sie auf dem Tab Details die Feed-Endpunkt-URL aus dem Feld Endpunktinformationen. Sie müssen diese Endpunkt-URL in Ihrer Clientanwendung angeben.
- Klicken Sie auf Fertig.
Feeds über den Content Hub einrichten
Geben Sie Werte für die folgenden Felder an:
- Trennzeichen für Aufteilung: Das Trennzeichen, das zum Trennen von Logzeilen verwendet wird, z. B.
\n
.
Erweiterte Optionen
- Feedname: Ein vorausgefüllter Wert, der den Feed identifiziert.
- Quelltyp: Methode, die zum Erfassen von Logs in Google SecOps verwendet wird.
- Asset-Namespace: Der Namespace, der dem Feed zugeordnet ist.
Aufnahmelabels: Labels, die auf alle Ereignisse aus diesem Feed angewendet werden.
Klicken Sie auf Geheimen Schlüssel generieren, um einen geheimen Schlüssel zur Authentifizierung dieses Feeds zu generieren.
Kopieren Sie den geheimen Schlüssel und speichern Sie ihn. Sie können diesen geheimen Schlüssel nicht noch einmal aufrufen. Bei Bedarf können Sie einen neuen geheimen Schlüssel generieren. Dadurch wird der vorherige geheime Schlüssel jedoch ungültig.
Kopieren Sie auf dem Tab Details die Feed-Endpunkt-URL aus dem Feld Endpunktinformationen. Sie müssen diese Endpunkt-URL in Ihrer Clientanwendung angeben.
API-Schlüssel für den Webhook-Feed erstellen
Rufen Sie die Google Cloud Console > Anmeldedaten auf.
Klicken Sie auf Anmeldedaten erstellen und wählen Sie anschließend API-Schlüssel aus.
Schränken Sie den API-Schlüsselzugriff auf die Google Security Operations API ein.
Endpunkt-URL angeben
- Geben Sie in Ihrer Clientanwendung die HTTPS-Endpunkt-URL an, die im Webhook-Feed bereitgestellt wird.
Aktivieren Sie die Authentifizierung, indem Sie den API-Schlüssel und den geheimen Schlüssel als Teil des benutzerdefinierten Headers im folgenden Format angeben:
X-goog-api-key = API_KEY X-Webhook-Access-Key = SECRET
Empfehlung: Geben Sie den API-Schlüssel als Header an, anstatt ihn in der URL anzugeben. Wenn Ihr Webhook-Client keine benutzerdefinierten Headern unterstützt, können Sie den API-Schlüssel und den geheimen Schlüssel mit Suchparametern im folgenden Format angeben:
ENDPOINT_URL?key=API_KEY&secret=SECRET
Ersetzen Sie Folgendes:
ENDPOINT_URL
: Die URL des Feed-Endpunkts.API_KEY
: Der API-Schlüssel für die Authentifizierung bei Google Security Operations.SECRET
: Der geheime Schlüssel, den Sie zur Authentifizierung des Feeds generiert haben.
WordPress-Webhook konfigurieren
- Installieren und aktivieren Sie das WP Webhooks-Plug-in (oder das von Ihnen ausgewählte Webhook-Plug-in) über das WordPress-Plug-in-Verzeichnis.
- Rufen Sie im WordPress-Administratormenü das Untermenü WP Webhooks auf. Es befindet sich in der Regel unter „Einstellungen“.
- Klicken Sie in der oberen Menüleiste auf Daten senden.
- Wählen Sie die WordPress-Aktion aus, die den Webhook auslösen soll. Gängige Beispiele sind publish_post (wenn ein neuer Beitrag veröffentlicht wird), user_register (wenn sich ein neuer Nutzer registriert) oder comment_post (wenn ein neuer Kommentar gepostet wird). Das hängt von den Daten ab, die Sie auswählen und an Google SecOps senden.
- Klicken Sie auf Webhook-URL hinzufügen.
- Webhook konfigurieren:
- Name: Geben Sie Ihrem Webhook einen aussagekräftigen Namen, z. B. Google SecOps Feed.
- Webhook URL (Webhook-URL): Fügen Sie die Google SecOps-Endpunkt-URL ein.
- Klicken Sie auf Webhook speichern.
UDM-Zuordnungstabelle
Logfeld | UDM-Zuordnung | Logik |
---|---|---|
ClientIP |
principal.ip |
Die IP-Adresse des Clients wird aus dem Feld ClientIP im Rohlog extrahiert. |
Code |
target.resource.attribute.labels.key |
Der Wert „Code“ wird als Schlüssel im target.resource.attribute.labels -Objekt zugewiesen. |
Code |
target.resource.attribute.labels.value |
Der Wert des Felds Code aus dem Rohlog wird als Wert im target.resource.attribute.labels -Objekt zugewiesen. |
CurrentUserID |
target.user.userid |
Der CurrentUserID aus dem Rohlog wird in einen String konvertiert und dem Feld target.user.userid zugeordnet. |
EditUserLink |
target.url |
Der EditUserLink aus dem Rohlog wird dem Feld target.url zugeordnet. |
EventType |
metadata.product_event_type |
Der EventType aus dem Rohlog wird dem Feld metadata.product_event_type zugeordnet. |
FirstName |
target.user.first_name |
Der FirstName aus dem Rohlog wird dem Feld target.user.first_name zugeordnet. |
insertId |
metadata.product_log_id |
Der insertId aus dem Rohlog wird dem Feld metadata.product_log_id zugeordnet. |
labels.compute.googleapis.com/resource_name |
additional.fields.key |
Der Wert „Resource Name“ (Ressourcenname) wird als Schlüssel im additional.fields -Objekt zugewiesen. |
labels.compute.googleapis.com/resource_name |
additional.fields.value.string_value |
Der Wert von labels.compute.googleapis.com/resource_name aus dem Rohlog wird als Stringwert im additional.fields -Objekt zugewiesen. |
labels.k8s-pod/app_kubernetes_io/instance |
target.resource.attribute.labels.key |
Der Wert „Kubernetes IO Instance“ wird als Schlüssel im target.resource.attribute.labels -Objekt zugewiesen. |
labels.k8s-pod/app_kubernetes_io/instance |
target.resource.attribute.labels.value |
Der Wert von labels.k8s-pod/app_kubernetes_io/instance aus dem Rohlog wird als Wert im target.resource.attribute.labels -Objekt zugewiesen. |
labels.k8s-pod/app_kubernetes_io/managed-by |
target.resource.attribute.labels.key |
Der Wert „Kubernetes IO Instance Manager“ wird als Schlüssel im target.resource.attribute.labels -Objekt zugewiesen. |
labels.k8s-pod/app_kubernetes_io/managed-by |
target.resource.attribute.labels.value |
Der Wert von labels.k8s-pod/app_kubernetes_io/managed-by aus dem Rohlog wird als Wert im target.resource.attribute.labels -Objekt zugewiesen. |
labels.k8s-pod/app_kubernetes_io/name |
target.resource.attribute.labels.key |
Der Wert „Kubernetes IO Instance Name“ wird als Schlüssel im target.resource.attribute.labels -Objekt zugewiesen. |
labels.k8s-pod/app_kubernetes_io/name |
target.resource.attribute.labels.value |
Der Wert von labels.k8s-pod/app_kubernetes_io/name aus dem Rohlog wird als Wert im target.resource.attribute.labels -Objekt zugewiesen. |
labels.k8s-pod/controller-revision-hash |
target.resource.attribute.labels.key |
Der Wert „Controller Revision Hash“ wird als Schlüssel im target.resource.attribute.labels -Objekt zugewiesen. |
labels.k8s-pod/controller-revision-hash |
target.resource.attribute.labels.value |
Der Wert von labels.k8s-pod/controller-revision-hash aus dem Rohlog wird als Wert im target.resource.attribute.labels -Objekt zugewiesen. |
labels.k8s-pod/helm_sh/chart |
target.resource.attribute.labels.key |
Der Wert „Kubernetes IO Instance Manager SH“ wird als Schlüssel im target.resource.attribute.labels -Objekt zugewiesen. |
labels.k8s-pod/helm_sh/chart |
target.resource.attribute.labels.value |
Der Wert von labels.k8s-pod/helm_sh/chart aus dem Rohlog wird als Wert im target.resource.attribute.labels -Objekt zugewiesen. |
labels.k8s-pod/k8s-app |
target.resource.attribute.labels.key |
Der Wert „Application“ wird als Schlüssel im target.resource.attribute.labels -Objekt zugewiesen. |
labels.k8s-pod/k8s-app |
target.resource.attribute.labels.value |
Der Wert von labels.k8s-pod/k8s-app aus dem Rohlog wird als Wert im target.resource.attribute.labels -Objekt zugewiesen. |
labels.k8s-pod/pod-template-generation |
target.resource.attribute.labels.key |
Der Wert „Pod Template Generation“ wird als Schlüssel im target.resource.attribute.labels -Objekt zugewiesen. |
labels.k8s-pod/pod-template-generation |
target.resource.attribute.labels.value |
Der Wert von labels.k8s-pod/pod-template-generation aus dem Rohlog wird als Wert im target.resource.attribute.labels -Objekt zugewiesen. |
labels.k8s-pod/pod-template-hash |
target.resource.attribute.labels.key |
Der Wert „Pod Template Hash“ wird als Schlüssel im target.resource.attribute.labels -Objekt zugewiesen. |
labels.k8s-pod/pod-template-hash |
target.resource.attribute.labels.value |
Der Wert von labels.k8s-pod/pod-template-hash aus dem Rohlog wird als Wert im target.resource.attribute.labels -Objekt zugewiesen. |
LastName |
target.user.last_name |
Der LastName aus dem Rohlog wird dem Feld target.user.last_name zugeordnet. |
logName |
target.resource.attribute.labels.key |
Der Wert „Log Name“ wird als Schlüssel im target.resource.attribute.labels -Objekt zugewiesen. |
logName |
target.resource.attribute.labels.value |
Der Wert des Felds logName aus dem Rohlog wird als Wert im target.resource.attribute.labels -Objekt zugewiesen. |
receiveTimestamp |
metadata.event_timestamp |
Der receiveTimestamp aus dem Rohlog wird geparst und dem Feld metadata.event_timestamp zugeordnet. |
resource.labels.cluster_name |
additional.fields.key |
Der Wert „Cluster Name“ wird als Schlüssel im additional.fields -Objekt zugewiesen. |
resource.labels.cluster_name |
additional.fields.value.string_value |
Der Wert von resource.labels.cluster_name aus dem Rohlog wird als Stringwert im additional.fields -Objekt zugewiesen. |
resource.labels.cluster_name |
target.resource.resource_type |
Wenn resource.labels.cluster_name vorhanden ist, wird der Wert „CLUSTER“ target.resource.resource_type zugewiesen. |
resource.labels.container_name |
metadata.product_event_type |
Wenn resource.type „k8s_container“ ist, wird der Wert von resource.labels.container_name zusammen mit resource.labels.namespace_name verwendet, um metadata.product_event_type zu erstellen. |
resource.labels.container_name |
target.resource.name |
Der Wert von resource.labels.container_name aus dem Rohlog wird dem Feld target.resource.name zugewiesen. |
resource.labels.location |
target.location.country_or_region |
Der Wert von resource.labels.location aus dem Rohlog wird dem Feld target.location.country_or_region zugewiesen. |
resource.labels.namespace_name |
additional.fields.key |
Der Wert „Namespace Name“ wird als Schlüssel im additional.fields -Objekt zugewiesen. |
resource.labels.namespace_name |
additional.fields.value.string_value |
Der Wert von resource.labels.namespace_name aus dem Rohlog wird als Stringwert im additional.fields -Objekt zugewiesen. |
resource.labels.namespace_name |
metadata.product_event_type |
Wenn resource.type „k8s_container“ ist, wird der Wert von resource.labels.namespace_name zusammen mit resource.labels.container_name verwendet, um metadata.product_event_type zu erstellen. |
resource.labels.node_name |
metadata.product_event_type |
Wenn resource.type „k8s_node“ ist, wird der Wert von resource.labels.node_name verwendet, um metadata.product_event_type zu erstellen. |
resource.labels.pod_name |
additional.fields.key |
Der Wert „Pod Name“ wird als Schlüssel im additional.fields -Objekt zugewiesen. |
resource.labels.pod_name |
additional.fields.value.string_value |
Der Wert von resource.labels.pod_name aus dem Rohlog wird als Stringwert im additional.fields -Objekt zugewiesen. |
resource.labels.project_id |
additional.fields.key |
Der Wert „Project Id“ wird als Schlüssel im additional.fields -Objekt zugewiesen. |
resource.labels.project_id |
additional.fields.value.string_value |
Der Wert von resource.labels.project_id aus dem Rohlog wird als Stringwert im additional.fields -Objekt zugewiesen. |
resource.type |
target.resource.resource_subtype |
Der Wert von resource.type aus dem Rohlog wird dem Feld target.resource.resource_subtype zugewiesen. |
Roles |
target.user.user_role |
Das Feld Roles aus dem Rohlog wird in Großbuchstaben konvertiert und dem Feld target.user.user_role zugeordnet. |
SessionID |
network.session_id |
Der SessionID aus dem Rohlog wird dem Feld network.session_id zugeordnet. |
sev |
security_result.severity |
Der Wert des Felds sev bestimmt den Wert von security_result.severity . „INFO“ oder „NOTICE“ wird „INFORMATIONAL“ zugeordnet, „WARN“ wird „MEDIUM“ zugeordnet und „ERR“ wird „ERROR“ zugeordnet. |
TargetUsername |
target.user.user_display_name |
Der TargetUsername aus dem Rohlog wird dem Feld target.user.user_display_name zugeordnet. |
textPayload |
metadata.description |
Wenn resource.type „k8s_node“ ist, wird der Wert von textPayload dem Feld metadata.description zugeordnet. |
textPayload |
network.application_protocol |
Das Protokoll (z. B. HTTP) wird aus dem Feld textPayload mit Grok-Mustern extrahiert. |
textPayload |
network.http.method |
Die HTTP-Methode (z. B. GET, POST) wird mithilfe von Grok-Mustern aus dem Feld textPayload extrahiert. |
textPayload |
network.http.referral_url |
Die URL wird mithilfe von Grok-Mustern aus dem Feld textPayload extrahiert. |
textPayload |
network.http.response_code |
Der HTTP-Antwortcode wird mit Grok-Mustern aus dem Feld textPayload extrahiert und in eine Ganzzahl umgewandelt. |
textPayload |
network.received_bytes |
Die empfangenen Byte werden mit Grok-Mustern aus dem Feld textPayload extrahiert und in eine vorzeichenlose Ganzzahl konvertiert. |
textPayload |
principal.ip |
Die Quell-IP-Adresse wird mithilfe von Grok-Mustern aus dem Feld textPayload extrahiert. |
textPayload |
security_result.description |
Die Beschreibung wird mithilfe von Grok-Mustern aus dem Feld textPayload extrahiert. |
textPayload |
target.file.full_path |
Der Pfad wird mithilfe von Grok-Mustern aus dem Feld textPayload extrahiert. |
UserAgent |
network.http.user_agent |
Der UserAgent aus dem Rohlog wird dem Feld network.http.user_agent zugeordnet. Der Wert „USER_RESOURCE_ACCESS“ ist metadata.event_type zugewiesen. |
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten