Raccogliere i log di Windows Hyper-V
Questo documento spiega come importare i log di Windows Hyper-V in Google Security Operations utilizzando Bindplane.
Windows Hyper-V è un hypervisor Microsoft che genera log degli eventi relativi a ciclo di vita, rete, spazio di archiviazione ed eventi di sicurezza delle VM. L'agente Bindplane raccoglie i file di log eventi di Hyper-V esportati direttamente dal file system locale.
Prima di iniziare
Assicurati di soddisfare i seguenti prerequisiti:
- Un'istanza Google SecOps
- Windows Server 2016 o versioni successive con supporto del servizio
observiq-otel-collector - Se l'agente viene eseguito dietro un proxy, assicurati che le porte del firewall siano aperte in base ai requisiti dell'agente Bindplane
- Accesso con privilegi all'host Windows Hyper-V con autorizzazioni di amministratore
Recuperare il file di autenticazione importazione di Google SecOps
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Agenti di raccolta.
Scarica il file di autenticazione importazione. Salva il file in modo sicuro sul sistema in cui verrà installato Bindplane.
Recuperare l'ID cliente Google SecOps
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Profilo.
Copia e salva l'ID cliente dalla sezione Dettagli dell'organizzazione.
Installa l'agente Bindplane
Installa l'agente Bindplane sul sistema operativo Windows seguendo le istruzioni riportate di seguito.
Installazione di Windows
- Apri Prompt dei comandi o PowerShell come amministratore.
Esegui questo comando:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quietAttendi il completamento dell'installazione.
Verifica l'installazione eseguendo:
sc query observiq-otel-collector
Il servizio dovrebbe essere visualizzato come IN ESECUZIONE.
Risorse aggiuntive per l'installazione
Per ulteriori opzioni di installazione e risoluzione dei problemi, consulta la Guida all'installazione dell'agente Bindplane.
Configura l'agente Bindplane per importare i log e inviarli a Google SecOps
Individua il file di configurazione
Windows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
Modifica il file di configurazione
Sostituisci l'intero contenuto di
config.yamlcon la seguente configurazione:receivers: filelog: include: - C:\HyperVLogs\*.evtx start_at: beginning 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 service: pipelines: logs/hyperv_to_chronicle: receivers: - filelog exporters: - chronicle/windows_hyperv
Parametri di configurazione
Sostituisci i seguenti segnaposto:
Configurazione del ricevitore:
filelog: Il tipo di ricevitore per la raccolta dei file di log dal discoinclude: Elenco dei percorsi dei file da monitorare. Imposta questo valore sulla posizione in cui esporti i log eventi di Hyper-V (ad esempio,C:\HyperVLogs\*.evtx)start_at: imposta subeginningper leggere i log esistenti o suendper leggere solo le nuove voci
Configurazione dell'esportatore:
windows_hyperv: Nome descrittivo per l'esportatorecreds_file_path: percorso completo del file di autenticazione importazione:- Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Windows:
<customer_id>: l'ID cliente del passaggio precedenteendpoint: URL endpoint regionale:- Stati Uniti:
malachiteingestion-pa.googleapis.com - Europa:
europe-malachiteingestion-pa.googleapis.com - Asia:
asia-southeast1-malachiteingestion-pa.googleapis.com - Per un elenco completo, vedi Endpoint regionali.
- Stati Uniti:
WINDOWS_HYPERV: Tipo di log esattamente come appare in Chronicleingestion_labels: Etichette facoltative in formato YAML (ad esempio,env: production)
Configurazione della pipeline:
hyperv_to_chronicle: Nome descrittivo della pipeline
Salvare il file di configurazione
- Dopo la modifica, salva il file:
- Windows: fai clic su File > Salva.
Riavvia l'agente Bindplane per applicare le modifiche
Per riavviare l'agente Bindplane in Windows:
Scegli una delle seguenti opzioni:
- Prompt dei comandi o PowerShell come amministratore:
net stop observiq-otel-collector && net start observiq-otel-collector- Console dei servizi:
- Premi
Win+R, digitaservices.msce premi Invio. - Individua observIQ OpenTelemetry Collector.
- Fai clic con il tasto destro del mouse e seleziona Riavvia.
- Premi
Verifica che il servizio sia in esecuzione:
sc query observiq-otel-collectorControlla i log per individuare eventuali errori:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
Configura l'esportazione dei log di Windows Hyper-V
I log di Windows Hyper-V vengono archiviati come voci del log eventi di Windows. Devi esportare questi log in file su disco in modo che l'agente Bindplane possa raccoglierli.
Crea una directory per archiviare i file di log esportati:
mkdir C:\HyperVLogsEsporta i log eventi di Hyper-V utilizzando
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.evtxPuoi esportare altri canali di eventi Hyper-V in base alle esigenze. I canali disponibili includono:
Microsoft-Windows-Hyper-V-VMMS-Admin(Virtual Machine Management Service)Microsoft-Windows-Hyper-V-Worker-Admin(processi di lavoro della VM)Microsoft-Windows-Hyper-V-Hypervisor-Admin(eventi hypervisor)Microsoft-Windows-Hyper-V-Config-Admin(eventi di configurazione)
(Facoltativo) Pianifica esportazioni regolari utilizzando 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"Verifica che i file di log esportati vengano creati in `C:\HyperVLogs`.
Assicurati che il percorso dell'agente Bindplane
includeinconfig.yamlcorrisponda alla directory di esportazione.
Tabella di mappatura UDM
| Campo log | Mappatura UDM | Logic |
|---|---|---|
| canale, 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 | Unite alle etichette create da questi campi |
| system_time, EventReceivedTime | metadata.collected_timestamp | Analizzato da system_time con formati o da EventReceivedTime come UNIX o UNIX_MS |
| Messaggio | metadata.description | Valore copiato direttamente |
| EventTime, EventReceivedTime | metadata.event_timestamp | Analizzato da EventTime come UNIX o UNIX_MS oppure da EventReceivedTime come UNIX o UNIX_MS |
| metadata.event_type | Imposta su "PROCESS_LAUNCH" se has_principal e has_target_process, altrimenti "USER_LOGIN" se has_principal e has_target e non has_target_process, altrimenti "STATUS_UPDATE" se has_principal e non has_target, altrimenti "USER_RESOURCE_ACCESS" se has_target, altrimenti "GENERIC_EVENT" | |
| provider.event_source | metadata.product_event_type | Valore copiato direttamente |
| record_id, RecordNumber | metadata.product_log_id | Convertito in stringa da record_id se non è vuoto o da RecordNumber se non è vuoto |
| provider.name, SourceName | metadata.product_name | Valore di provider.name se non è vuoto, altrimenti SourceName se non è vuoto, altrimenti "Microsoft-Windows-Hyper-V" |
| Versione | metadata.product_version | Convertito in stringa |
| messaggio | network.session_duration.nanos | Estratto dal messaggio utilizzando il pattern grok, convertito in numero intero |
| Dominio | principal.administrative_domain | Valore copiato direttamente |
| computer | principal.asset.hostname | Valore copiato direttamente |
| computer, Hostname | principal.hostname | Valore del computer se non è vuoto, altrimenti dal nome host se non è vuoto |
| AccountName | principal.user.role_description | Valore copiato direttamente |
| AccountType | principal.user.role_name | Valore copiato direttamente |
| event_data.name | principal.user.user_display_name | Valore copiato direttamente |
| security.user_id, UserID | principal.user.userid | Valore di security.user_id se non è vuoto, altrimenti di UserID se non è vuoto |
| messaggio | security_result.description | Estratto dal messaggio utilizzando il pattern grok |
| message, ActivityId | security_result.detection_fields | Unito all'etichetta nt_status estratta dal messaggio utilizzando grok e da ActivityId |
| level, Severity | security_result.severity | Impostato in base al valore del livello (1-3 INFORMATIONAL, 4 ERROR, 5 CRITICAL, altrimenti UNKNOWN_SEVERITY) o in base alla gravità (INFO INFORMATIONAL, WARN MEDIUM, ERROR ERROR) |
| EventType | security_result.severity_details | Valore copiato direttamente |
| execution.process_id, ProcessID | target.process.pid | Convertito in stringa da execution.process_id se non è vuoto o da ProcessID se non è vuoto |
| execution.thread_id, ThreadID | target.process.product_specific_process_id | Impostato su "ThreadID: |
| provider.guid, ProviderGuid | target.resource.id | Valore di provider.guid dopo la rimozione di { } o di ProviderGuid dopo la rimozione di { } |
| messaggio | target.resource.product_object_id | Estratto dal messaggio utilizzando il pattern grok |
| provider.guid | target.resource.type | Impostato su "Hyper-V VmSwitch" se non è vuoto |
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.