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 yang didukung AI yang memberikan perlindungan terhadap 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 DNSFilter Data Export 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 > Pengelolaan Data > Feed. Jika Anda menggunakan platform khusus SIEM, buka Settings > Feeds.
- Klik Tambahkan Feed Berita 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 Log type.
- Klik Berikutnya.
- Tentukan nilai untuk parameter input berikut:
- Split delimiter (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 berita baru Anda di layar Finalize, lalu klik Submit.
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 untuk feed tersebut.
- Di bagian Endpoint Information, salin Feed endpoint URL.
Format URL-nya adalah:
https://{region}-chronicle.googleapis.com/v1/{parent}/logs:importDengan
{region}adalah region instance Google SecOps Anda (misalnya,us,europe, atauasia-southeast1), dan{parent}adalah jalur resource dalam formatprojects/<PROJECT_ID>/locations/<LOCATION>/instances/<INSTANCE_ID>/logTypes/<LOG_TYPE>.Simpan URL ini untuk langkah berikutnya.
Klik Done.
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 Credentials Konsol Google Cloud.
- Pilih project Anda (project yang terkait dengan instance Google SecOps Anda).
- Klik Create credentials > 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:
Name: Masukkan nama deskriptif (misalnya,
Google SecOps DNSFilter Webhook API Key) - Di bagian API restrictions:
- Pilih Restrict key.
- Di dropdown Select APIs, telusuri dan pilih Google SecOps API (atau Chronicle API).
- Klik Simpan.
- Salin nilai kunci API dari kolom API key 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://{region}-chronicle.googleapis.com/v1/{parent}/logs:import?key=AIzaSyD...
Mengonfigurasi Ekspor Data di DNSFilter
- Login ke dasbor DNSFilter.
- Buka Alat > Ekspor Data.
- Di bagian Export Destination, pilih HTTP Event Collector (HEC).
- Di bagian HEC Configuration, masukkan informasi berikut:
- HTTP Event Collector URL: Tempel URL endpoint lengkap dengan kunci API dari langkah sebelumnya.
- Active Event Collector Token: Tempelkan kunci rahasia yang dibuat selama pembuatan feed Google SecOps.
- Klik Simpan Konfigurasi.
DNSFilter akan menguji koneksi dan menampilkan pesan berhasil jika konfigurasi sudah benar.
Memverifikasi penyerapan data
- Di dasbor DNSFilter, buka Tools > Data Export.
- Pastikan Status ditampilkan sebagai Active atau Connected.
- Di Google SecOps, buka Setelan > Pengelolaan Data > Feed. Jika Anda menggunakan platform khusus SIEM, buka Settings > Feeds.
- Temukan feed DNSFilter Anda dan pastikan Status ditampilkan sebagai Aktif.
- Klik nama feed untuk melihat detail.
- Periksa metrik Logs Ingested untuk mengonfirmasi bahwa data mengalir.
Untuk menelusuri peristiwa DNSFilter, buka Search, lalu 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: Campuran (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 yang lebih disukai 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)
Batasan dan praktik terbaik webhook
Batas permintaan
| Batas | Nilai |
|---|---|
| Ukuran permintaan maksimum | 4 MB |
| QPS (kueri per detik) maks. | 15.000 |
| Waktu tunggu permintaan | 30 seconds |
| Perilaku percobaan ulang | Otomatis dengan backoff eksponensial |
Praktik terbaik
- Memantau status ekspor: Periksa status Ekspor Data secara rutin di dasbor DNSFilter untuk memastikan aliran data yang berkelanjutan.
- Rotasi kunci API: Rotasi kunci API Google Cloud Anda secara berkala untuk keamanan.
- Pengelolaan kunci rahasia: Simpan kunci rahasia Google SecOps dengan aman dan buat ulang jika disusupi.
- Retensi data: Konfigurasikan kebijakan retensi data yang sesuai di DNSFilter dan Google SecOps.
- Konfigurasi pemberitahuan: Siapkan pemberitahuan di Google SecOps untuk peristiwa keamanan DNS yang penting.
Pemecahan masalah
Uji koneksi gagal
Jika pengujian 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 telah mengaktifkan akses Chronicle API.
- Pastikan feed Google SecOps dalam status Active.
- 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 dalam 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 melihat apakah ada error penyerapan.
Ekspor Data menampilkan pesan error
Penyebab error umum:
- Kredensial tidak valid: Kunci API atau kunci rahasia salah atau sudah tidak berlaku.
- Region tidak cocok: Region URL endpoint Google SecOps tidak cocok dengan instance Anda.
- Izin: Kunci API tidak mengaktifkan akses Chronicle API.
- Masalah jaringan: Firewall atau proxy memblokir koneksi HTTPS keluar.
Tabel pemetaan UDM
| Kolom Log | Pemetaan UDM | Logika |
|---|---|---|
| waktu | metadata.collected_timestamp | Dikonversi menggunakan format tanggal: yyyy-MM-dd HH:mm:ss Z UTC |
| metadata.event_type | Tetapkan ke "STATUS_UPDATE" jika principal_ip_present, principal_hostname_present, atau principal_mac_present bernilai benar, jika tidak, tetapkan ke "GENERIC_EVENT" | |
| question_type | network.dns.questions | Mengonversi question_type menjadi question.type menggunakan pemetaan jenis data DNS, lalu digabungkan ke dalam array |
| kode | network.dns.response_code | Dikonversi menggunakan pemetaan kode respons DNS |
| protokol | network.ip_protocol | Dikonversi menggunakan pemetaan protokol IP |
| klien | 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 |
| nama pengguna | 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 gabungan dari berbagai kolom sumber sebagai key-value pair |
| domain | target.administrative_domain | Nilai disalin langsung |
| fqdn | target.domain.name | Nilai disalin langsung |
| metadata.product_name | Tetapkan ke "DNSFILTER" | |
| metadata.vendor_name | Tetapkan ke "DNSFILTER" |
Log Perubahan
Melihat Log Perubahan untuk parser ini
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.