Windows Hyper-V-Logs erfassen

Unterstützt in:

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.
  1. 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.
  2. Rufen Sie IAM und Verwaltung > Dienstkonten auf.
  3. Klicken Sie auf Dienstkonto erstellen.
  4. 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.
  5. Klicken Sie auf Erstellen und fortfahren.
  6. Klicken Sie im Abschnitt Diesem Dienstkonto Zugriff auf das Projekt erteilen auf Rolle auswählen und wählen Sie Chronicle-Bearbeiter aus.
  7. Klicken Sie auf Weiter und dann auf Fertig.
  8. Klicken Sie auf das erstellte Dienstkonto und rufen Sie den Tab Schlüssel auf.
  9. Klicken Sie auf Schlüssel hinzufügen > Neuen Schlüssel erstellen.
  10. Wählen Sie JSON aus und klicken Sie auf Erstellen. Die Schlüsseldatei wird auf Ihren Computer heruntergeladen.
  11. Speichern Sie die Schlüsseldatei als ingestion-auth.json im Bindplane-Collector-Verzeichnis (/opt/observiq-otel-collector/ingestion-auth.json unter Linux oder C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json unter Windows) oder aktualisieren Sie creds_file_path in config.yaml so, dass er mit dem Pfad übereinstimmt, in dem Sie die Datei speichern.
  12. 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)

  1. Melden Sie sich in der Google SecOps-Konsole an.
  2. Rufen Sie SIEM-Einstellungen > Erfassungs-Agents auf.
  3. Laden Sie die Authentifizierungsdatei für die Aufnahme herunter.
  4. Speichern Sie die Datei sicher auf dem System, auf dem der Bindplane-Agent installiert werden soll.

Google SecOps-Kundennummer abrufen

  1. Melden Sie sich in der Google SecOps-Konsole an.
  2. Rufen Sie SIEM-Einstellungen > Profil auf.
  3. 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

  1. Öffnen Sie die Eingabeaufforderung oder PowerShell als Administrator.
  2. Führen Sie dazu diesen Befehl aus:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. Warten Sie, bis die Installation abgeschlossen ist.

  4. Ü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.yaml durch 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 Festplatte
    • include: 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 Sie beginning fest, um vorhandene Logs zu lesen, oder end, um nur neue Einträge zu lesen.
  • Exporterkonfiguration :

    • windows_hyperv: Beschreibender Name für den Exporter
    • creds_file_path: Vollständiger Pfad zur JSON-Schlüsseldatei des Dienstkontos (Option 1):
      • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
    • <customer_id>: Kundennummer aus dem vorherigen Schritt
    • location: Ersetzen Sie <LOCATION> durch die Region Ihrer Google SecOps-Instanz, z. B. us, europe oder asia-southeast1. Der Exporter stellt chronicle.googleapis.com diesen 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 Einstellung chronicle.googleapis.com bei.
    • WINDOWS_HYPERV: Logtyp genau so, wie er in Chronicle angezeigt wird
    • ingestion_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 exporters durch Folgendes. Legen Sie creds_file_path auf den Pfad zur Authentifizierungsdatei für die Aufnahme fest. Wenn sich Ihre Instanz außerhalb der USA befindet, ersetzen Sie malachiteingestion-pa.googleapis.com durch 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:

  1. Wählen Sie eine der folgenden Optionen aus:

    • Eingabeaufforderung oder PowerShell als Administrator:
    net stop observiq-otel-collector && net start observiq-otel-collector
    
    • Dienstkonsole:
      1. Drücken Sie Win+R, geben Sie services.msc ein und drücken Sie die Eingabetaste.
      2. Suchen Sie nach observIQ OpenTelemetry Collector.
      3. Rechtsklicken Sie und wählen Sie Neu starten aus.
  2. Prüfen Sie, ob der Dienst ausgeführt wird:

    sc query observiq-otel-collector
    
  3. Prü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.

  1. Erstellen Sie ein Verzeichnis zum Speichern der exportierten Logdateien:

    mkdir C:\HyperVLogs
    
  2. Exportieren 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.evtx
    

    Sie 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)
  3. 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"
    
  4. Prüfen Sie, ob die exportierten Logdateien unter `C:\HyperVLogs` erstellt werden.

  5. Achten Sie darauf, dass der Bindplane-Agent-Pfad include in config.yaml mit 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: “ aus execution.thread_id festgelegt, wenn nicht leer, oder aus ThreadID, wenn nicht leer
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