Wordpress CMS-Logs erfassen
Dieser Parser extrahiert WordPress CMS-Logs aus Nachrichten im JSON- oder Nur-Text-Format. Er 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.
Hinweis
Prüfen Sie, ob folgende Voraussetzungen erfüllt sind:
- Google SecOps-Instanz
- Privilegierter Zugriff auf eine WordPress-Website
- Plug-in, das Webhook-Funktionen ermöglicht (z. B. WP Webhooks)
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 Einzelnen Feed konfigurieren.
- Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B. 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 aufteilen: Das Trennzeichen, das zum Trennen von Logzeilen verwendet wird, z. B.
\n.
- Trennzeichen aufteilen: Das Trennzeichen, das zum Trennen von Logzeilen verwendet wird, z. B.
- Klicken Sie auf Weiter.
- Prüfen Sie die Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.
- Klicken Sie auf Geheimen Schlüssel generieren , um einen geheimen Schlüssel zur Authentifizierung dieses Feeds zu generieren.
- Kopieren und speichern Sie den geheimen Schlüssel. 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 Feedendpunkt-URL aus dem Feld Endpunktinformationen. Sie müssen diese Endpunkt-URL in Ihrer Clientanwendung angeben.
- Klicken Sie auf Fertig.
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.
Beschränken Sie den API-Schlüsselzugriff auf die Google Security Operations API.
Endpunkt-URL angeben
- Geben Sie in Ihrer Clientanwendung die HTTPS-Endpunkt-URL an, die im Webhook-Feed angegeben ist.
Aktivieren Sie die Authentifizierung, indem Sie den API-Schlüssel und den geheimen Schlüssel im folgenden Format als Teil des benutzerdefinierten Headers angeben:
X-goog-api-key = API_KEY X-Webhook-Access-Key = SECRETEmpfehlung: Geben Sie den API-Schlüssel als Header an, anstatt ihn in der URL anzugeben. Wenn Ihr Webhook-Client keine benutzerdefinierten Header unterstützt, können Sie den API-Schlüssel und den geheimen Schlüssel im folgenden Format mit Abfrageparametern angeben:
ENDPOINT_URL?key=API_KEY&secret=SECRET
Ersetzen Sie Folgendes:
ENDPOINT_URL: die Endpunkt-URL des FeedsAPI_KEY: der API-Schlüssel zur Authentifizierung bei Google Security OperationsSECRET: 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, das sich in der Regel unter „Einstellungen“ befindet.
- Klicken Sie in der oberen Menüleiste auf Daten senden.
- Wählen Sie die WordPress-Aktion aus, die den Webhook auslösen soll. Häufige 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 veröffentlicht wird). Dies hängt von den Daten ab, die Sie auswählen und an Google SecOps senden.
- Klicken Sie auf Webhook-URL hinzufügen.
- Konfigurieren Sie den Webhook:
- Name: Geben Sie Ihrem Webhook einen beschreibenden Namen, z. B. Google SecOps-Feed.
- Webhook-URL: Fügen Sie die Endpunkt-URL von Google SecOps 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 Objekt target.resource.attribute.labels zugewiesen. |
Code |
target.resource.attribute.labels.value |
Der Wert des Felds Code aus dem Rohlog wird als Wert im Objekt target.resource.attribute.labels zugewiesen. |
CurrentUserID |
target.user.userid |
Die CurrentUserID aus dem Rohlog wird in einen String konvertiert und dem Feld target.user.userid zugeordnet. |
EditUserLink |
target.url |
Die EditUserLink aus dem Rohlog wird dem Feld target.url zugeordnet. |
EventType |
metadata.product_event_type |
Die EventType aus dem Rohlog wird dem Feld metadata.product_event_type zugeordnet. |
FirstName |
target.user.first_name |
Die FirstName aus dem Rohlog wird dem Feld target.user.first_name zugeordnet. |
insertId |
metadata.product_log_id |
Die insertId aus dem Rohlog wird dem Feld metadata.product_log_id zugeordnet. |
labels.compute.googleapis.com/resource_name |
additional.fields.key |
Der Wert „Ressourcenname“ wird als Schlüssel im Objekt additional.fields 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 Objekt additional.fields zugewiesen. |
labels.k8s-pod/app_kubernetes_io/instance |
target.resource.attribute.labels.key |
Der Wert „Kubernetes IO-Instanz“ wird als Schlüssel im Objekt target.resource.attribute.labels 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 Objekt target.resource.attribute.labels zugewiesen. |
labels.k8s-pod/app_kubernetes_io/managed-by |
target.resource.attribute.labels.key |
Der Wert „Kubernetes IO-Instanzmanager“ wird als Schlüssel im Objekt target.resource.attribute.labels 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 Objekt target.resource.attribute.labels zugewiesen. |
labels.k8s-pod/app_kubernetes_io/name |
target.resource.attribute.labels.key |
Der Wert „Kubernetes IO-Instanzname“ wird als Schlüssel im Objekt target.resource.attribute.labels 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 Objekt target.resource.attribute.labels zugewiesen. |
labels.k8s-pod/controller-revision-hash |
target.resource.attribute.labels.key |
Der Wert „Controller-Revisionshash“ wird als Schlüssel im Objekt target.resource.attribute.labels 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 Objekt target.resource.attribute.labels zugewiesen. |
labels.k8s-pod/helm_sh/chart |
target.resource.attribute.labels.key |
Der Wert „Kubernetes IO-Instanzmanager SH“ wird als Schlüssel im Objekt target.resource.attribute.labels 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 Objekt target.resource.attribute.labels zugewiesen. |
labels.k8s-pod/k8s-app |
target.resource.attribute.labels.key |
Der Wert „Anwendung“ wird als Schlüssel im Objekt target.resource.attribute.labels 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 Objekt target.resource.attribute.labels zugewiesen. |
labels.k8s-pod/pod-template-generation |
target.resource.attribute.labels.key |
Der Wert „Pod-Vorlagengenerierung“ wird als Schlüssel im Objekt target.resource.attribute.labels 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 Objekt target.resource.attribute.labels zugewiesen. |
labels.k8s-pod/pod-template-hash |
target.resource.attribute.labels.key |
Der Wert „Pod-Vorlagenhash“ wird als Schlüssel im Objekt target.resource.attribute.labels 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 Objekt target.resource.attribute.labels zugewiesen. |
LastName |
target.user.last_name |
Die LastName aus dem Rohlog wird dem Feld target.user.last_name zugeordnet. |
logName |
target.resource.attribute.labels.key |
Der Wert „Logname“ wird als Schlüssel im Objekt target.resource.attribute.labels zugewiesen. |
logName |
target.resource.attribute.labels.value |
Der Wert des Felds logName aus dem Rohlog wird als Wert im Objekt target.resource.attribute.labels zugewiesen. |
receiveTimestamp |
metadata.event_timestamp |
Der Wert von receiveTimestamp aus dem Rohlog wird geparst und dem Feld metadata.event_timestamp zugeordnet. |
resource.labels.cluster_name |
additional.fields.key |
Der Wert „Clustername“ wird als Schlüssel im Objekt additional.fields zugewiesen. |
resource.labels.cluster_name |
additional.fields.value.string_value |
Der Wert von resource.labels.cluster_name aus dem Rohlog wird als Stringwert im Objekt additional.fields 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 „Namespacename“ wird als Schlüssel im Objekt additional.fields zugewiesen. |
resource.labels.namespace_name |
additional.fields.value.string_value |
Der Wert von resource.labels.namespace_name aus dem Rohlog wird als Stringwert im Objekt additional.fields 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 „Podname“ wird als Schlüssel im Objekt additional.fields zugewiesen. |
resource.labels.pod_name |
additional.fields.value.string_value |
Der Wert von resource.labels.pod_name aus dem Rohlog wird als Stringwert im Objekt additional.fields zugewiesen. |
resource.labels.project_id |
additional.fields.key |
Der Wert „Projekt-ID“ wird als Schlüssel im Objekt additional.fields zugewiesen. |
resource.labels.project_id |
additional.fields.value.string_value |
Der Wert von resource.labels.project_id aus dem Rohlog wird als Stringwert im Objekt additional.fields 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 |
Die SessionID aus dem Rohlog wird dem Feld network.session_id zugeordnet. |
sev |
security_result.severity |
Der Wert des sev Felds 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 |
Die 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 mit Grok-Mustern aus dem Feld textPayload extrahiert. |
textPayload |
network.http.method |
Die HTTP-Methode (z. B. GET, POST) wird mit Grok-Mustern aus dem Feld textPayload extrahiert. |
textPayload |
network.http.referral_url |
Die URL wird mit 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 konvertiert. |
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 mit Grok-Mustern aus dem Feld textPayload extrahiert. |
textPayload |
security_result.description |
Die Beschreibung wird mit Grok-Mustern aus dem Feld textPayload extrahiert. |
textPayload |
target.file.full_path |
Der Pfad wird mit Grok-Mustern aus dem Feld textPayload extrahiert. |
UserAgent |
network.http.user_agent |
Die UserAgent aus dem Rohlog wird dem Feld network.http.user_agent zugeordnet. Der Wert „USER_RESOURCE_ACCESS“ wird metadata.event_type zugewiesen. |
Änderungsprotokoll
Änderungsprotokoll für diesen Parser ansehen
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten