Mengumpulkan log ExtraHop RevealX
Dokumen ini menjelaskan cara menyerap log ExtraHop RevealX ke Google Security Operations menggunakan Bindplane. Parser mengekstrak kolom dari log berformat JSON dan Syslog. Parser ini menggunakan pola grok dan logika bersyarat untuk menangani berbagai format log, memetakan kolom yang diekstrak ke UDM, dan memperkaya data dengan informasi terkait keamanan seperti tingkat keparahan dan kategori. Parser juga menangani jenis peristiwa ExtraHop tertentu seperti Pengikatan Ulang DNS, error autentikasi Kerberos, dan koneksi RDP, dengan menerapkan logika parsing khusus untuk setiap jenis peristiwa.
Sebelum memulai
Pastikan Anda memenuhi prasyarat berikut:
- Instance Google SecOps
- Windows 2016 atau yang lebih baru atau host Linux dengan
systemd
- Jika berjalan di belakang proxy, pastikan port firewall terbuka
- Akses istimewa ke ExtraHop Reveal X
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" /quiet
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.sh
Referensi penginstalan tambahan
Untuk opsi penginstalan tambahan, lihat panduan penginstalan.
Mengonfigurasi agen BindPlane untuk menyerap Syslog dan mengirimkannya ke Google SecOps
- Akses file konfigurasi:
- Cari file
config.yaml
. Biasanya, file ini berada di direktori/etc/bindplane-agent/
di Linux atau di direktori penginstalan di Windows. - Buka file menggunakan editor teks (misalnya,
nano
,vi
, atau Notepad).
- Cari file
Edit file
config.yaml
sebagai berikut:receivers: udplog: # Replace the port and IP address as required listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in Step 1 creds_file_path: '/path/to/ingestion-authentication-file.json' # Replace with your actual customer ID from Step 2 customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # Add optional ingestion labels for better organization log_type: 'EXTRAHOP' raw_log_field: body ingestion_labels: service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
- Ganti port dan alamat IP sesuai kebutuhan di infrastruktur Anda.
- Ganti
<customer_id>
dengan ID pelanggan yang sebenarnya. - Perbarui
/path/to/ingestion-authentication-file.json
ke jalur tempat file autentikasi disimpan di bagian Dapatkan file autentikasi penyerapan Google SecOps.
Mulai ulang agen Bindplane untuk menerapkan perubahan
Untuk memulai ulang agen Bindplane di Linux, jalankan perintah berikut:
sudo systemctl restart bindplane-agent
Untuk memulai ulang agen Bindplane di Windows, Anda dapat menggunakan konsol Services atau memasukkan perintah berikut:
net stop BindPlaneAgent && net start BindPlaneAgent
Mengonfigurasi Syslog ExtraHop
- Login ke Administrasi ExtraHop menggunakan
https://<extrahop-hostname-or-IP-address>/admin
. - Buka Status dan Diagnostik > Log Audit.
- Klik Configure Syslog Settings.
- Berikan detail konfigurasi berikut:
- Tujuan: Masukkan alamat IP agen Bindplane.
- Protocol: Pilih UDP, atau TCP, bergantung pada konfigurasi Bindplane Anda.
- Port: Masukkan nomor port agen Bindplane.
- Klik Test Settings.
- Klik Simpan.
Tabel Pemetaan UDM
Kolom Log | Pemetaan UDM | Logika |
---|---|---|
alert_name |
security_result.summary |
Nilai alert_name dari log mentah dipetakan ke security_result.summary . |
answers[].data |
network.dns.answers[].data |
Nilai data untuk setiap elemen dalam array answers dari log mentah dipetakan ke kolom data dari elemen yang sesuai dalam array network.dns.answers . |
answers[].name |
network.dns.answers[].name |
Nilai name untuk setiap elemen dalam array answers dari log mentah dipetakan ke kolom name dari elemen yang sesuai dalam array network.dns.answers . |
answers[].ttl |
network.dns.answers[].ttl |
Nilai ttl untuk setiap elemen dalam array answers dari log mentah dipetakan ke kolom ttl dari elemen yang sesuai dalam array network.dns.answers . |
answers[].typeNum |
network.dns.answers[].type |
Nilai typeNum untuk setiap elemen dalam array answers dari log mentah dipetakan ke kolom type dari elemen yang sesuai dalam array network.dns.answers . |
client_ip |
principal.ip |
Nilai client_ip dari log mentah dipetakan ke principal.ip . |
cn1 |
security_result.rule_labels[].value |
Nilai cn1 dari log mentah digunakan sebagai nilai untuk elemen security_result.rule_labels dengan kunci "ID Deteksi". |
cn2 |
security_result.detection_fields[].value |
Nilai cn2 dari log mentah digunakan sebagai nilai untuk elemen security_result.detection_fields dengan kunci "riskscore". |
cs1 |
security_result.rule_name |
Nilai cs1 dari log mentah dipetakan ke security_result.rule_name . |
cs2 |
security_result.category_details[] |
Nilai cs2 dari log mentah ditambahkan sebagai elemen ke array security_result.category_details . |
description |
metadata.description |
Nilai description dari log mentah, setelah beberapa pemrosesan (menghapus karakter baris baru dan garis miring terbalik), dipetakan ke metadata.description . Dalam beberapa kasus, kolom lain dari log mentah dapat berkontribusi pada atau menggantikan kolom ini. |
details |
principal.resource.resource_subtype , security_result.summary , principal.ip |
Kolom details diuraikan. Nilai yang terkait dengan kunci "fasilitas" dipetakan ke principal.resource.resource_subtype . Nilai yang terkait dengan kunci "details" dipetakan ke security_result.summary . Nilai yang terkait dengan kunci "src_ip" dipetakan ke principal.ip . |
dst |
target.ip atau target.mac |
Nilai dst dari log mentah dipetakan ke target.ip jika berupa alamat IP, atau target.mac jika berupa alamat MAC. |
dst_ip |
target.ip |
Nilai dst_ip dari log mentah dipetakan ke target.ip . |
eh_event |
metadata.event_type , network.application_protocol |
Jika eh_event adalah "dns", metadata.event_type akan ditetapkan ke NETWORK_DNS dan network.application_protocol akan ditetapkan ke DNS . Jika eh_event adalah "RDP", metadata.event_type akan disetel ke NETWORK_CONNECTION dan network.application_protocol akan disetel ke RDP . |
event_id |
metadata.product_event_type |
Nilai event_id dari log mentah dipetakan ke metadata.product_event_type . |
facility |
principal.resource.resource_subtype |
Nilai facility dari log mentah dipetakan ke principal.resource.resource_subtype . |
ipaddr |
principal.ip |
Nilai ipaddr dari log mentah dipetakan ke principal.ip . |
jsonPayload.description |
metadata.product_event_type , principal.hostname , principal.asset.hostname , security_result.summary |
Kolom jsonPayload.description diuraikan sebagai JSON. Kolom "operation" dipetakan ke metadata.product_event_type . Kolom "event" (setelah menghapus "Audit Log") dipetakan ke principal.hostname dan principal.asset.hostname . Kolom "details" dipetakan ke security_result.summary . |
jsonPayload.event |
metadata.product_event_type , principal.hostname , principal.asset.hostname |
Nilai jsonPayload.event dari log mentah (setelah menghapus "Audit Log") dipetakan ke metadata.product_event_type , principal.hostname , dan principal.asset.hostname . |
jsonPayload.id |
metadata.product_log_id |
Nilai jsonPayload.id dari log mentah dipetakan ke metadata.product_log_id . |
macaddr |
principal.mac |
Nilai macaddr dari log mentah dipetakan ke principal.mac . |
name |
metadata.description |
Nilai name dari log mentah dipetakan ke metadata.description . |
object_id |
target.resource.product_object_id |
Nilai object_id dari log mentah dipetakan ke target.resource.product_object_id . |
object_name |
target.resource.name |
Nilai object_name dari log mentah dipetakan ke target.resource.name . |
object_type |
target.resource.resource_type |
Nilai object_type dari log mentah (dikonversi menjadi huruf besar) dipetakan ke target.resource.resource_type . |
operation |
metadata.product_event_type |
Nilai operation dari log mentah dipetakan ke metadata.product_event_type . |
priority |
security_result.severity , security_result.severity_details |
Jika priority adalah "notice", security_result.severity ditetapkan ke MEDIUM dan security_result.severity_details ditetapkan ke nilai priority . |
product_event_type |
metadata.product_event_type |
Nilai product_event_type dari log mentah dipetakan ke metadata.product_event_type . Kolom ini juga digunakan untuk menentukan metadata.event_type dan kolom lainnya berdasarkan nilainya. |
qname |
network.dns.questions[].name |
Nilai qname dari log mentah dipetakan ke kolom name elemen network.dns.questions . |
qname_or_host |
intermediary.hostname |
Nilai qname_or_host dari log mentah dipetakan ke intermediary.hostname . |
qtype |
network.dns.questions[].type |
Nilai qtype dari log mentah dipetakan ke kolom type elemen network.dns.questions , yang mengonversi representasi string ke nilai numeriknya sesuai dengan jenis data DNS. |
resource.labels.project_id |
target.resource.attribute.labels[].value |
Nilai resource.labels.project_id dari log mentah digunakan sebagai nilai untuk elemen target.resource.attribute.labels dengan kunci "Project id". |
resource.type |
target.resource.resource_subtype |
Nilai resource.type dari log mentah dipetakan ke target.resource.resource_subtype . |
rdp_record.clientBuild |
metadata.product_version |
Nilai rdp_record.clientBuild dari log mentah dipetakan ke metadata.product_version . |
rdp_record.clientBytes |
network.sent_bytes |
Nilai rdp_record.clientBytes dari log mentah dipetakan ke network.sent_bytes . |
rdp_record.clientName |
principal.hostname |
Nilai rdp_record.clientName dari log mentah dipetakan ke principal.hostname . |
rdp_record.clientPort |
principal.port |
Nilai rdp_record.clientPort dari log mentah dipetakan ke principal.port . |
rdp_record.cookie |
principal.user.userid |
Nilai rdp_record.cookie (setelah menghapus "mstshash=") dari log mentah dipetakan ke principal.user.userid . |
rdp_record.proto |
network.ip_protocol |
Nilai rdp_record.proto dari log mentah dipetakan ke network.ip_protocol , mengonversi "TCP" menjadi "TCP" dan "UDP" menjadi "UDP". |
rdp_record.selectedProtocol |
security_result.description |
Nilai rdp_record.selectedProtocol dari log mentah dipetakan ke security_result.description . |
rdp_record.serverBytes |
network.received_bytes |
Nilai rdp_record.serverBytes dari log mentah dipetakan ke network.received_bytes . |
rdp_record.serverPort |
target.port |
Nilai rdp_record.serverPort dari log mentah dipetakan ke target.port . |
rt |
metadata.event_timestamp |
Nilai rt dari log mentah diuraikan sebagai stempel waktu dan dipetakan ke metadata.event_timestamp . |
severity |
security_result.severity , security_result.severity_details , event.idm.is_alert , event.idm.is_significant |
Nilai severity dipetakan ke security_result.severity_details . Fungsi ini juga digunakan untuk menentukan nilai security_result.severity , event.idm.is_alert , dan event.idm.is_significant . |
src |
principal.ip atau principal.mac |
Nilai src dari log mentah dipetakan ke principal.ip jika berupa alamat IP, atau principal.mac jika berupa alamat MAC. |
src_ip |
principal.ip atau principal.mac |
Nilai src_ip dari log mentah dipetakan ke principal.ip jika berupa alamat IP, atau principal.mac jika berupa alamat MAC. |
summary |
security_result.summary |
Nilai summary dari log mentah dipetakan ke security_result.summary . |
ts |
metadata.event_timestamp |
Nilai ts dari log mentah diuraikan sebagai stempel waktu dan dipetakan ke metadata.event_timestamp . |
user |
principal.user.userid |
Nilai user dari log mentah dipetakan ke principal.user.userid . |
(T/A) | metadata.log_type |
Selalu disetel ke "EXTRAHOP". |
(T/A) | metadata.vendor_name |
Selalu disetel ke "EXTRAHOP". |
(T/A) | metadata.product_name |
Selalu disetel ke "EXTRAHOP". |
(T/A) | security_result.severity |
Tetapkan ke CRITICAL secara default, atau berdasarkan nilai severity atau priority . |
(T/A) | event.idm.is_alert |
Ditetapkan ke true jika security_result.severity adalah "TINGGI" atau "KRITIS". |
(T/A) | event.idm.is_significant |
Ditetapkan ke true jika security_result.severity adalah "TINGGI" atau "KRITIS". |
(T/A) | metadata.event_type |
Ditentukan berdasarkan nilai kolom lain, seperti eh_event , product_event_type , has_principal , dan dst . Setelan defaultnya adalah GENERIC_EVENT . |
(T/A) | network.application_protocol |
Ditetapkan ke DNS jika eh_event adalah "dns" atau message berisi "DNS Rebinding". Ditetapkan ke RDP jika eh_event adalah "RDP". |
(T/A) | security_result.rule_labels[].key |
Disetel ke "ID Deteksi" untuk label aturan yang berasal dari cn1 . |
(T/A) | security_result.detection_fields[].key |
Tetapkan ke "riskscore" untuk kolom deteksi yang berasal dari cn2 . |
(T/A) | principal.user.attribute.roles[].type |
Tetapkan ke SERVICE_ACCOUNT jika user_name ada. |
(T/A) | extensions.auth.type |
Disetel ke SSO jika product_event_type adalah "Error Autentikasi Klien Kerberos". |
(T/A) | extensions.auth.mechanism |
Disetel ke USERNAME_PASSWORD jika product_event_type adalah "Unsafe LDAP Authentication" atau "Kerberos Client Auth Errors". |
(T/A) | security_result.category |
Disetel ke NETWORK_SUSPICIOUS jika product_event_type adalah "DNS Internal Reverse Lookup Scan" atau berisi "Inbound Suspicious Connections". Setel ke NETWORK_MALICIOUS jika product_event_type adalah "Request to External Database Server". |
(T/A) | network.http.response_code |
Ditetapkan berdasarkan status_code yang diekstrak dari product_event_type jika cocok dengan pola "HTTP Server %{INT:status_code} %{GREEDYDATA}". |
jsonPayload.cs1 |
security_result.detection_fields[].value |
Nilai jsonPayload.cs1 dari log mentah digunakan sebagai nilai untuk elemen security_result.detection_fields . |
jsonPayload.cn1 |
security_result.detection_fields[].value |
Nilai jsonPayload.cn1 dari log mentah digunakan sebagai nilai untuk elemen security_result.detection_fields . |
jsonPayload.cn2 |
security_result.detection_fields[].value |
Nilai jsonPayload.cn2 dari log mentah digunakan sebagai nilai untuk elemen security_result.detection_fields . |
jsonPayload.cs1Label , jsonPayload.cn1Label , jsonPayload.cn2Label |
security_result.detection_fields[].key |
Kolom ini dari log mentah digunakan sebagai kunci untuk elemen yang sesuai di security_result.detection_fields . |
jsonPayload.src |
principal.ip |
Nilai jsonPayload.src dari log mentah dipetakan ke principal.ip . |
jsonPayload.dst |
target.ip |
Nilai jsonPayload.dst dari log mentah dipetakan ke target.ip . |
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.