Mengumpulkan log Microsoft Defender for IoT (CyberX)
Dokumen ini menjelaskan cara menyerap log Microsoft Defender for IoT (CyberX) ke Google Security Operations menggunakan Bindplane.
Microsoft Defender for IoT (sebelumnya CyberX) adalah platform keamanan IoT/OT tanpa agen yang menyediakan penemuan aset, pengelolaan kerentanan, dan pemantauan ancaman berkelanjutan untuk sistem kontrol industri (ICS) dan lingkungan teknologi operasional (OT). Layanan ini mendeteksi perilaku anomali dan ancaman yang diketahui di seluruh jaringan IoT/OT tanpa memengaruhi proses operasional. Parser mengekstrak kolom dari syslog CyberX dan log berformat key-value. Log ini menggunakan grok dan/atau kv untuk mengurai pesan log, lalu memetakan nilai ini ke Model Data Terpadu (UDM). Layanan ini juga menetapkan nilai metadata default untuk sumber dan jenis peristiwa.
Sebelum memulai
Pastikan Anda memiliki prasyarat berikut:
- Instance Google SecOps
- Windows Server 2016 atau yang lebih baru, atau host Linux dengan
systemd - Jika beroperasi dari balik proxy, pastikan port firewall terbuka sesuai dengan persyaratan agen Bindplane
- Akses istimewa ke konsol sensor Microsoft Defender for IoT
Mendapatkan file autentikasi penyerapan Google SecOps
- Login ke konsol Google SecOps.
- Buka Setelan SIEM > Agen Pengumpulan.
- Download File Autentikasi Penyerapan. Simpan file dengan aman di sistem tempat BindPlane akan diinstal.
Mendapatkan ID pelanggan Google SecOps
- Login ke konsol Google SecOps.
- Buka Setelan SIEM > Profil.
- Salin dan simpan ID Pelanggan dari bagian Detail Organisasi.
Menginstal agen Bindplane
Instal agen Bindplane di sistem operasi Windows atau Linux 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.
Penginstalan Linux
- Buka terminal dengan hak istimewa root atau sudo.
Jalankan perintah berikut:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.shTunggu hingga penginstalan selesai.
Verifikasi penginstalan dengan menjalankan:
sudo systemctl status observiq-otel-collector
Layanan akan ditampilkan sebagai aktif (berjalan).
Referensi penginstalan tambahan
Untuk opsi penginstalan dan pemecahan masalah tambahan, lihat Panduan penginstalan agen BindPlane.
Mengonfigurasi agen BindPlane untuk menyerap syslog dan mengirimkannya ke Google SecOps
Cari file konfigurasi
Linux:
sudo nano /etc/bindplane-agent/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
Edit file konfigurasi
Ganti seluruh konten
config.yamldengan konfigurasi berikut:receivers: udplog: listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: compression: gzip creds_file_path: '/path/to/ingestion-authentication-file.json' customer_id: 'YOUR_CUSTOMER_ID' endpoint: malachiteingestion-pa.googleapis.com log_type: 'CYBERX' raw_log_field: body ingestion_labels: service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
Parameter konfigurasi
Ganti placeholder berikut:
Konfigurasi penerima:
udplog: Gunakanudploguntuk syslog UDP atautcploguntuk syslog TCP0.0.0.0: Alamat IP yang akan didengarkan (0.0.0.0untuk mendengarkan semua antarmuka)514: Nomor port yang akan diproses (port syslog standar)
Konfigurasi eksportir:
creds_file_path: Jalur lengkap ke file autentikasi penyerapan:- Linux:
/etc/bindplane-agent/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
YOUR_CUSTOMER_ID: ID Pelanggan dari bagian Dapatkan ID pelangganendpoint: URL endpoint regional:- Amerika Serikat:
malachiteingestion-pa.googleapis.com - Eropa:
europe-malachiteingestion-pa.googleapis.com - Asia:
asia-southeast1-malachiteingestion-pa.googleapis.com - Lihat Endpoint Regional untuk mengetahui daftar lengkapnya
- Amerika Serikat:
log_type: Jenis log persis seperti yang muncul di Chronicle (CYBERX)
Simpan file konfigurasi
- Setelah mengedit, simpan file:
- Linux: Tekan
Ctrl+O, laluEnter, laluCtrl+X - Windows: Klik File > Save
- Linux: Tekan
Mulai ulang agen Bindplane untuk menerapkan perubahan
Untuk memulai ulang agen Bindplane di Linux, jalankan perintah berikut:
sudo systemctl restart observiq-otel-collectorPastikan layanan sedang berjalan:
sudo systemctl status observiq-otel-collectorPeriksa log untuk mengetahui error:
sudo journalctl -u observiq-otel-collector -f
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-collectorKonsol layanan:
- Tekan
Win+R, ketikservices.msc, lalu tekan Enter. - Temukan observIQ OpenTelemetry Collector.
Klik kanan, lalu pilih Mulai Ulang.
Pastikan layanan sedang berjalan:
sc query observiq-otel-collectorPeriksa log untuk mengetahui error:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
- Tekan
Mengonfigurasi penerusan Syslog di Microsoft Defender for IoT (CyberX)
- Login ke konsol sensor Microsoft Defender for IoT (sebelumnya CyberX).
- Buka Setelan Sistem > Penerusan.
- Klik Tambahkan (atau +) untuk membuat aturan penerusan baru.
- Berikan detail konfigurasi berikut:
- Nama Aturan: Masukkan nama deskriptif (misalnya,
Google-SecOps-Bindplane). - Tingkat keparahan: Pilih Semua (atau pilih tingkat keparahan tertentu: Ringan, Berat, Kritis).
- Protokol: Pilih Semua (atau pilih protokol tertentu yang akan dipantau).
- Mesin: Pilih Semua (atau pilih mesin deteksi tertentu).
- Tindakan: Pilih Kirim Syslog.
- Nama Aturan: Masukkan nama deskriptif (misalnya,
- Dalam konfigurasi Syslog Server:
- Host: Masukkan alamat IP host agen Bindplane.
- Port: Masukkan
514. - Protocol: Pilih UDP.
- Format: Pilih CEF (Common Event Format).
- Zona waktu: Pilih UTC (direkomendasikan).
- Klik Simpan.
- Aktifkan aturan penerusan dengan mengalihkan aturan ke Aktif.
- Pastikan pesan syslog dikirim dengan memeriksa log agen Bindplane.
Tabel pemetaan UDM
| Kolom Log | Pemetaan UDM | Logika |
|---|---|---|
| Masker Akses | security_result.detection_fields.value | Nilai access_mask dari access_request_kvdata yang diuraikan |
| Domain Akun | principal.administrative_domain | Nilai principal_domain dari principal_kvdata yang diuraikan |
| Domain Akun | target.administrative_domain | Nilai target_domain dari target_kvdata yang diuraikan |
| Nama Akun | principal.user.userid | Nilai principal_account_name dari principal_kvdata yang diuraikan |
| Nama Akun | target.user.userid | Nilai target_account_name dari target_kvdata yang diuraikan |
| tindakan | security_result.action_details | Nilai tindakan |
| tindakan | security_result.action | Diturunkan. Jika tindakan adalah "accept", "passthrough", "pass", "permit", "detected", atau "close", petakan ke "ALLOW". Jika tindakan adalah "deny", "dropped", atau "blocked", petakan ke "BLOCK". Jika tindakan adalah "timeout", petakan ke "GAGAL". Jika tidak, petakan ke "UNKNOWN_ACTION". |
| Nama Algoritma | security_result.detection_fields.value | Nilai algorithm_name dari cryptographic_kvdata yang diuraikan |
| aplikasi | target.application | Nilai layanan jika app_protocol_output kosong |
| appcat | security_result.detection_fields.value | Nilai appcat |
| Nama Aplikasi | principal.application | Nilai application_name |
| Paket Autentikasi | security_result.about.resource.name | Nilai authentication_package |
| Pemberitahuan Azure Defender for IoT | security_result.detection_fields.value | Nilai azure_defender_for_iot_alert |
| channel | security_result.detection_fields.value | Nilai channel |
| Alamat Klien | principal.ip, principal.asset.ip | Nilai source_ip |
| Port Klien | principal.port | Nilai source_port |
| craction | security_result.detection_fields.value | Nilai tindakan |
| Kredensial Pengelola Kredensial dicadangkan | security_result.description | Nilai deskripsi |
| Kredensial Pengelola Kredensial telah dibaca. | security_result.description | Nilai deskripsi |
| crscore | security_result.severity_details | Nilai crscore |
| crlevel | security_result.severity, security_result.severity_details | Nilai crlevel. Jika crlevel adalah "HIGH", "MEDIUM", "LOW", atau "CRITICAL", petakan ke tingkat keparahan UDM yang sesuai. |
| Operasi Kriptografi | metadata.description | Nilai product_desc |
| Nama platform CyberX | security_result.detection_fields.value | Nilai cyberx_platform_name |
| Deskripsi | security_result.description | Nilai deskripsi jika Pesan kosong |
| Tujuan | target.ip, target.asset.ip, atau target.hostname | Jika Tujuan adalah alamat IP, petakan ke target.ip dan target.asset.ip. Jika tidak, petakan ke target.hostname. |
| Alamat Tujuan | target.ip, target.asset.ip | Nilai destination_ip dari network_information yang diuraikan |
| DRA tujuan | target.resource.name | Nilai destination_dra |
| IP tujuan | target.ip, target.asset.ip | Nilai destination_ip |
| Port Tujuan | target.port | Nilai destination_port dari network_information yang diuraikan |
| devid | principal.resource.product_object_id | Nilai devid |
| devname | principal.resource.name | Nilai devname |
| Arah | network.direction | Jika Arah adalah "masuk", "masuk", atau "respons", petakan ke "MASUK". Jika Arah adalah "keluar", "keluar", atau "permintaan", petakan ke "KELUAR". |
| dstip | target.ip, target.asset.ip | Nilai dstip jika destination_ip kosong |
| dstcountry | target.location.country_or_region | Nilai dstcountry |
| dstintf | security_result.detection_fields.value | Nilai dstintf |
| dstintfrole | security_result.detection_fields.value | Nilai dstintfrole |
| dstosname | target.platform | Nilai dstosname jika "WINDOWS", "LINUX", atau "MAC". |
| dstport | target.port | Nilai dstport jika destination_port kosong |
| dstswversion | target.platform_version | Nilai dstswversion |
| durasi | network.session_duration.seconds | Nilai durasi |
| event_id | security_result.rule_name | Digunakan untuk membuat nama aturan sebagai "EventID: %{event_id}" |
| event_in_sequence | security_result.detection_fields.value | Nilai event_in_sequence |
| ID Waktu Proses Filter | security_result.detection_fields.value | Nilai filter_run_time_id dari filter_information yang diuraikan |
| Keanggotaan Grup | security_result.detection_fields.value | Nilai group_membership jika event_id bukan 4627 |
| Keanggotaan Grup | target.user.group_identifiers | Nilai dari group_membership yang diuraikan jika event_id adalah 4627 |
| handle_id | security_result.detection_fields.value | Nilai handle_id dari object_kvdata yang diuraikan |
| ID Pegangan | security_result.detection_fields.value | Nilai handle_id dari object_kvdata yang diuraikan |
| impersonation_level | security_result.detection_fields.value | Nilai impersonation_level dari logon_information_kvdata yang diuraikan |
| Panjang Kunci | security_result.detection_fields.value | Nilai key_length dari auth_kvdata yang diuraikan |
| Nama Kunci | security_result.detection_fields.value | Nilai key_name dari cryptographic_kvdata yang diuraikan |
| Jenis Kunci | security_result.detection_fields.value | Nilai key_type dari cryptographic_kvdata yang diuraikan |
| kata kunci | security_result.detection_fields.value | Nilai kata kunci |
| Nama Lapisan | security_result.detection_fields.value | Nilai layer_name dari filter_information yang diuraikan |
| ID Waktu Proses Lapisan | security_result.detection_fields.value | Nilai layer_run_time_id dari filter_information yang diuraikan |
| logid | metadata.product_log_id | Nilai logid |
| GUID Login | principal.resource.product_object_id | Nilai logon_guid |
| ID Login | security_result.detection_fields.value | Nilai logon_id |
| logon_type | event.idm.read_only_udm.extensions.auth.mechanism | Diturunkan. Jika logon_type adalah '3', petakan ke "NETWORK". Jika '4', petakan ke "BATCH". Jika '5', petakan ke "SERVICE". Jika '8', petakan ke "NETWORK_CLEAR_TEXT". Jika '9', petakan ke "NEW_CREDENTIALS". Jika '10', petakan ke "REMOTE_INTERACTIVE". Jika '11', petakan ke "CACHED_INTERACTIVE". Jika tidak kosong, petakan ke "MECHANISM_OTHER". |
| Akun Login | security_result.detection_fields.value | Nilai logon_id dari penguraian grok |
| Proses Login | security_result.detection_fields.value | Nilai logon_process dari auth_kvdata yang diuraikan |
| Label Wajib | security_result.detection_fields.value | Nilai mandatory_label |
| mastersrcmac | principal.mac | Nilai mastersrcmac |
| Pesan | security_result.description | Nilai Pesan |
| new_process_id | target.process.pid | Nilai new_process_id dari process_kvdata yang diuraikan |
| new_process_name | target.process.file.full_path | Nilai new_process_name dari process_kvdata yang diuraikan |
| Nama Objek | security_result.detection_fields.value | Nilai object_name dari object_kvdata yang diuraikan |
| Server Objek | security_result.detection_fields.value | Nilai object_server dari object_kvdata yang diuraikan |
| Jenis Objek | security_result.detection_fields.value | Nilai object_type dari object_kvdata yang diuraikan |
| osname | principal.platform | Nilai osname jika "WINDOWS", "LINUX", atau "MAC". |
| Nama Paket (khusus NTLM) | security_result.detection_fields.value | Nilai package_name dari auth_kvdata yang diuraikan |
| policyid | security_result.rule_id | Nilai policyid |
| policyname | security_result.rule_name | Nilai policyname |
| policytype | security_result.rule_type | Nilai policytype |
| ID proses | principal.process.pid | Nilai process_id |
| Nama Proses | principal.process.file.full_path | Nilai creator_process_name dari process_kvdata yang diuraikan |
| profile_changed | security_result.detection_fields.value | Nilai profile_changed |
| Profil Diubah | security_result.detection_fields.value | Nilai profile_changed dari penguraian grok |
| proto | network.ip_protocol | Jika proto adalah "17", petakan ke "UDP". Jika "6" atau subtype adalah "wad", petakan ke "TCP". Jika "41", petakan ke "IP6IN4". Jika layanan adalah "PING" atau proto adalah "1" atau layanan berisi "ICMP", petakan ke "ICMP". |
| Protokol | network.application_protocol | Nilai app_protocol_output yang berasal dari Protocol |
| Nama Penyedia | security_result.detection_fields.value | Nilai provider_name dari provider_kvdata atau cryptographic_kvdata yang diuraikan |
| rcvdbyte | network.received_bytes | Nilai rcvdbyte |
| rcvdpkt | security_result.detection_fields.value | Nilai rcvdpkt |
| restricted_admin_mode | security_result.detection_fields.value | Nilai restricted_admin_mode dari logon_information_kvdata yang diuraikan |
| Kode Status | security_result.detection_fields.value | Nilai return_code dari cryptographic_kvdata yang diuraikan |
| respons | security_result.detection_fields.value | Nilai respons |
| rule_id | security_result.rule_id | Nilai rule_id |
| ID Keamanan | principal.user.windows_sid | Nilai principal_security_id dari principal_kvdata yang diuraikan |
| ID Keamanan | target.user.windows_sid | Nilai target_security_id dari target_kvdata yang diuraikan |
| sentbyte | network.sent_bytes | Nilai sentbyte |
| sentpkt | security_result.detection_fields.value | Nilai sentpkt |
| pelanggan | network.application_protocol atau target.application | Nilai app_protocol_output yang berasal dari layanan. Jika app_protocol_output kosong, petakan ke target.application. |
| ID layanan | security_result.detection_fields.value | Nilai service_id dari service_kvdata yang diuraikan |
| Nama Layanan | security_result.detection_fields.value | Nilai service_name dari service_kvdata yang diuraikan |
| sessionid | network.session_id | Nilai sessionid |
| Keparahan | security_result.severity, security_result.severity_details | Jika Keparahan adalah "ERROR" atau "CRITICAL", petakan ke keparahan UDM yang sesuai. Jika "INFO", petakan ke "INFORMATIONAL". Jika "MINOR", petakan ke "RENDAH". Jika "WARNING", petakan ke "MEDIUM". Jika "MAJOR", petakan ke "HIGH". Petakan juga nilai mentah ke severity_details. |
| tingkat keseriusan, | security_result.severity, security_result.severity_details | Jika tingkat keparahan adalah "1", "2", atau "3", petakan ke "RENDAH". Jika "4", "5", atau "6", petakan ke "MEDIUM". Jika "7", "8", atau "9", petakan ke "TINGGI". Petakan juga nilai mentah ke severity_details. |
| Nama Bagian | security_result.detection_fields.value | Nilai share_name dari share_information_kvdata yang diuraikan |
| Bagikan Jalur | security_result.detection_fields.value | Nilai share_path dari share_information_kvdata yang diuraikan |
| Sumber | principal.ip, principal.asset.ip, atau principal.hostname, principal.asset.hostname | Jika Sumber adalah alamat IP, petakan ke principal.ip dan principal.asset.ip. Jika tidak, petakan ke principal.hostname dan principal.asset.hostname. |
| Alamat Sumber | principal.ip, principal.asset.ip | Nilai source_ip dari network_information yang diuraikan |
| DRA Sumber | principal.resource.name | Nilai source_dra |
| IP sumber | principal.ip | Nilai source_ip |
| Alamat Jaringan Sumber | principal.ip, principal.asset.ip | Nilai source_ip |
| Port Sumber | principal.port | Nilai source_port dari network_information yang diuraikan |
| Workstation Sumber | workstation_name | Nilai source_workstation_name |
| srcip | source_ip | Nilai srcip jika source_ip kosong |
| srccountry | principal.location.country_or_region | Nilai srccountry |
| srcmac | principal.mac | Nilai srcmac |
| srcname | principal.hostname, principal.asset.hostname | Nilai srcname |
| srcport | source_port | Nilai srcport jika source_port kosong |
| srcswversion | principal.platform_version | Nilai srcswversion |
| Kode Status | network.http.response_code | Nilai status_code |
| Jenis Peninggian Token | security_result.detection_fields.value | Nilai token_elevation_type |
| transited_services | security_result.detection_fields.value | Nilai transited_services dari auth_kvdata yang diuraikan |
| transip | principal.nat_ip | Nilai transip |
| transportasi | principal.nat_port | Nilai transportasi |
| jenis | metadata.product_event_type | Digunakan dengan subjenis untuk membuat metadata.product_event_type |
| Jenis | security_result.detection_fields.value | Nilai Jenis |
| UUID | metadata.product_log_id | Nilai UUID |
| vd | principal.administrative_domain | Nilai vd |
| virtual_account | security_result.detection_fields.value | Nilai virtual_account dari logon_information_kvdata yang diuraikan |
| Nama Workstation | principal.hostname, principal.asset.hostname | Nilai workstation_name jika tidak ada ID utama lainnya |
| metadata.event_type | metadata.event_type | Diturunkan. Jika principal_present dan target_present bernilai benar, petakan ke "NETWORK_CONNECTION". Jika user_present benar, petakan ke "USER_RESOURCE_ACCESS". Jika principal_present adalah benar (true), petakan ke "STATUS_UPDATE". Jika tidak, petakan ke "GENERIC_EVENT". |
| metadata.log_type | metadata.log_type | Dikodekan secara permanen ke "CYBERX" |
| metadata.product_name | metadata.product_name | Dikodekan secara permanen ke "CYBERX" |
| metadata.vendor_name | metadata.vendor_name | Dikodekan secara permanen ke "CYBERX" |
| metadata.event_timestamp | metadata.event_timestamp | Disalin dari kolom stempel waktu tingkat teratas, atau berasal dari kolom eventtime atau tanggal dan waktu. |
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.