Mengumpulkan log BloxOne Threat Defense
Dokumen ini menjelaskan cara menyerap log BloxOne Threat Defense ke
Google Security Operations menggunakan Bindplane. Parser Logstash mengekstrak kolom dari log BLOXONE DNS
yang diterima dalam format SYSLOG atau JSON. Pertama, alat ini akan menormalisasi pesan log menjadi objek JSON, lalu memetakan kolom yang diekstrak ke Model Data Terpadu (UDM), memperkaya data dengan detail geolokasi dan DNS untuk analisis keamanan.
Sebelum memulai
Pastikan Anda memiliki prasyarat berikut:
- Instance Google SecOps
- Windows 2016 atau yang lebih baru, atau host Linux dengan
systemd
- Jika berjalan di belakang proxy, port firewall terbuka
- Akses dengan hak istimewa ke Infoblox BloxOne
Mendapatkan file autentikasi penyerapan Google SecOps
- Login ke konsol Google SecOps.
- Buka Setelan SIEM > Agen Pengumpulan.
- Download File Autentikasi Proses Transfer. 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 mengirim ke Google SecOps
- Mengakses File Konfigurasi:
- Temukan 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).
- Temukan 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: '/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: 'BLOXONE' 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 Mendapatkan file autentikasi proses transfer 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 di Infoblox BloxOne
- Login ke Portal Infoblox.
- Buka Konfigurasi > Administrasi > Konektor Data.
- Pilih tab Destination Configuration.
- Klik Create > Syslog.
- Berikan detail konfigurasi berikut:
- Name: Berikan nama deskriptif (misalnya, kolektor Google SecOps).
- Deskripsi: Berikan deskripsi singkat.
- Status: Pilih Enable.
- Tag: Klik Tambahkan dan tentukan hal berikut untuk mengaitkan kunci dengan tujuan:
- KEY: Masukkan nama deskriptif untuk kunci.
- VALUE: Masukkan nilai untuk kunci.
- Format: Pilih CEF.
- Protocol: Pilih UDP atau TCP (bergantung pada konfigurasi agen Bindplane Anda).
- FQDN/IP: Masukkan alamat IP agen Bindplane.
- Port: Masukkan port agen Bindplane (default ditetapkan ke
514
untuk UDP).
- Klik Simpan & Tutup.
Tabel pemetaan UDM
Kolom log | Pemetaan UDM | Logika |
---|---|---|
additional_list.key |
Kolom ini digunakan dalam loop untuk melakukan iterasi pada array additional_list dan mengekstrak data berdasarkan nilai kolom key . IP ini tidak dipetakan langsung ke UDM. |
|
additional_list.value |
principal.location.region_latitude , principal.location.region_longitude , target.location.region_latitude , target.location.region_longitude |
Kolom ini digunakan bersama dengan additional_list.key untuk mengekstrak nilai tertentu dari array additional_list . Logika untuk mengekstrak dan memetakan nilai bergantung pada key yang sesuai. Misalnya: - Jika additional_list.key adalah intel:source:ip:geoIP:location , ekstrak nilai lintang dan bujur menggunakan grok, lalu petakan ke principal.location.region_latitude dan principal.location.region_longitude . - Jika additional_list.key adalah intel:destination:ip:geoIP:location , ekstrak nilai lintang dan bujur menggunakan grok, lalu petakan ke target.location.region_latitude dan target.location.region_longitude . |
additional_string.key |
Serupa dengan additional_list.key , kolom ini digunakan dalam loop untuk melakukan iterasi pada array additional_string dan mengekstrak data berdasarkan nilai key . IP ini tidak dipetakan langsung ke UDM. |
|
additional_string.value |
additional.fields.value.string_value , principal.location.country_or_region , target.location.country_or_region , src.ip , src.port , src.hostname , network.ip_protocol |
Digunakan dengan additional_string.key untuk mengekstrak nilai dari array additional_string . Logika untuk memetakan nilai bergantung pada key yang sesuai. Misalnya: - Jika additional_string.key adalah intel:source:ip:ip2asn:start_ip , intel:source:ip:ip2asn:finish_ip , intel:destination:ip:ip2asn:start_ip , atau intel:destination:ip:ip2asn:finish_ip , petakan nilai ke additional.fields.value.string_value dengan kunci yang sesuai. - Jika additional_string.key adalah intel:source:ip:geoIP:country , petakan nilai ke principal.location.country_or_region . - Jika additional_string.key adalah intel:destination:ip:geoIP:country , petakan nilai ke target.location.country_or_region . - Jika additional_string.key adalah log:source:ip , petakan nilai ke src.ip . - Jika additional_string.key adalah log:source:port , petakan nilai ke src.port setelah mengonversinya ke bilangan bulat. - Jika additional_string.key adalah log:source:hostname , petakan nilai ke src.hostname . - Jika additional_string.key adalah log:cdh:input:protocol , petakan nilai ke network.ip_protocol setelah mengonversinya ke huruf besar. |
app_category |
security_result.category_details |
Dipetakan secara langsung. |
confidence |
security_result.confidence |
Dipetakan berdasarkan logika berikut: - Jika confidence adalah LOW , petakan ke LOW_CONFIDENCE .- Jika confidence adalah MEDIUM , petakan ke MEDIUM_CONFIDENCE .- Jika confidence adalah HIGH , petakan ke HIGH_CONFIDENCE . |
country |
principal.location.name |
Dipetakan langsung, tetapi hanya jika raw.infobloxb1region kosong. |
device |
principal.ip , principal.asset.ip |
Dipetakan langsung, tetapi hanya jika raw.dvc kosong. |
dhcp_fingerprint |
security_result.detection_fields.value |
Dipetakan langsung dengan kunci dhcp_fingerprint . |
dns_view |
security_result.detection_fields.value |
Dipetakan langsung dengan kunci dns_view . |
endpoint_groups |
security_result.detection_fields.value |
Dipetakan langsung dengan kunci endpoint_groups . |
event_time |
metadata.event_timestamp.seconds |
Diurai sebagai stempel waktu ISO8601 dan nilai detik diekstrak. Hanya digunakan jika kolom timestamp kosong. |
feed_name |
principal.resource.name |
feed_name dipetakan ke principal.resource.name . |
feed_type |
principal.resource.attribute.labels.value |
Dipetakan langsung dengan kunci feed_type . |
mac_address |
principal.mac |
Dipetakan langsung setelah dikonversi menjadi huruf kecil. |
network |
principal.hostname , principal.asset.hostname |
Dipetakan langsung, tetapi hanya jika raw.dvchost dan raw.dvc kosong. |
os_version |
principal.platform_version |
Dipetakan secara langsung. |
policy_action |
security_result.action_details , security_result.action |
policy_action dipetakan langsung ke security_result.action_details .security_result.action berasal berdasarkan logika berikut:- Jika policy_action adalah Redirect atau Log , petakan ke ALLOW .- Jika policy_action adalah BLOCK , petakan ke BLOCK . |
policy_name |
security_result.detection_fields.value |
Dipetakan langsung dengan kunci policy_name . |
qname |
network.dns.questions.name |
Dipetakan secara langsung. |
qtype |
network.dns.questions.type |
Dipetakan berdasarkan logika berikut: - Jika qtype adalah A , petakan ke 1 (dikonversi menjadi bilangan bulat tanpa tanda tangan).- Jika qtype adalah PTR , petakan ke 12 (dikonversi menjadi bilangan bulat tanpa tanda tangan). |
raw.act |
security_result.action_details |
Dipetakan secara langsung. |
raw.app |
network.application_protocol |
Dipetakan langsung setelah dikonversi ke huruf besar. |
raw.deviceeventclassid |
metadata.product_event_type |
Digabungkan dengan raw.name (dipisahkan oleh - ) dan dipetakan ke metadata.product_event_type . |
raw.devicevendor |
metadata.vendor_name |
Dipetakan secara langsung. |
raw.deviceproduct |
metadata.product_name |
Dipetakan secara langsung. |
raw.deviceversion |
metadata.product_version |
Dipetakan secara langsung. |
raw.deviceseverity |
security_result.severity_details , security_result.severity |
raw.deviceseverity dipetakan langsung ke security_result.severity_details .security_result.severity berasal berdasarkan logika berikut:- Jika raw.deviceseverity berada di [0 , 1 , 2 , 3 ], petakan ke LOW .- Jika raw.deviceseverity berada di [4 , 5 , 6 ], petakan ke MEDIUM .- Jika raw.deviceseverity berada di [7 , 8 ], petakan ke HIGH .- Jika raw.deviceseverity berada di [9 , 10 ], petakan ke CRITICAL . |
raw.dvc |
principal.ip , principal.asset.ip |
Dipetakan secara langsung. |
raw.dvchost |
principal.hostname , principal.asset.hostname |
Dipetakan secara langsung, tetapi hanya jika tidak sama dengan raw.dvc . |
raw.infobloxb1connectiontype |
additional.fields.value.string_value |
Dipetakan langsung dengan kunci infobloxb1connectiontype . |
raw.infobloxb1ophname |
observer.hostname , observer.asset.hostname |
Dipetakan secara langsung. |
raw.infobloxb1ophipaddress |
observer.ip |
Dipetakan secara langsung. |
raw.infobloxb1policyname |
security_result.detection_fields.value |
Dipetakan langsung dengan kunci infobloxb1policyname . |
raw.infobloxdnsqclass |
dns_question.class , dns_answer.class |
Digunakan untuk mendapatkan dns_question.class dan dns_answer.class berdasarkan tabel pencarian yang ditentukan dalam file dns_query_class_mapping.include . |
raw.infobloxdnsqtype |
dns_question.type , dns_answer.type |
Digunakan untuk mendapatkan dns_question.type dan dns_answer.type berdasarkan tabel pencarian yang ditentukan dalam file dns_record_type.include . |
raw.infobloxdnsrcode |
network.dns.response_code |
Digunakan untuk memperoleh network.dns.response_code berdasarkan tabel pencarian yang ditentukan dalam file dns_response_code.include . |
raw.infobloxpolicyid |
security_result.detection_fields.value |
Dipetakan langsung dengan kunci infobloxpolicyid . |
raw.msg |
metadata.description |
raw.msg dipetakan langsung ke metadata.description setelah menghapus tanda kutip di awal dan di akhir. |
raw.name |
metadata.product_event_type |
Digabungkan dengan raw.deviceeventclassid (dipisahkan oleh - ) dan dipetakan ke metadata.product_event_type . |
rcode |
security_result.detection_fields.value , network.dns.response_code |
rcode dipetakan langsung ke security_result.detection_fields.value dengan kunci rcode .Jika rcode adalah NXDOMAIN , network.dns.response_code ditetapkan ke 3 (dikonversi menjadi bilangan bulat tanpa tanda tangan). |
rdata |
network.dns.answers.data |
Dipetakan secara langsung. |
rip |
target.ip , target.asset.ip |
Dipetakan secara langsung. |
severity |
security_result.severity |
Dipetakan berdasarkan logika berikut: - Jika severity adalah INFO (tidak peka huruf besar/kecil), petakan ke INFORMATIONAL .- Jika severity adalah HIGH , petakan ke HIGH . |
tclass |
security_result.detection_fields.value |
Dipetakan langsung dengan kunci tclass . |
threat_indicator |
security_result.detection_fields.value |
Dipetakan langsung dengan kunci threat_indicator . |
timestamp |
metadata.event_timestamp.seconds |
Diurai sebagai stempel waktu ISO8601 dan nilai detik diekstrak. |
user |
principal.user.user_display_name |
Dipetakan secara langsung. |
user_groups |
security_result.detection_fields.value |
Dipetakan langsung dengan kunci user_groups . |
T/A | principal.resource.resource_subtype |
Tetapkan ke Feed jika feed_name tidak kosong. |
T/A | metadata.log_type |
Tetapkan ke BLOXONE . |
T/A | additional.fields.key |
Tetapkan ke infobloxancount , infobloxarcount , infobloxb1connectiontype , infobloxnscount , intel:destination:ip:ip2asn:finish_ip , intel:destination:ip:ip2asn:start_ip , intel:source:ip:ip2asn:finish_ip , atau intel:source:ip:ip2asn:start_ip berdasarkan kolom raw yang sesuai. |
T/A | metadata.event_type |
Tetapkan ke STATUS_UPDATE jika has_principal adalah true , jika tidak, tetapkan ke GENERIC_EVENT . |
T/A | network.dns.questions.type |
Tetapkan ke 1 untuk data A dan 12 untuk data PTR , yang dikonversi menjadi bilangan bulat tanpa tanda tangan. |
T/A | network.dns.answers.name , network.dns.answers.type , network.dns.answers.class |
Diekstrak dari raw.msg dengan mengurai string respons DNS. |
T/A | intermediary.hostname , intermediary.ip , intermediary.asset.ip |
Diekstrak dari raw.msg dengan mengurai string respons DNS. |
Catatan: Tabel ini hanya menyertakan kolom yang dipetakan ke UDM. Beberapa kolom dari log mentah mungkin digunakan secara internal oleh parser, tetapi tidak langsung tercermin dalam output UDM akhir.
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.