Mengumpulkan log DNS Pasif

Didukung di:

Dokumen ini menjelaskan cara menyerap log DNS Pasif ke Google Security Operations menggunakan Google Cloud Storage V2.

DNS pasif adalah sumber data intelijen DNS yang mencatat data resolusi DNS historis untuk analisis ancaman dan penyelidikan domain. Karena data biasanya dikumpulkan dan disimpan sebagai file, Anda harus mengupload file tersebut ke bucket Google Cloud Storage (GCS), lalu mengonfigurasi feed Google SecOps untuk menyerapnya.

Sebelum memulai

Pastikan Anda memiliki prasyarat berikut:

  • Instance Google SecOps.
  • Project Google Cloud dengan Cloud Storage API yang diaktifkan.
  • Izin untuk membuat dan mengelola bucket GCS.
  • Izin untuk mengelola kebijakan IAM di bucket GCS.
  • Akses ke file data DNS Pasif (misalnya, DNSDB, Farsight, atau penyedia DNS Pasif lainnya).
  • Data DNS pasif diekspor dalam format yang didukung (misalnya, JSON atau CSV).

Membuat bucket Google Cloud Storage

  1. Buka Konsol Google Cloud.
  2. Pilih project Anda atau buat project baru.
  3. Di menu navigasi, buka Cloud Storage > Buckets.
  4. Klik Create bucket.
  5. Berikan detail konfigurasi berikut:

    Setelan Nilai
    Beri nama bucket Anda Masukkan nama yang unik secara global (misalnya, passive-dns-logs)
    Location type Pilih berdasarkan kebutuhan Anda (Region, Dual-region, Multi-region)
    Location Pilih lokasi yang paling dekat dengan instance Google SecOps Anda (misalnya, us-central1)
    Kelas penyimpanan Standar (direkomendasikan untuk log yang sering diakses)
    Access control Seragam (direkomendasikan)
    Alat perlindungan Opsional: Aktifkan pembuatan versi objek atau kebijakan retensi
  6. Klik Create.

Mengonfigurasi ekspor otomatis data DNS Pasif ke GCS

Data DNS pasif biasanya tersedia sebagai file yang diekspor dari penyedia intelijen DNS (misalnya, Farsight DNSDB, DomainTools, atau Cisco Umbrella Investigate). Agar data di GCS tetap terbaru, konfigurasikan pipeline ekspor otomatis menggunakan salah satu pendekatan berikut.

Gunakan Cloud Build yang dipicu oleh Cloud Scheduler untuk menjalankan tugas dalam container yang mengambil data DNS Pasif dari penyedia Anda dan menuliskannya ke GCS.

  1. Buat akun layanan untuk tugas ekspor:

    1. Di GCP Console, buka IAM & Admin > Service Accounts.
    2. Klik Create Service Account.
    3. Berikan detail konfigurasi berikut:
      • Nama akun layanan: Masukkan passive-dns-export-sa
      • Deskripsi akun layanan: Masukkan Service account for automated Passive DNS data export to GCS
    4. Klik Create and Continue.
    5. Tambahkan peran berikut:
      • Storage Object Admin (untuk menulis file ke GCS)
      • Cloud Build Editor (untuk menjalankan tugas Cloud Build)
    6. Klik Done.
  2. Buat file konfigurasi Cloud Build (cloudbuild.yaml):

    steps:
      - name: 'gcr.io/cloud-builders/gcloud'
        entrypoint: 'bash'
        args:
          - '-c'
          - |
            apt-get update && apt-get install -y curl jq
            # Fetch Passive DNS data from your provider
            # Replace with the actual API call for your provider
            # Example for Farsight DNSDB:
            TIMESTAMP=$(date -u +%Y%m%d_%H%M%S)
            curl -s -H "X-API-Key: $${PDNS_API_KEY}" \
              "https://api.dnsdb.info/dnsdb/v2/lookup/rrset/name/*.example.com" \
              -o /workspace/passive_dns_$${TIMESTAMP}.json
            # Upload to GCS
            gcloud storage cp /workspace/passive_dns_$${TIMESTAMP}.json \
              gs://${_BUCKET_NAME}/passive-dns/
    substitutions:
      _BUCKET_NAME: 'passive-dns-logs'
    
  3. Simpan kunci API sebagai secret Secret Manager:

    1. Di GCP Console, buka Security > Secret Manager.
    2. Klik Buat Secret.
    3. Masukkan pdns-api-key sebagai nama rahasia.
    4. Masukkan kunci API penyedia Passive DNS Anda sebagai nilai rahasia.
    5. Klik Create.
  4. Buat tugas Cloud Scheduler untuk memicu build:

    1. Di GCP Console, buka Cloud Scheduler.
    2. Klik Create Job.
    3. Berikan detail konfigurasi berikut:

      Setelan Nilai
      Nama passive-dns-export-daily
      Region Pilih region yang sama dengan bucket GCS Anda
      Frekuensi 0 3 * * * (setiap hari pukul 03.00 UTC)
      Zona Waktu UTC (direkomendasikan)
      Jenis target HTTP
      URL https://cloudbuild.googleapis.com/v1/projects/YOUR_PROJECT_ID/builds
      Metode HTTP POST
      Header Auth Tambahkan token OAuth
      Service account passive-dns-export-sa@YOUR_PROJECT_ID.iam.gserviceaccount.com
    4. Klik Create.

Opsi 2: Storage Transfer Service (untuk penyimpanan data lokal)

Jika data DNS Pasif disimpan di sistem file lokal, gunakan Storage Transfer Service dengan Agen Transfer.

  1. Di GCP Console, buka Storage Transfer Service.
  2. Klik Buat tugas transfer.
  3. Pilih POSIX filesystem sebagai sumber.
  4. Ikuti petunjuk untuk menginstal Agen Transfer Storage di komputer yang memiliki akses ke file data DNS Pasif.
  5. Konfigurasi tugas transfer:

    Setelan Nilai
    Direktori sumber Jalur ke direktori yang berisi file data DNS Pasif
    Bucket tujuan passive-dns-logs
    Jalur tujuan passive-dns/
    Jadwal Menetapkan jadwal berulang (misalnya, harian)
  6. Klik Create.

Mengambil akun layanan Google SecOps

  1. Buka Setelan SIEM > Feed.
  2. Klik Tambahkan Feed Baru.
  3. Klik Konfigurasi satu feed.
  4. Di kolom Nama feed, masukkan nama untuk feed (misalnya, Passive DNS Logs).
  5. Pilih Google Cloud Storage V2 sebagai Source type.
  6. Pilih DNS Pasif sebagai Jenis log.
  7. Klik Get Service Account.
  8. Email akun layanan yang unik akan ditampilkan, misalnya:

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  9. Salin alamat email ini untuk digunakan di langkah berikutnya.

Memberikan izin IAM ke akun layanan Google SecOps

Akun layanan Google SecOps memerlukan peran Storage Object Viewer di bucket GCS Anda.

  1. Buka Cloud Storage > Buckets.
  2. Klik nama bucket Anda (misalnya, passive-dns-logs).
  3. Buka tab Izin.
  4. Klik Grant access.
  5. Berikan detail konfigurasi berikut:
    • Add principals: Tempelkan email akun layanan Google SecOps (misalnya, chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com).
    • Tetapkan peran: Pilih Storage Object Viewer.
  6. Klik Simpan.

Mengonfigurasi feed Google SecOps

  1. Buka Setelan SIEM > Feed.
  2. Klik Tambahkan Feed Baru.
  3. Klik Konfigurasi satu feed.
  4. Di kolom Nama feed, masukkan nama untuk feed (misalnya, Passive DNS Logs).
  5. Pilih Google Cloud Storage V2 sebagai Source type.
  6. Pilih DNS Pasif sebagai Jenis log.
  7. Klik Berikutnya.
  8. Tentukan nilai untuk parameter input berikut:

    • URL bucket penyimpanan: Masukkan URI bucket GCS:

      gs://passive-dns-logs/passive-dns/
      
      • Ganti passive-dns-logs dengan nama bucket GCS Anda.
      • Ganti passive-dns dengan jalur awalan yang dikonfigurasi.
    • Opsi penghapusan sumber: Pilih opsi penghapusan sesuai preferensi Anda:

      • Jangan pernah: Tidak pernah menghapus file apa pun setelah transfer (direkomendasikan untuk pengujian).
      • Hapus file yang ditransfer: Menghapus file setelah transfer berhasil.
      • Hapus file yang ditransfer dan direktori kosong: Menghapus file dan direktori kosong setelah transfer berhasil.

    • Usia File Maksimum: Menyertakan file yang dimodifikasi dalam beberapa hari terakhir (defaultnya adalah 180 hari).

    • Namespace aset: Namespace aset.

    • Label penyerapan: Label yang akan diterapkan ke peristiwa dari feed ini.

  9. Klik Berikutnya.

  10. Tinjau konfigurasi feed baru Anda di layar Selesaikan, lalu klik Kirim.

Tabel pemetaan UDM

Kolom Log Pemetaan UDM Logika
hostname intermediary.hostname Nilai disalin secara langsung
timestamp_s metadata.event_timestamp Diuraikan sebagai stempel waktu UNIX
metadata.event_type Tetapkan ke "NETWORK_DNS"
network.application_protocol Tetapkan ke "DNS"
jawaban network.dns.answers.data Nilai dari jawaban setelah menghapus titik di akhir
ttl network.dns.answers.ttl Dikonversi ke bilangan bulat
class network.dns.questions.class Dipetakan ke nilai numerik (1 untuk IN, 3 untuk CH, 4 untuk HS)
query network.dns.questions.name Nilai dari kueri setelah menghapus titik di akhir
jenis network.dns.questions.type Dipetakan dari jenis (huruf besar) ke nilai numerik menggunakan pemetaan jenis DNS
klien principal.ip Nilai disalin secara langsung
server target.ip Nilai disalin secara langsung
metadata.product_name Setel ke "DNS Pasif"

Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.