Mengumpulkan log Windows Hyper-V
Dokumen ini menjelaskan cara menyerap log Windows Hyper-V ke Google Security Operations menggunakan Bindplane.
Windows Hyper-V adalah hypervisor Microsoft yang menghasilkan log peristiwa siklus proses VM, jaringan, penyimpanan, dan keamanan. Agen Bindplane mengumpulkan file log peristiwa Hyper-V yang diekspor langsung dari sistem file lokal.
Sebelum memulai
Pastikan Anda memiliki prasyarat berikut:
- Instance Google SecOps
- Windows Server 2016 atau yang lebih baru dengan dukungan layanan
observiq-otel-collector - Jika beroperasi dari balik proxy, pastikan port firewall terbuka sesuai dengan persyaratan agen Bindplane
- Akses istimewa ke host Windows Hyper-V dengan izin administrator
Mendapatkan file autentikasi penyerapan Google SecOps
- Login ke konsol Google SecOps.
- Buka SIEM Settings > Collection Agents.
Download Ingestion Authentication File. Simpan file dengan aman di sistem tempat Bindplane akan diinstal.
Mendapatkan ID pelanggan Google SecOps
- Login ke konsol Google SecOps.
- Buka SIEM Settings > Profile.
Salin dan simpan Customer ID dari bagian Organization Details.
Menginstal agen Bindplane
Instal agen Bindplane di sistem operasi Windows Anda sesuai dengan petunjuk berikut.
Penginstalan Windows
- Buka Command Prompt atau PowerShell sebagai administrator.
Jalankan perintah berikut:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quietTunggu hingga penginstalan selesai.
Verifikasi penginstalan dengan menjalankan:
sc query observiq-otel-collector
Layanan akan ditampilkan sebagai RUNNING.
Referensi penginstalan tambahan
Untuk opsi penginstalan dan pemecahan masalah tambahan, lihat Panduan penginstalan agen Bindplane.
Mengonfigurasi agen Bindplane untuk menyerap log dan mengirimkannya ke Google SecOps
Menemukan file konfigurasi
Windows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
Mengedit file konfigurasi
Ganti seluruh konten
config.yamldengan konfigurasi berikut: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
Parameter konfigurasi
Ganti placeholder berikut:
Konfigurasi penerima:
filelog: Jenis penerima untuk mengumpulkan file log dari diskinclude: Daftar jalur file yang akan dipantau. Tetapkan ini ke lokasi tempat Anda mengekspor log peristiwa Hyper-V (misalnya,C:\HyperVLogs\*.evtx)start_at: Tetapkan kebeginninguntuk membaca log yang ada atauenduntuk hanya membaca entri baru
Konfigurasi eksportir:
windows_hyperv: Nama deskriptif untuk eksportircreds_file_path: Jalur lengkap ke file autentikasi penyerapan:- Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Windows:
<customer_id>: ID Pelanggan dari langkah sebelumnyaendpoint: URL endpoint regional:- US:
malachiteingestion-pa.googleapis.com - Eropa:
europe-malachiteingestion-pa.googleapis.com - Asia:
asia-southeast1-malachiteingestion-pa.googleapis.com - Lihat Endpoint Regional untuk daftar lengkap
- US:
WINDOWS_HYPERV: Jenis log persis seperti yang muncul di Chronicleingestion_labels: Label opsional dalam format YAML (misalnya,env: production)
Konfigurasi pipeline:
hyperv_to_chronicle: Nama deskriptif untuk pipeline
Menyimpan file konfigurasi
- Setelah mengedit, simpan file:
- Windows: Klik File > Save
Memulai ulang agen Bindplane untuk menerapkan perubahan
Untuk memulai ulang agen Bindplane di Windows:
Pilih salah satu opsi berikut:
- Command Prompt atau PowerShell sebagai administrator:
net stop observiq-otel-collector && net start observiq-otel-collector- Konsol layanan:
- Tekan
Win+R, ketikservices.msc, lalu tekan Enter. - Temukan observIQ OpenTelemetry Collector.
- Klik kanan dan pilih Restart.
- Tekan
Pastikan layanan sedang berjalan:
sc query observiq-otel-collectorPeriksa log untuk mengetahui error:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
Mengonfigurasi ekspor log Windows Hyper-V
Log Windows Hyper-V disimpan sebagai entri Windows Event Log. Anda harus mengekspor log ini ke file di disk agar agen Bindplane dapat mengumpulkannya.
Buat direktori untuk menyimpan file log yang diekspor:
mkdir C:\HyperVLogsEkspor log peristiwa Hyper-V menggunakan
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.evtxAnda dapat mengekspor saluran peristiwa Hyper-V tambahan sesuai kebutuhan. Saluran yang tersedia meliputi:
Microsoft-Windows-Hyper-V-VMMS-Admin(Layanan Pengelolaan Virtual Machine)Microsoft-Windows-Hyper-V-Worker-Admin(Proses VM Worker)Microsoft-Windows-Hyper-V-Hypervisor-Admin(Peristiwa hypervisor)Microsoft-Windows-Hyper-V-Config-Admin(Peristiwa konfigurasi)
(Opsional) Jadwalkan ekspor reguler menggunakan 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"Pastikan file log yang diekspor dibuat di `C:\HyperVLogs`.
Pastikan jalur
includeagen Bindplane diconfig.yamlcocok dengan direktori ekspor.
Tabel pemetaan UDM
| Kolom Log | Pemetaan UDM | Logika |
|---|---|---|
| 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 | Digabungkan dengan label yang dibuat dari kolom ini |
| system_time, EventReceivedTime | metadata.collected_timestamp | Diuraikan dari system_time dengan format, atau dari EventReceivedTime sebagai UNIX atau UNIX_MS |
| Message | metadata.description | Nilai disalin langsung |
| EventTime, EventReceivedTime | metadata.event_timestamp | Diuraikan dari EventTime sebagai UNIX atau UNIX_MS, atau dari EventReceivedTime sebagai UNIX atau UNIX_MS |
| metadata.event_type | Tetapkan ke "PROCESS_LAUNCH" jika has_principal dan has_target_process, jika tidak, tetapkan ke "USER_LOGIN" jika has_principal dan has_target dan bukan has_target_process, jika tidak, tetapkan ke "STATUS_UPDATE" jika has_principal dan bukan has_target, jika tidak, tetapkan ke "USER_RESOURCE_ACCESS" jika has_target, jika tidak, tetapkan ke "GENERIC_EVENT" | |
| provider.event_source | metadata.product_event_type | Nilai disalin langsung |
| record_id, RecordNumber | metadata.product_log_id | Dikonversi ke string dari record_id jika tidak kosong, atau dari RecordNumber jika tidak kosong |
| provider.name, SourceName | metadata.product_name | Nilai dari provider.name jika tidak kosong, jika tidak, SourceName jika tidak kosong, jika tidak, "Microsoft-Windows-Hyper-V" |
| Version | metadata.product_version | Dikonversi ke string |
| message | network.session_duration.nanos | Diekstrak dari pesan menggunakan pola grok, dikonversi ke bilangan bulat |
| Domain | principal.administrative_domain | Nilai disalin langsung |
| computer | principal.asset.hostname | Nilai disalin langsung |
| computer, Hostname | principal.hostname | Nilai dari komputer jika tidak kosong, lalu dari Hostname jika tidak kosong |
| AccountName | principal.user.role_description | Nilai disalin langsung |
| AccountType | principal.user.role_name | Nilai disalin langsung |
| event_data.name | principal.user.user_display_name | Nilai disalin langsung |
| security.user_id, UserID | principal.user.userid | Nilai dari security.user_id jika tidak kosong, lalu dari UserID jika tidak kosong |
| message | security_result.description | Diekstrak dari pesan menggunakan pola grok |
| message, ActivityId | security_result.detection_fields | Digabungkan dengan label dari nt_status yang diekstrak dari pesan menggunakan grok, dan dari ActivityId |
| level, Severity | security_result.severity | Ditetapkan berdasarkan nilai level (1-3 INFORMATIONAL, 4 ERROR, 5 CRITICAL, jika tidak, UNKNOWN_SEVERITY), atau berdasarkan Severity (INFO INFORMATIONAL, WARN MEDIUM, ERROR ERROR) |
| EventType | security_result.severity_details | Nilai disalin langsung |
| execution.process_id, ProcessID | target.process.pid | Dikonversi ke string dari execution.process_id jika tidak kosong, atau dari ProcessID jika tidak kosong |
| execution.thread_id, ThreadID | target.process.product_specific_process_id | Tetapkan ke "ThreadID: |
| provider.guid, ProviderGuid | target.resource.id | Nilai dari provider.guid setelah menghapus { }, atau dari ProviderGuid setelah menghapus { } |
| message | target.resource.product_object_id | Diekstrak dari pesan menggunakan pola grok |
| provider.guid | target.resource.type | Tetapkan ke "Hyper-V VmSwitch" jika tidak kosong |
Log Perubahan
Lihat Log Perubahan untuk parser ini
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.