Mengumpulkan log DNSFilter
Versi Parser: 1.0
Dokumen ini menjelaskan cara mengonfigurasi DNSFilter untuk mengirim log ke Google Security Operations menggunakan webhook melalui protokol HTTP Event Collector (HEC).
DNSFilter adalah solusi keamanan DNS berbasis AI yang memberikan perlindungan dari ancaman, pemfilteran konten, dan visibilitas jaringan. Fitur Ekspor Data memungkinkan ekspor otomatis data log kueri DNS ke platform SIEM melalui HTTP Event Collector (HEC) API, yang mendukung pemantauan keamanan real-time dan pelaporan kepatuhan.
Sebelum memulai
Pastikan Anda memiliki prasyarat berikut:
- Instance Google SecOps
- Akses ke dasbor DNSFilter dengan izin administrator atau yang lebih tinggi
- Fitur add-on Ekspor Data DNSFilter diaktifkan (tersedia untuk paket Basic, Pro, dan Enterprise sebagai add-on berbayar)
- Akses ke Konsol Google Cloud (untuk pembuatan kunci API)
Membuat feed webhook di Google SecOps
Membuat feed
- Buka Setelan SIEM > Feed.
- Klik Tambahkan Feed Baru.
- Di halaman berikutnya, klik Konfigurasi satu feed.
- Di kolom Nama feed, masukkan nama untuk feed (misalnya,
DNSFilter HEC Feed). - Pilih Webhook sebagai Jenis sumber.
- Pilih DNSFILTER sebagai Jenis log.
- Klik Berikutnya.
- Tentukan nilai untuk parameter input berikut:
- Pemisah pemisahan (opsional): Biarkan kosong karena setiap permintaan HEC berisi peristiwa yang diformat dengan benar
- Namespace aset: Namespace aset
- Label penyerapan: Label yang akan diterapkan ke peristiwa dari feed ini
- Klik Berikutnya.
- Tinjau konfigurasi feed baru Anda di layar Selesaikan, lalu klik Kirim.
Membuat dan menyimpan kunci rahasia
Setelah membuat feed, Anda harus membuat kunci rahasia untuk autentikasi:
- Di halaman detail feed, klik Buat Kunci Rahasia.
- Dialog akan menampilkan kunci rahasia.
Salin dan simpan kunci rahasia dengan aman.
Mendapatkan URL endpoint feed
- Buka tab Detail feed.
- Di bagian Informasi Endpoint, salin URL endpoint feed.
Format URL-nya adalah:
https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreateatau
https://<REGION>-malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreateSimpan URL ini untuk langkah berikutnya.
Klik Selesai.
Membuat kunci Google Cloud API
Google SecOps memerlukan kunci API untuk autentikasi. Buat kunci API yang dibatasi di Konsol Google Cloud.
Membuat kunci API
- Buka halaman Kredensial Konsol Google Cloud.
- Pilih project Anda (project yang terkait dengan instance Google SecOps Anda).
- Klik Buat kredensial > Kunci API.
- Kunci API akan dibuat dan ditampilkan dalam dialog.
- Klik Edit kunci API untuk membatasi kunci.
Membatasi kunci API
- Di halaman setelan Kunci API:
Nama: Masukkan nama deskriptif (misalnya,
Google SecOps DNSFilter Webhook API Key) - Di bagian Pembatasan API:
- Pilih Batasi kunci.
- Di dropdown Pilih API, telusuri dan pilih Google SecOps API (atau Chronicle API).
- Klik Simpan.
- Salin nilai kunci API dari kolom Kunci API di bagian atas halaman.
Simpan kunci API dengan aman.
Mengonfigurasi Ekspor Data DNSFilter
Membuat URL endpoint HEC
Gabungkan URL endpoint Google SecOps dan kunci API untuk membuat URL HEC:
<ENDPOINT_URL>?key=<API_KEY>Contoh:
https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...
Mengonfigurasi Ekspor Data di DNSFilter
- Login ke dasbor DNSFilter.
- Buka Alat > Ekspor Data.
- Di bagian Tujuan Ekspor, pilih HTTP Event Collector (HEC).
- Di bagian Konfigurasi HEC, masukkan hal berikut:
- URL HTTP Event Collector: Tempelkan URL endpoint lengkap dengan kunci API dari langkah sebelumnya.
- Token Active Event Collector: Tempelkan kunci rahasia yang dibuat selama pembuatan feed Google SecOps.
- Klik Simpan Konfigurasi.
DNSFilter akan menguji koneksi dan menampilkan pesan keberhasilan jika konfigurasi sudah benar.
Memverifikasi penyerapan data
- Di dasbor DNSFilter, buka Alat > Ekspor Data.
- Pastikan Status ditampilkan sebagai Aktif atau Terhubung.
- Di konsol Google SecOps, buka Setelan SIEM > Feed.
- Temukan feed DNSFilter Anda dan pastikan Status ditampilkan sebagai Aktif.
- Klik nama feed untuk melihat detailnya.
- Periksa metrik Log yang Diserap untuk mengonfirmasi bahwa data mengalir.
Untuk menelusuri peristiwa DNSFilter, buka Penelusuran, dan jalankan kueri berikut:
metadata.log_type = "DNSFILTER"
Referensi metode autentikasi
Feed webhook Google SecOps mendukung beberapa metode autentikasi. Integrasi HEC DNSFilter menggunakan metode hybrid.
Metode yang digunakan: Hybrid (URL + Header)
DNSFilter mengirimkan kunci API di URL dan kunci rahasia (token HEC) di header permintaan.
Format permintaan:
POST <ENDPOINT_URL>?key=<API_KEY> HTTP/1.1 Content-Type: application/json Authorization: Splunk <SECRET_KEY> { "event": "data", "timestamp": "2025-01-15T10:30:00Z" }
Metode alternatif: Header kustom
Jika mengonfigurasi aplikasi kustom untuk mengirim log ke Google SecOps, gunakan metode ini untuk keamanan yang lebih baik.
Format permintaan:
POST <ENDPOINT_URL> HTTP/1.1 Content-Type: application/json x-goog-chronicle-auth: <API_KEY> x-chronicle-auth: <SECRET_KEY> { "event": "data", "timestamp": "2025-01-15T10:30:00Z" }Kelebihan:
- Kunci API dan rahasia tidak terlihat di URL
- Lebih aman (header tidak dicatat dalam log akses server web)
- Metode pilihan jika vendor mendukungnya
Nama header autentikasi
Google SecOps menerima nama header berikut untuk autentikasi:
Untuk kunci API:
x-goog-chronicle-auth(direkomendasikan)X-Goog-Chronicle-Auth(tidak peka huruf besar/kecil)
Untuk kunci rahasia:
x-chronicle-auth(direkomendasikan)X-Chronicle-Auth(tidak peka huruf besar/kecil)Authorization: Splunk <TOKEN>(kompatibilitas HEC)
Batas dan praktik terbaik webhook
Batas permintaan
| Batas | Nilai |
|---|---|
| Ukuran permintaan maksimum | 4 MB |
| QPS maksimum (kueri per detik) | 15.000 |
| Waktu tunggu permintaan | 30 detik |
| Perilaku percobaan ulang | Otomatis dengan backoff eksponensial |
Praktik terbaik
- Memantau status ekspor: Periksa status Ekspor Data di dasbor DNSFilter secara berkala untuk memastikan aliran data berkelanjutan.
- Rotasi kunci API: Putar kunci Google Cloud API Anda secara berkala untuk keamanan.
- Pengelolaan kunci rahasia: Simpan kunci rahasia Google SecOps dengan aman dan buat ulang jika diretas.
- Retensi data: Konfigurasi kebijakan retensi data yang sesuai di DNSFilter dan Google SecOps.
- Konfigurasi pemberitahuan: Siapkan pemberitahuan di Google SecOps untuk peristiwa keamanan DNS penting.
Pemecahan masalah
Uji koneksi gagal
Jika uji konfigurasi Ekspor Data DNSFilter gagal:
- Pastikan URL HEC sudah benar dan menyertakan parameter kunci API.
- Pastikan kunci rahasia (token HEC) disalin dengan benar tanpa spasi tambahan.
- Pastikan kunci Google Cloud API memiliki akses Chronicle API yang diaktifkan.
- Pastikan feed Google SecOps berstatus Aktif.
- Periksa konektivitas jaringan dari DNSFilter ke endpoint Google Cloud.
Tidak ada data yang muncul di Google SecOps
Jika koneksi berhasil tetapi tidak ada data yang muncul:
- Pastikan kueri DNS dibuat di deployment DNSFilter Anda.
- Periksa Log Kueri DNSFilter untuk mengonfirmasi bahwa traffic sedang diproses.
- Di Google SecOps, telusuri
metadata.log_type = "DNSFILTER"untuk memverifikasi penyerapan. - Periksa metrik Log yang Diserap feed di Google SecOps.
- Tinjau Log Error feed untuk mengetahui error penyerapan.
Ekspor Data menampilkan pesan error
Penyebab umum error:
- Kredensial tidak valid: Kunci API atau kunci rahasia salah atau sudah tidak berlaku.
- Ketidakcocokan region: Region URL endpoint Google SecOps tidak cocok dengan instance Anda.
- Izin: Kunci API tidak memiliki akses Chronicle API yang diaktifkan.
- Masalah jaringan: Firewall atau proxy memblokir koneksi HTTPS keluar.
Tabel pemetaan UDM
| Kolom Log | Pemetaan UDM | Logika |
|---|---|---|
| time | metadata.collected_timestamp | Dikonversi menggunakan format tanggal: yyyy-MM-dd HH:mm:ss Z UTC |
| metadata.event_type | Ditetapkan ke "STATUS_UPDATE" jika principal_ip_present, principal_hostname_present, atau principal_mac_present bernilai benar, jika tidak, ditetapkan ke "GENERIC_EVENT" | |
| question_type | network.dns.questions | question_type dikonversi ke question.type menggunakan pemetaan jenis data DNS, lalu digabungkan ke dalam array |
| code | network.dns.response_code | Dikonversi menggunakan pemetaan kode respons DNS |
| protocol | network.ip_protocol | Dikonversi menggunakan pemetaan protokol IP |
| client | principal.hostname | Nilai disalin langsung |
| request_address, ip4, ip6, source_addresses | principal.ip | Digabungkan dari request_address (IP yang diekstrak), ip4 (IP yang diekstrak), ip6 (IP yang diekstrak), dan IP yang diekstrak dari array source_addresses |
| region | principal.location.country_or_region | Nilai disalin langsung |
| clientMac | principal.mac | Nilai disalin langsung jika cocok dengan ekspresi reguler MAC |
| clientID | principal.resource.product_object_id | Nilai disalin langsung |
| username | principal.user.user_display_name | Nilai disalin langsung |
| user_id | principal.user.userid | Nilai disalin langsung |
| code, original_code, clientType, collection, network_name, networkID, collectionID, policy, policyID, scheduled_policy, scheduled_policyID, sec_cats, sec_allow_cats, block_cats, block_allow_cats, threat, allowed, method, organization, organizationID, applicationID, application_name, application_categoryID, application_category_name | security_result.detection_fields | Label digabungkan dari berbagai kolom sumber sebagai pasangan nilai kunci |
| domain | target.administrative_domain | Nilai disalin langsung |
| fqdn | target.domain.name | Nilai disalin langsung |
| metadata.product_name | Ditetapkan ke "DNSFILTER" | |
| metadata.vendor_name | Ditetapkan ke "DNSFILTER" |
Log Perubahan
Lihat Log Perubahan untuk parser ini
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.