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 kredensial Google SecOps untuk agen Bindplane
Untuk mengautentikasi agen Bindplane ke Google SecOps, pilih salah satu metode berikut:
- Deployment baru: Gunakan Chronicle API (Opsi 1).
- Deployment lama: Terus gunakan file autentikasi penyerapan (Opsi 2) hingga Ingestion API dihentikan pada 20 Juli 2027.
Opsi 1: Membuat akun layanan untuk Chronicle API (direkomendasikan)
- Login ke Google Cloud konsol dan pilih Google Cloud project yang ditautkan ke instance Google SecOps Anda.
- Buka IAM & Admin > Service Accounts.
- Klik Create service account.
- Berikan detail konfigurasi berikut:
- Nama akun layanan: Masukkan nama akun (misalnya,
bindplane-ingest). - Deskripsi akun layanan: Masukkan deskripsi (misalnya,
Bindplane agent log ingestion).
- Nama akun layanan: Masukkan nama akun (misalnya,
- Klik Create and continue.
- Di bagian Grant this service account access to project , klik Select a role , lalu pilih Chronicle Editor.
- Klik Continue, lalu klik Done.
- Klik akun layanan yang Anda buat, lalu buka tab Keys.
- Klik Add key > Create new key.
- Pilih JSON , lalu klik Create. File kunci akan didownload ke komputer Anda.
- Simpan file kunci sebagai
ingestion-auth.jsondi direktori pengumpul Bindplane (/opt/observiq-otel-collector/ingestion-auth.jsondi Linux atauC:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.jsondi Windows), atau perbaruicreds_file_pathdiconfig.yamlagar sesuai dengan jalur tempat Anda menyimpannya. - Buka IAM & Admin > Settings dan salin Project number. Anda akan memerlukannya untuk konfigurasi pengekspor.
Opsi 2: Mendownload file autentikasi penyerapan (lama)
- Login ke konsol Google SecOps.
- Buka SIEM Settings > Collection Agents.
- Download ingestion authentication file.
- Simpan file dengan aman di sistem tempat agen 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 pemasangan dan pemecahan masalah tambahan, lihat Panduan pemasangan agen Bindplane.
Mengonfigurasi agen Bindplane untuk menyerap log dan mengirim ke Google SecOps
Mencari 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: 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
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 pengekspor:
windows_hyperv: Nama deskriptif untuk pengeksporcreds_file_path: Jalur lengkap ke file kunci JSON akun layanan (Opsi 1):- Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Windows:
<customer_id>: ID Pelanggan dari langkah sebelumnyalocation: Ganti<LOCATION>dengan region instance Google SecOps Anda (misalnya,us,europe, atauasia-southeast1). Pengekspor menambahkan awalanchronicle.googleapis.comdengan nilai ini. Lihat Endpoint Regional untuk mengetahui daftar lengkapnya.project: Ganti<PROJECT_NUMBER>dengan nomor project dari IAM & Admin > Settings.endpoint: Tetapkan kechronicle.googleapis.com.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
Pengekspor Ingestion API lama
Jika Anda menggunakan file autentikasi penyerapan dari Opsi 2, ganti blok
exportersdengan blok berikut. Tetapkancreds_file_pathke jalur file autentikasi penyerapan, dan jika instance Anda berada di luar Amerika Serikat, gantimalachiteingestion-pa.googleapis.comdengan endpoint regional Anda (misalnya,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
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, lalu 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 Log Peristiwa Windows. 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 mencakup:
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, atau "USER_LOGIN" jika has_principal dan has_target dan bukan has_target_process, atau "STATUS_UPDATE" jika has_principal dan bukan has_target, atau "USER_RESOURCE_ACCESS" jika has_target, atau "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, atau SourceName jika tidak kosong, atau "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, atau 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.