Nutanix Prism-Protokolle erfassen
Übersicht
Dieser Parser verarbeitet Nutanix Prism-Protokolle und unterstützt sowohl JSON- als auch syslog-Formate. Es werden Felder aus verschiedenen Protokollstrukturen extrahiert, in UDM normalisiert und die Daten mit zusätzlichem Kontext wie Nutzerinformationen, Netzwerkdetails und Sicherheitsstufe angereichert. Der Parser führt außerdem bestimmte Aktionen basierend auf der HTTP-Methode und der Protokollebene aus und kategorisiert Ereignisse in UDM-Ereignistypen wie USER_LOGIN, STATUS_UPDATE und GENERIC_EVENT.
Hinweis
- Sie benötigen eine Google SecOps-Instanz.
- Sie benötigen Berechtigungen für Nutanix Prism Central.
- Sie benötigen Windows 2012 SP2 oder höher oder einen Linux-Host mit systemd.
- Wenn die Ausführung hinter einem Proxy erfolgt, müssen die Firewallports geöffnet sein.
Authentifizierungsdatei für die Aufnahme in Google SecOps abrufen
- Melden Sie sich in der Google SecOps Console an.
- Gehen Sie zu SIEM-Einstellungen > Erfassungsagenten.
- Lade die Datei zur Authentifizierung der Datenaufnahme herunter.
Google SecOps-Kundennummer abrufen
- Melden Sie sich in der Google SecOps Console an.
- Gehen Sie zu SIEM-Einstellungen > Profile.
- Kopieren und speichern Sie die Kundennummer aus dem Bereich Organisationsdetails.
BindPlane-Agent installieren
- Führen Sie für die Windows-Installation das folgende Script aus:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
. - Führen Sie für die Linux-Installation das folgende Script aus:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
. - Weitere Installationsoptionen finden Sie in diesem Installationsleitfaden.
BindPlane-Agent so konfigurieren, dass er Syslog-Protokolle aufnimmt und an Google SecOps sendet
- Rufen Sie den Computer auf, auf dem BindPlane installiert ist.
Bearbeiten Sie die Datei
config.yaml
so:receivers: tcplog: # Replace the below port <54525> and IP (0.0.0.0) with your specific values listen_address: "0.0.0.0:54525" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the creds location below according the placement of the credentials file you downloaded creds: '{ json file for creds }' # Replace <customer_id> below with your actual ID that you copied customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # You can apply ingestion labels below as preferred ingestion_labels: log_type: SYSLOG namespace: Namespace raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - tcplog exporters: - chronicle/chronicle_w_labels
Starten Sie den BindPlane-Agent mit dem folgenden Befehl neu, um die Änderungen anzuwenden:
sudo systemctl bindplane restart
Syslog aus Nutanix Prism exportieren
- Melden Sie sich mit einem Konto mit Berechtigungen in Prism Central an.
- Wählen Sie im Menü Prism Central Settings (Prism Central-Einstellungen) aus.
- Gehen Sie zu Syslog-Server.
- Klicken Sie auf + Syslog-Server konfigurieren.
- Geben Sie im Dialogfeld Syslog-Server Werte für die Eingabeparameter an:
- Servername: Geben Sie einen Namen für den Server ein, z. B. Google SecOps BindPlane Server.
- IP-Adresse: Geben Sie die IP-Adresse Ihres BindPlane-Agents ein.
- Port: Geben Sie den Port ein, auf dem der BindPlane-Agent überwacht.
- Transport Protocol (Transportprotokoll): Wählen Sie TCP aus.
- Klicken Sie auf Konfigurieren.
- Klicken Sie unter Datenquellen auf + Bearbeiten.
- Geben Sie im Dialogfeld Datenquellen und zugehörige Schweregrade Werte für die Eingabeparameter an:
- Wählen Sie API-Audit, Audit und Flow aus.
- Legen Sie für jeden Eintrag die Wichtigkeitsstufe 6 – Informativ fest.
- Klicken Sie auf Speichern.
UDM-Zuordnungstabelle
Logfeld | UDM-Zuordnung | Logik |
---|---|---|
@timestamp |
metadata.event_timestamp |
Der Zeitstempel des Ereignisses wird aus dem Feld @timestamp geparst. Die Formate yyyy-MM-dd HH:mm:ss.SSS , yyyy-MM-ddTHH:mm:ssZ und ISO8601 werden unterstützt. |
agent.id |
observer.asset_id |
Wird mit agent.type kombiniert, um die Asset-ID des Beobachters im Format „agent.type:agent.id“ zu bilden. |
agent.type |
observer.application |
Die Anwendung, die für die Beobachtung verwendet wird. |
agent.version |
observer.platform_version |
Die Version der Beobachter-App. |
alertUid |
security_result.detection_fields.value |
Der Wert der Benachrichtigungs-UID wird dem Feld value in detection_fields zugeordnet. key ist auf „Benachrichtigungs-ID“ festgelegt. |
api_version |
metadata.product_version |
Die API-Version. |
clientIp |
principal.ip , principal.asset.ip |
IP-Adresse des Clients. |
client_type |
principal.labels.value |
Der Wert des Clienttyps. key ist auf „client_type“ festgelegt. |
defaultMsg |
metadata.description |
Die Standardnachricht. |
entity_uuid |
metadata.product_log_id |
UUID der Entität. |
http_method |
network.http.method |
Die HTTP-Methode. In Großbuchstaben umgewandelt. |
host.architecture |
principal.asset.hardware.cpu_platform |
Die Architektur des Hosts. |
host.id |
principal.asset_id |
Hat das Präfix „NUTANIX:“, um die Haupt-Asset-ID zu erstellen. |
host.ip |
principal.ip , principal.asset.ip |
Host-IP-Adresse. |
host.mac |
principal.mac |
MAC-Adresse des Hosts. |
host.os.kernel |
principal.platform_patch_level |
Die Kernelversion des Hostbetriebssystems. |
host.os.platform |
principal.platform |
Die Plattform des Hostbetriebssystems. Zugewiesen zu LINUX , WINDOWS , MAC oder UNKNOWN_PLATFORM . |
host.os.version |
principal.platform_version |
Die Version des Hostbetriebssystems. |
input.type |
network.ip_protocol |
Das Netzwerkprotokoll. Zu „UDP“ oder „TCP“ zugeordnet. |
log.source.address |
principal.ip , principal.asset.ip , principal.port |
Wird geparst, um die Quell-IP-Adresse und den Quellport zu extrahieren. |
logstash.collect.host |
observer.ip |
Die IP-Adresse des Logstash-Collectors. |
logstash.collect.timestamp |
metadata.collected_timestamp |
Der Zeitstempel, der angibt, wann das Protokoll erfasst wurde. |
logstash.ingest.host |
intermediary.hostname |
Der Hostname des Logstash-Aufnahmeservers. |
logstash.ingest.timestamp |
metadata.ingested_timestamp |
Der Zeitstempel, der angibt, wann das Protokoll aufgenommen wurde. |
logstash.irm_environment |
principal.labels.value |
Der Wert der irm-Umgebung. key ist auf „irm_environment“ festgelegt. |
logstash.irm_region |
principal.labels.value |
Der Wert der IRM-Region. key ist auf „irm_region“ festgelegt. |
logstash.irm_site |
principal.labels.value |
Der Wert der IRM-Website. key ist auf „irm_site“ festgelegt. |
logstash.process.host |
intermediary.hostname |
Der Hostname des Logstash-Verarbeitungsservers. |
operationType |
metadata.product_event_type |
Der Vorgangstyp. |
originatingClusterUuid |
additional.fields.value.string_value |
Die UUID des Ursprungsclusters. key ist auf „Uuid des Ursprungsclusters“ festgelegt. |
params.mac_address |
target.mac |
Die MAC-Adresse aus den Parametern. |
params.requested_ip_address |
target.ip , target.asset.ip |
Die angeforderte IP-Adresse aus den Parametern. |
params.vm_name |
target.resource.name |
Der VM-Name aus den Parametern. |
program |
metadata.product_event_type |
Der Name des Programms. |
rest_endpoint |
target.url |
Der REST-Endpunkt. |
sessionId |
additional.fields.value.string_value |
Die Sitzungs-ID. key ist auf „Sitzungs-ID“ gesetzt. |
syslog_host |
principal.hostname , principal.asset.hostname |
Syslog-Host. |
timestamp |
metadata.event_timestamp |
Der Zeitstempel des Ereignisses. |
username |
principal.user.user_display_name oder principal.user.userid |
Nutzername. Wird als User-ID verwendet, wenn http_method „POST“ ist. |
uuid |
metadata.product_log_id |
UUID. |
– | metadata.vendor_name |
Hartcodiert auf „Nutanix_Prism“. |
– | metadata.product_name |
Hartcodiert auf „Nutanix_Prism“. |
– | metadata.event_type |
Wird anhand der Parserlogik basierend auf den Werten von has_principal , has_target , audit_log , network_set und http_method ermittelt. Kann GENERIC_EVENT , USER_LOGIN , STATUS_UPDATE , USER_RESOURCE_ACCESS , RESOURCE_CREATION , USER_RESOURCE_UPDATE_CONTENT oder USER_RESOURCE_DELETION sein. |
– | metadata.log_type |
Hartcodiert auf „NUTANIX_PRISM“. |
– | extensions.auth.type |
Wird auf „AUTHTYPE_UNSPECIFIED“ gesetzt, wenn metadata.event_type gleich USER_LOGIN ist. |
– | security_result.severity |
Wird durch die Parserlogik anhand von log_level und syslog_pri bestimmt. Kann CRITICAL , ERROR , HIGH , MEDIUM oder INFORMATIONAL sein. |
Änderungen
2024-02-21
- Wenn „inner_message“ nicht leer ist und „not_json“ auf „true“ gesetzt ist, setzen Sie „audit_log“ auf „true“, um gelöschte JSON-Protokolle zu unterstützen.
- Die Zuordnungen „principal.ip“ und „principal.asset.ip“ wurden angeglichen.
- Die Zuordnungen „target.ip“ und „target.asset.ip“ wurden angeglichen.
- Die Zuordnungen „principal.hostname“ und „principal.asset.hostname“ wurden angeglichen.
- Wenn „network_set“ auf „false“ und „has_principal“ auf „true“ festgelegt ist, „has_target“ auf „false“ und „audit_log“ auf „false“, setzen Sie „metadata.event_type“ auf „STATUS_UPDATE“.
- Wenn „network_set“ auf „true“, „has_principal“ auf „true“, „has_target“ auf „false“ und „audit_log“ auf „false“ festgelegt ist, setzen Sie „metadata.event_type“ auf „GENERIC_EVENT“.
2024-01-12
- Unterstützung für das neue Format von syslog-Protokollen hinzugefügt.
- Es wurde eine bedingte Nullprüfung hinzugefügt, bevor „logstash.ingest.host“ mit „intermediary.hostname“ abgeglichen wird.
- Es wurde eine bedingte Nullprüfung hinzugefügt, bevor „logstash.process.host“ mit „intermediary.hostname“ abgeglichen wird.
- Es wurde eine bedingte Nullprüfung hinzugefügt, bevor „logstash.collect.host“ auf „observer.ip“ zugeordnet wurde.
2023-12-23
- Unterstützung für einen neuen AUDIT-Protokolltyp hinzugefügt.
- Es wurden neue Grok-Muster zum Parsen von SYSLOG- und JSON-Logs hinzugefügt.
- „affectedEntityList“ und „alertUid“ wurden „security_result.detection_fields“ zugeordnet.
- „clientIp“ und „params.requested_ip_address“ wurden „principal.ip“ zugeordnet.
- „defaultMsg“ wurde auf „metadata.description“ zugeordnet.
- „operationType“ wurde in „metadata.product_event_type“ umgewandelt.
- „originatingClusterUuid“ und „sessionId“ wurden „additional.fields“ zugeordnet.
- „params.mac_address“ wurde zu „principal.mac“ zugeordnet.
- „uuid“ wurde zu „metadata.product_log_id“ zugeordnet.
- „userName“ wurde auf „principal.user.user_display_name“ zugeordnet.
- „params.vm_name“ wurde in „target.resource.name“ geändert.
2023-01-23
- „logstash.ingest.host“ wurde „intermediary[0].hostname“ statt „observer.hostname“ zugeordnet.
- „logstash.collect.host“ wurde auf „observer.ip“ zugeordnet.
- Null-Prüfung für „logstash.ingest.host“ hinzugefügt.