Mengumpulkan log BloxOne Threat Defense

Didukung di:

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

  1. Login ke konsol Google SecOps.
  2. Buka Setelan SIEM > Agen Pengumpulan.
  3. Download File Autentikasi Proses Transfer. Simpan file dengan aman di sistem tempat Bindplane akan diinstal.

Mendapatkan ID pelanggan Google SecOps

  1. Login ke konsol Google SecOps.
  2. Buka Setelan SIEM > Profil.
  3. Salin dan simpan ID Pelanggan dari bagian Detail Organisasi.

Menginstal agen Bindplane

Penginstalan Windows

  1. Buka Command Prompt atau PowerShell sebagai administrator.
  2. Jalankan perintah berikut:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Penginstalan Linux

  1. Buka terminal dengan hak istimewa root atau sudo.
  2. 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

  1. 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).
  2. 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
    
  3. Ganti port dan alamat IP sesuai kebutuhan di infrastruktur Anda.

  4. Ganti <customer_id> dengan ID pelanggan yang sebenarnya.

  5. 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

  1. Login ke Portal Infoblox.
  2. Buka Konfigurasi > Administrasi > Konektor Data.
  3. Pilih tab Destination Configuration.
  4. Klik Create > Syslog.
  5. 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).
  6. 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.