Mengumpulkan log BloxOne Threat Defense
Versi Parser: 8.0
Dokumen ini menjelaskan cara menyerap log BloxOne Threat Defense ke Google Security Operations menggunakan agen Bindplane.
Infoblox BloxOne Threat Defense adalah layanan keamanan DNS yang dikelola cloud yang menghasilkan pesan syslog dalam format CEF untuk kueri DNS, peristiwa threat intelligence, dan tindakan kebijakan. Parser menormalisasi kolom dan memetakannya ke Model Data Terpadu (UDM).
Sebelum memulai
Pastikan Anda memiliki prasyarat berikut:
- Instance Google SecOps
- Windows Server 2016 atau yang lebih baru, atau host Linux dengan
systemd - Konektivitas jaringan antara agen Bindplane dan platform Infoblox BloxOne
- Jika beroperasi dari balik proxy, pastikan port firewall terbuka sesuai dengan persyaratan agen Bindplane
- Akses istimewa ke Portal Infoblox
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: Buat akun layanan untuk Chronicle API (direkomendasikan)
- Login ke konsolGoogle Cloud dan pilih project Google Cloud yang ditautkan ke instance Google SecOps Anda.
- Buka IAM & Admin > Service Accounts.
- Klik Create service account.
- Berikan detail konfigurasi berikut:
- Service account name: Masukkan nama akun (misalnya,
bindplane-ingest). - Deskripsi akun layanan: Masukkan deskripsi (misalnya,
Bindplane agent log ingestion).
- Service account name: 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 Bindplane collector (/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 file autentikasi penyerapan.
- 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 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-collectorLayanan 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-collectorLayanan akan ditampilkan sebagai active (running).
Referensi penginstalan tambahan
Untuk opsi pemasangan dan pemecahan masalah tambahan, lihat Panduan pemasangan agen BindPlane.
Mengonfigurasi agen Bindplane untuk menyerap syslog dan mengirimkannya ke Google SecOps
Menemukan file konfigurasi
Linux:
sudo nano /opt/observiq-otel-collector/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/bloxone: 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: '/opt/observiq-otel-collector/ingestion-auth.json' customer_id: '<customer_id>' endpoint: chronicle.googleapis.com log_type: BLOXONE raw_log_field: body service: pipelines: logs/bloxone_to_chronicle: receivers: - udplog exporters: - chronicle/bloxone
Parameter konfigurasi
Ganti placeholder berikut:
Konfigurasi penerima:
listen_address: Alamat IP dan port untuk diproses:0.0.0.0untuk memproses semua antarmuka (direkomendasikan)- Port
514adalah port syslog standar (memerlukan root di Linux; gunakan1514untuk non-root)
Konfigurasi pengekspor:
creds_file_path: Jalur lengkap ke file kunci JSON akun layanan (Opsi 1):- Linux:
/opt/observiq-otel-collector/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
customer_id: ID Pelanggan yang disalin dari konsol Google SecOpslocation: Ganti<LOCATION>dengan region instance Google SecOps Anda (misalnya,us,europe, atauasia-southeast1). Pengekspor akan 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: Tetap tetapkan kechronicle.googleapis.com.
Pengekspor API penyerapan lama
Jika Anda menggunakan file autentikasi penyerapan dari Opsi 2, ganti blok
exportersdengan kode 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/bloxone: compression: gzip creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json' customer_id: '<customer_id>' endpoint: malachiteingestion-pa.googleapis.com log_type: BLOXONE raw_log_field: body
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. - Cari 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 syslog di Infoblox BloxOne
- Login ke Portal Infoblox.
- Buka Konfigurasi > Administrasi > Penghubung Data.
- Pilih tab Destination Configuration.
- Klik Create > Syslog.
- Berikan detail konfigurasi berikut:
- Name: Berikan nama deskriptif (misalnya, Google SecOps collector).
- Deskripsi: Berikan deskripsi singkat.
- Status: Pilih Aktifkan.
- Tag: Klik Tambahkan dan tentukan hal berikut untuk mengaitkan kunci dengan tujuan:
- KEY: Masukkan nama deskriptif untuk kunci.
- VALUE: Masukkan nilai Anda 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 (defaultnya adalah
514untuk 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. 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 garis 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 dan petakan masing-masing ke target.location.region_latitude dan target.location.region_longitude. |
additional_string.key |
Mirip dengan additional_list.key, kolom ini digunakan dalam loop untuk melakukan iterasi pada array additional_string dan mengekstrak data berdasarkan nilai key. 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 menjadi 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 secara langsung, tetapi hanya jika raw.infobloxb1region kosong. |
device |
principal.ip, principal.asset.ip |
Dipetakan secara langsung, tetapi hanya jika raw.dvc kosong. |
dhcp_fingerprint |
security_result.detection_fields.value |
Dipetakan langsung dengan tombol 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 |
Diuraikan 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 secara langsung setelah dikonversi menjadi huruf kecil. |
network |
principal.hostname, principal.asset.hostname |
Dipetakan secara 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 dari 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 tombol 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 tidak bertanda).- Jika qtype adalah PTR, petakan ke 12 (dikonversi ke bilangan bulat tidak bertanda). |
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 diperoleh berdasarkan logika berikut:- Jika raw.deviceseverity ada di [0, 1, 2, 3], petakan ke LOW.- Jika raw.deviceseverity ada di [4, 5, 6], petakan ke MEDIUM.- Jika raw.deviceseverity berada dalam [7, 8], petakan ke HIGH.- Jika raw.deviceseverity ada 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 tombol 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 pemeta 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 pemeta yang ditentukan dalam file dns_record_type.include. |
raw.infobloxdnsrcode |
network.dns.response_code |
Digunakan untuk mendapatkan 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 petik 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 tidak bertanda). |
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 tombol tclass. |
threat_indicator |
security_result.detection_fields.value |
Dipetakan langsung dengan tombol threat_indicator. |
timestamp |
metadata.event_timestamp.seconds |
Diuraikan 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 tombol user_groups. |
| T/A | principal.resource.resource_subtype |
Ditetapkan 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. |
| 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. |
intermediaryhost |
intermediary.hostname |
Dipetakan dari log perubahan |
app_name |
principal.application |
Dipetakan dari log perubahan |
endpoint_groups", "user_groups", "dns_view", "dhcp_fingerprint", "policy_name", "tclass", "tproperty", "threat_indicator", "category", and "rcode |
security_result.detection_fields |
Dipetakan dari log perubahan |
Log Perubahan
Melihat Log Perubahan untuk parser ini
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.