Windows Hyper-V-Logs erfassen
In diesem Dokument wird beschrieben, wie Sie Windows Hyper-V-Logs mit Bindplane in Google Security Operations aufnehmen.
Windows Hyper-V ist ein Microsoft-Hypervisor, der Ereignisprotokolle zu VM-Lebenszyklus-, Netzwerk-, Speicher- und Sicherheitsereignissen generiert. Der Bindplane-Agent erfasst exportierte Hyper-V-Ereignisprotokolldateien direkt aus dem lokalen Dateisystem.
Hinweis
Prüfen Sie, ob folgende Voraussetzungen erfüllt sind:
- Eine Google SecOps-Instanz
- Windows Server 2016 oder höher mit Unterstützung für den Dienst
observiq-otel-collector - Wenn Sie einen Proxy verwenden, achten Sie darauf, dass die Firewallports gemäß den Anforderungen des Bindplane-Agents geöffnet sind.
- Privilegierter Zugriff auf den Windows Hyper-V-Host mit Administratorberechtigungen
Google SecOps-Anmeldedaten für den Bindplane-Agent abrufen
Wählen Sie eine der folgenden Methoden aus, um den Bindplane-Agent bei Google SecOps zu authentifizieren:
- Neue Bereitstellungen: Verwenden Sie die Chronicle API (Option 1).
- Legacy-Bereitstellungen: Verwenden Sie weiterhin die Authentifizierungsdatei für die Aufnahme (Option 2), bis die Ingestion API am 20. Juli 2027 eingestellt wird.
Option 1: Dienstkonto für die Chronicle API erstellen (empfohlen)
- Melden Sie sich in der Google Cloud Console an und wählen Sie das Google Cloud Projekt aus, das mit Ihrer Google SecOps-Instanz verknüpft ist.
- Rufen Sie IAM und Verwaltung > Dienstkonten auf.
- Klicken Sie auf Dienstkonto erstellen.
- Geben Sie die folgenden Konfigurationsdetails an:
- Name des Dienstkontos: Geben Sie einen Namen für das Konto ein, z. B.
bindplane-ingest. - Dienstkontobeschreibung: Geben Sie eine Beschreibung ein, z. B.
Bindplane agent log ingestion.
- Name des Dienstkontos: Geben Sie einen Namen für das Konto ein, z. B.
- Klicken Sie auf Erstellen und fortfahren.
- Klicken Sie im Abschnitt Diesem Dienstkonto Zugriff auf das Projekt erteilen auf Rolle auswählen und wählen Sie Chronicle-Bearbeiter aus.
- Klicken Sie auf Weiter und dann auf Fertig.
- Klicken Sie auf das erstellte Dienstkonto und rufen Sie den Tab Schlüssel auf.
- Klicken Sie auf Schlüssel hinzufügen > Neuen Schlüssel erstellen.
- Wählen Sie JSON aus und klicken Sie auf Erstellen. Die Schlüsseldatei wird auf Ihren Computer heruntergeladen.
- Speichern Sie die Schlüsseldatei als
ingestion-auth.jsonim Bindplane-Collector-Verzeichnis (/opt/observiq-otel-collector/ingestion-auth.jsonunter Linux oderC:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.jsonunter Windows) oder aktualisieren Siecreds_file_pathinconfig.yamlso, dass er mit dem Pfad übereinstimmt, in dem Sie die Datei speichern. - Rufen Sie IAM und Verwaltung > Einstellungen auf und kopieren Sie die Projektnummer. Sie benötigen sie für die Exporterkonfiguration.
Option 2: Authentifizierungsdatei für die Aufnahme herunterladen (Legacy)
- Melden Sie sich in der Google SecOps-Konsole an.
- Rufen Sie SIEM-Einstellungen > Erfassungs-Agents auf.
- Laden Sie die Authentifizierungsdatei für die Aufnahme herunter.
- Speichern Sie die Datei sicher auf dem System, auf dem der Bindplane-Agent installiert werden soll.
Google SecOps-Kundennummer abrufen
- Melden Sie sich in der Google SecOps-Konsole an.
- Rufen Sie SIEM-Einstellungen > Profil auf.
Kopieren und speichern Sie die Kundennummer aus dem Abschnitt Organisationsdetails.
Bindplane-Agent installieren
Installieren Sie den Bindplane-Agent auf Ihrem Windows-Betriebssystem gemäß der folgenden Anleitung.
Windows-Installation
- Öffnen Sie die Eingabeaufforderung oder PowerShell als Administrator.
Führen Sie dazu diesen Befehl aus:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quietWarten Sie, bis die Installation abgeschlossen ist.
Überprüfen Sie die Installation mit folgendem Befehl:
sc query observiq-otel-collector
Der Dienst sollte als RUNNING angezeigt werden.
Weitere Installationsressourcen
Weitere Installationsoptionen und Informationen zur Problembehebung finden Sie im Installationsanleitung für den Bindplane-Agent.
Bindplane-Agent so konfigurieren, dass Logs aufgenommen und an Google SecOps gesendet werden
Konfigurationsdatei suchen
Windows :
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
Konfigurationsdatei bearbeiten
Ersetzen Sie den gesamten Inhalt von
config.yamldurch die folgende Konfiguration:receivers: filelog: include: - C:\HyperVLogs\*.evtx start_at: beginning exporters: chronicle/windows_hyperv: protocol: https # Region of your instance, for example us, europe, asia-southeast1 location: <LOCATION> # Project number of the Google Cloud project linked to the instance project: '<PROJECT_NUMBER>' compression: gzip creds_file_path: 'C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json' customer_id: '<customer_id>' endpoint: chronicle.googleapis.com log_type: WINDOWS_HYPERV raw_log_field: body ingestion_labels: env: production service: pipelines: logs/hyperv_to_chronicle: receivers: - filelog exporters: - chronicle/windows_hyperv
Konfigurationsparameter
Ersetzen Sie die folgenden Platzhalter:
Empfängerkonfiguration :
filelog: Der Empfängertyp zum Erfassen von Logdateien von der Festplatteinclude: Liste der zu überwachenden Dateipfade. Legen Sie hier den Speicherort fest, an dem Sie Hyper-V-Ereignisprotokolle exportieren, z. B.C:\HyperVLogs\*.evtx.start_at: Legen Siebeginningfest, um vorhandene Logs zu lesen, oderend, um nur neue Einträge zu lesen.
Exporterkonfiguration :
windows_hyperv: Beschreibender Name für den Exportercreds_file_path: Vollständiger Pfad zur JSON-Schlüsseldatei des Dienstkontos (Option 1):- Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Windows:
<customer_id>: Kundennummer aus dem vorherigen Schrittlocation: Ersetzen Sie<LOCATION>durch die Region Ihrer Google SecOps-Instanz, z. B.us,europeoderasia-southeast1. Der Exporter stelltchronicle.googleapis.comdiesen Wert voran. Die vollständige Liste finden Sie unter Regionale Endpunkte.project: Ersetzen Sie<PROJECT_NUMBER>durch die Projektnummer unter IAM und Verwaltung > Einstellungen.endpoint: Behalten Sie die Einstellungchronicle.googleapis.combei.WINDOWS_HYPERV: Logtyp genau so, wie er in Chronicle angezeigt wirdingestion_labels: Optionale Labels im YAML-Format, z. B.env: production
Pipelinekonfiguration :
hyperv_to_chronicle: Beschreibender Name für die Pipeline
Exporter für die Legacy Ingestion API
Wenn Sie die Authentifizierungsdatei für die Aufnahme aus Option 2 verwenden, ersetzen Sie den Block
exportersdurch Folgendes. Legen Siecreds_file_pathauf den Pfad zur Authentifizierungsdatei für die Aufnahme fest. Wenn sich Ihre Instanz außerhalb der USA befindet, ersetzen Siemalachiteingestion-pa.googleapis.comdurch Ihren regionalen Endpunkt, z. B.europe-malachiteingestion-pa.googleapis.com.exporters: chronicle/windows_hyperv: compression: gzip creds_file_path: 'C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json' customer_id: '<customer_id>' endpoint: malachiteingestion-pa.googleapis.com log_type: WINDOWS_HYPERV raw_log_field: body ingestion_labels: env: production
Konfigurationsdatei speichern
- Speichern Sie die Datei nach der Bearbeitung:
- Windows: Klicken Sie auf Datei > Speichern
Bindplane-Agent neu starten, damit die Änderungen übernommen werden
So starten Sie den Bindplane-Agent unter Windows neu:
Wählen Sie eine der folgenden Optionen aus:
- Eingabeaufforderung oder PowerShell als Administrator:
net stop observiq-otel-collector && net start observiq-otel-collector- Dienstkonsole:
- Drücken Sie
Win+R, geben Sieservices.mscein und drücken Sie die Eingabetaste. - Suchen Sie nach observIQ OpenTelemetry Collector.
- Rechtsklicken Sie und wählen Sie Neu starten aus.
- Drücken Sie
Prüfen Sie, ob der Dienst ausgeführt wird:
sc query observiq-otel-collectorPrüfen Sie die Logs auf Fehler:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
Windows Hyper-V-Logexport konfigurieren
Windows Hyper-V-Logs werden als Windows-Ereignisprotokolleinträge gespeichert. Sie müssen diese Logs in Dateien auf dem Laufwerk exportieren, damit der Bindplane-Agent sie erfassen kann.
Erstellen Sie ein Verzeichnis zum Speichern der exportierten Logdateien:
mkdir C:\HyperVLogsExportieren Sie Hyper-V-Ereignisprotokolle mit
wevtutil:wevtutil epl Microsoft-Windows-Hyper-V-VMMS-Admin C:\HyperVLogs\hyperv-vmms-admin.evtx wevtutil epl Microsoft-Windows-Hyper-V-Worker-Admin C:\HyperVLogs\hyperv-worker-admin.evtxSie können bei Bedarf weitere Hyper-V-Ereigniskanäle exportieren. Verfügbare Kanäle sind:
Microsoft-Windows-Hyper-V-VMMS-Admin(Virtual Machine Management Service)Microsoft-Windows-Hyper-V-Worker-Admin(VM Worker processes)Microsoft-Windows-Hyper-V-Hypervisor-Admin(Hypervisor events)Microsoft-Windows-Hyper-V-Config-Admin(Configuration events)
Optional: Planen Sie regelmäßige Exporte mit PowerShell:
$action = New-ScheduledTaskAction -Execute "cmd.exe" -Argument '/c wevtutil epl Microsoft-Windows-Hyper-V-VMMS-Admin C:\HyperVLogs\hyperv-vmms-admin.evtx /ow:true && wevtutil epl Microsoft-Windows-Hyper-V-Worker-Admin C:\HyperVLogs\hyperv-worker-admin.evtx /ow:true' $trigger = New-ScheduledTaskTrigger -RepetitionInterval (New-TimeSpan -Hours 1) -Once -At (Get-Date) Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "ExportHyperVLogs" -Description "Export Hyper-V logs for Bindplane agent"Prüfen Sie, ob die exportierten Logdateien unter `C:\HyperVLogs` erstellt werden.
Achten Sie darauf, dass der Bindplane-Agent-Pfad
includeinconfig.yamlmit dem Exportverzeichnis übereinstimmt.
UDM-Zuordnungstabelle
| Logfeld | UDM-Zuordnung | Logik |
|---|---|---|
| channel, event_data.data, event_id.id, event_id.qualifiers, keywords, task, SeverityValue, OpcodeValue, EventID, ProviderGuid, ActivityId, Version, RecordNumber, ProcessID, ThreadID, Channel, AccountName, UserID, AccountType, Opcode, SourceModuleName, SourceModuleType | additional.fields | Mit Labels zusammengeführt, die aus diesen Feldern erstellt wurden |
| system_time, EventReceivedTime | metadata.collected_timestamp | Aus system_time mit Formaten oder aus EventReceivedTime als UNIX oder UNIX_MS geparst |
| Nachricht | metadata.description | Wert direkt kopiert |
| EventTime, EventReceivedTime | metadata.event_timestamp | Aus EventTime als UNIX oder UNIX_MS oder aus EventReceivedTime als UNIX oder UNIX_MS geparst |
| metadata.event_type | Auf „PROCESS_LAUNCH“ festgelegt, wenn has_principal und has_target_process, andernfalls „USER_LOGIN“, wenn has_principal und has_target und nicht has_target_process, andernfalls „STATUS_UPDATE“, wenn has_principal und nicht has_target, andernfalls „USER_RESOURCE_ACCESS“, wenn has_target, andernfalls „GENERIC_EVENT“ | |
| provider.event_source | metadata.product_event_type | Wert direkt kopiert |
| record_id, RecordNumber | metadata.product_log_id | In String aus record_id konvertiert, wenn nicht leer, oder aus RecordNumber, wenn nicht leer |
| provider.name, SourceName | metadata.product_name | Wert aus provider.name, wenn nicht leer, andernfalls SourceName, wenn nicht leer, andernfalls „Microsoft-Windows-Hyper-V“ |
| Version | metadata.product_version | In String konvertiert |
| Nachricht | network.session_duration.nanos | Mit Grok-Muster aus der Nachricht extrahiert, in Ganzzahl konvertiert |
| Domain | principal.administrative_domain | Wert direkt kopiert |
| Computer | principal.asset.hostname | Wert direkt kopiert |
| Computer, Hostname | principal.hostname | Wert aus „Computer“, wenn nicht leer, andernfalls aus „Hostname“, wenn nicht leer |
| AccountName | principal.user.role_description | Wert direkt kopiert |
| AccountType | principal.user.role_name | Wert direkt kopiert |
| event_data.name | principal.user.user_display_name | Wert direkt kopiert |
| security.user_id, UserID | principal.user.userid | Wert aus security.user_id, wenn nicht leer, andernfalls aus UserID, wenn nicht leer |
| Nachricht | security_result.description | Mit Grok-Muster aus der Nachricht extrahiert |
| Nachricht, ActivityId | security_result.detection_fields | Mit Label aus nt_status zusammengeführt, das mit Grok aus der Nachricht extrahiert wurde, und aus ActivityId |
| level, Severity | security_result.severity | Basierend auf dem Wert von „level“ festgelegt (1–3 INFORMATIONAL, 4 ERROR, 5 CRITICAL, andernfalls UNKNOWN_SEVERITY) oder basierend auf „Severity“ (INFO INFORMATIONAL, WARN MEDIUM, ERROR ERROR) |
| EventType | security_result.severity_details | Wert direkt kopiert |
| execution.process_id, ProcessID | target.process.pid | In String aus execution.process_id konvertiert, wenn nicht leer, oder aus ProcessID, wenn nicht leer |
| execution.thread_id, ThreadID | target.process.product_specific_process_id | Auf „ThreadID: |
| provider.guid, ProviderGuid | target.resource.id | Wert aus provider.guid nach dem Entfernen von { } oder aus ProviderGuid nach dem Entfernen von { } |
| Nachricht | target.resource.product_object_id | Mit Grok-Muster aus der Nachricht extrahiert |
| provider.guid | target.resource.type | Auf „Hyper-V VmSwitch“ festgelegt, wenn nicht leer |
Änderungsprotokoll
Änderungsprotokoll für diesen Parser ansehen
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten