Mengumpulkan log ESET AV
Dokumen ini menjelaskan cara menyerap log ESET AV ke Google Security Operations menggunakan Bindplane. Kode parser Logstash mengekstrak data peristiwa keamanan dari log ESET_AV yang diformat dalam SYSLOG atau JSON. Pertama-tama, pesan mentah dinormalisasi, kemudian diuraikan berdasarkan format yang diidentifikasi, memetakan kolom yang diekstrak ke skema Model Data Terpadu (UDM) yang sesuai untuk representasi dan analisis yang konsisten.
Sebelum memulai
Pastikan Anda memenuhi prasyarat berikut:
- Instance Google SecOps
- Windows 2016 atau yang lebih baru, atau host Linux dengan
systemd
- Jika dijalankan di belakang proxy, port firewall terbuka
- Akses istimewa ke ESET Protect
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
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 ingestion_labels: log_type: 'ESET_AV' raw_log_field: body 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 untuk ESET PROTECT on-premise
- Login ke Konsol Web ESET Protect.
- Buka Lainnya > Setelan > Setelan Lanjutan > Server Syslog.
- Pilih tombol di samping Aktifkan Syslog.
- Berikan detail konfigurasi berikut:
- Host: Masukkan alamat IP agen Bindplane
- Port: Masukkan nomor port agen Bindplane (
514
untuk UDP) - Format: Pilih Syslog
- Transportasi: Pilih UDP
- Keberagaman log aktivitas: Pilih Informasi
- Tombol Ekspor log ke Syslog: Pilih Aktifkan
- Format log yang diekspor: Pilih JSON
- Klik Simpan.
Mengonfigurasi Syslog untuk ESET PROTECT Cloud
- Login ke Konsol Web ESET Protect.
- Buka Lainnya > Setelan > Server Syslog.
- Pilih tombol di samping Aktifkan Syslog.
- Berikan detail konfigurasi berikut:
- Format payload: Pilih JSON
- Format amplop: Pilih Syslog
- Level Log Minimum: Pilih Informasi
- Jenis peristiwa yang akan dicatat: Pilih jenis peristiwa Semua
- IP Tujuan: Masukkan alamat IP agen Bindplane
- Port: Masukkan nomor port agen Bindplane (
514
untuk UDP)
- Klik Simpan.
Tabel pemetaan UDM
Kolom Log | Pemetaan UDM | Logika |
---|---|---|
akun | principal.administrative_domain | Diekstrak dari kolom account menggunakan pola grok %{DATA:admin_domain}\\\\%{WORD:user_id} . |
akun | principal.user.userid | Diekstrak dari kolom account menggunakan pola grok %{DATA:admin_domain}\\\\%{WORD:user_id} . |
tindakan | security_result.action | Jika action adalah Block (tidak peka huruf besar/kecil), tetapkan ke BLOCK . Jika action adalah Start (tidak peka huruf besar/kecil), tetapkan ke ALLOW . |
action_taken | security_result.action_details | Dipetakan langsung dari kolom action_taken . |
computer_severity_score | security_result.detection_fields | Pasangan nilai kunci dibuat dengan kunci computer_severity_score dan nilai dari kolom computer_severity_score . Pasangan ini ditambahkan ke array security_result.detection_fields . |
detail | security_result.description | Dipetakan langsung dari kolom detail . |
domain | principal.domain.name | Dipetakan langsung dari kolom domain . |
eialarmid | security_result.detection_fields | Pasangan nilai kunci dibuat dengan kunci eialarmid dan nilai dari kolom eialarmid . Pasangan ini ditambahkan ke array security_result.detection_fields . |
eiconsolelink | principal.url | Dipetakan langsung dari kolom eiconsolelink . |
event | metadata.description | Diganti namanya dari event menjadi event_desc dan dipetakan ke metadata.description . |
event_type | metadata.product_event_type | Dipetakan langsung dari kolom event_type . |
group_name | principal.group.group_display_name | Dipetakan langsung dari kolom group_name . |
hash | principal.file.sha1 | Dikonversi menjadi huruf kecil. Jika nilai huruf kecil cocok dengan ekspresi reguler SHA-1, dipetakan ke principal.file.sha1 . |
hash | principal.resource.attribute.labels | Pasangan nilai kunci dibuat dengan kunci hash dan nilai dari kolom hash . Pasangan ini ditambahkan ke array principal.resource.attribute.labels . |
hostname | principal.asset.hostname | Dipetakan langsung dari kolom hostname . |
hostname | principal.hostname | Dipetakan langsung dari kolom hostname . |
masuk | network.direction | Jika benar, tetapkan ke INBOUND . Jika salah (false), tetapkan ke OUTBOUND . |
ipv4 | target.asset.ip | Dipetakan langsung dari kolom ipv4 jika target_address kosong. |
ipv4 | target.ip | Dipetakan langsung dari kolom ipv4 jika target_address kosong. |
json_data | Diuraikan sebagai JSON untuk mengekstrak berbagai kolom. | |
pesan | Diuraikan menggunakan grok untuk mengekstrak stempel waktu, host, dan json_data. | |
need_restart | additional.fields | Pasangan nilai kunci dibuat dengan kunci need_restart dan nilai dari kolom need_restart (dikonversi menjadi string). Pasangan ini ditambahkan ke array additional.fields . |
os_name | principal.platform | Jika berisi Window atau window (tidak peka huruf besar/kecil), tetapkan ke WINDOWS . Jika berisi Linux atau linux (tidak peka huruf besar/kecil), tetapkan ke LINUX . Jika berisi Mac atau mac (tidak peka huruf besar/kecil), tetapkan ke MAC . |
os_name | principal.platform_version | Dipetakan langsung dari kolom os_name . |
process_name | principal.process.file.full_path | Dipetakan langsung dari kolom process_name . Jika kosong, akan mengambil nilai processname . |
processname | principal.process.file.full_path | Jika process_name kosong, dipetakan ke process_name . |
protokol | network.ip_protocol | Dikonversi menjadi huruf besar. Jika nilai huruf besar cocok dengan protokol yang diketahui (TCP, UDP, ICMP, dll.), dipetakan ke network.ip_protocol . |
hasil | security_result.summary | Dipetakan langsung dari kolom result . |
rulename | security_result.rule_name | Dipetakan langsung dari kolom rulename . |
scan_id | security_result.detection_fields | Pasangan nilai kunci dibuat dengan kunci scan_id dan nilai dari kolom scan_id . Pasangan ini ditambahkan ke array security_result.detection_fields . |
scanner_id | security_result.detection_fields | Pasangan nilai kunci dibuat dengan kunci scanner_id dan nilai dari kolom scanner_id . Pasangan ini ditambahkan ke array security_result.detection_fields . |
tingkat keseriusan, | security_result.severity | Jika berisi Warn atau warn (tidak peka huruf besar/kecil), tetapkan ke HIGH . Jika berisi Info atau info (tidak peka huruf besar/kecil), tetapkan ke LOW . |
severity_score | security_result.detection_fields | Pasangan nilai kunci dibuat dengan kunci severity_score dan nilai dari kolom severity_score . Pasangan ini ditambahkan ke array security_result.detection_fields . |
source_address | principal.asset.ip | Dipetakan langsung dari kolom source_address . |
source_address | principal.ip | Dipetakan langsung dari kolom source_address . |
source_port | principal.port | Dikonversi menjadi string, lalu menjadi bilangan bulat. Dipetakan ke principal.port . |
source_uuid | metadata.product_log_id | Dipetakan langsung dari kolom source_uuid . |
target | Diganti namanya menjadi target1 . |
|
target_address | target.asset.ip | Dipetakan langsung dari kolom target_address . |
target_address | target.ip | Dipetakan langsung dari kolom target_address . |
target_port | target.port | Dikonversi menjadi string, lalu menjadi bilangan bulat. Dipetakan ke target.port . |
threat_handled | security_result.detection_fields | Pasangan nilai kunci dibuat dengan kunci threat_handled dan nilai dari kolom threat_handled (dikonversi menjadi string). Pasangan ini ditambahkan ke array security_result.detection_fields . |
threat_name | security_result.threat_name | Dipetakan langsung dari kolom threat_name . |
threat_type | security_result.threat_id | Dipetakan langsung dari kolom threat_type . |
waktu | metadata.event_timestamp | Digunakan untuk mengisi metadata.event_timestamp . |
nama pengguna | principal.user.userid | Dipetakan langsung dari kolom username jika user_id dan user kosong. |
pengguna | principal.user.userid | Dipetakan langsung dari kolom user jika user_id kosong. |
metadata.event_type | Jika source_address dan target_address tidak kosong, tetapkan ke NETWORK_CONNECTION . Jika has_user benar, tetapkan ke USER_UNCATEGORIZED . Jika has_principal benar, tetapkan ke STATUS_UPDATE . Jika tidak, setel ke GENERIC_EVENT . |
|
metadata.log_type | Tetapkan ke ESET_AV . |
|
metadata.product_name | Tetapkan ke ESET_AV . |
|
metadata.vendor_name | Tetapkan ke ESET_AV . |
|
intermediary.hostname | Nilai kolom ini diambil dari kolom host yang diekstrak dari pesan log. |
|
principal.user.userid | Jika kolom account tidak kosong, parser akan mengekstrak ID pengguna dari kolom account menggunakan pola grok. Jika tidak, kode akan memeriksa apakah kolom user tidak kosong, jika ya, kode akan mengambil nilainya. Jika account dan user kosong, fungsi ini akan memeriksa apakah kolom username tidak kosong, jika ya, maka nilai username akan diambil. |
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.