Mulai Menggunakan Deteksi Ancaman Lanjutan DNS Armor

1. Pendahuluan dan Ikhtisar

DNS Armor, yang didukung oleh Infoblox, adalah layanan terkelola sepenuhnya yang menyediakan keamanan lapisan DNS untuk workload Google Cloud Anda. Detektor ancaman canggihnya dirancang untuk mendeteksi aktivitas berbahaya pada titik paling awal dalam rantai serangan—kueri DNS—tanpa menambah kompleksitas operasional atau overhead performa.

Codelab ini memberikan petunjuk langkah demi langkah untuk mengonfigurasi dan menguji layanan DNS Armor. Anda akan menyiapkan infrastruktur jaringan yang diperlukan, membuat detektor ancaman, menguji layanan dengan menyimulasikan ancaman DNS, dan terakhir, menganalisis log ancaman menggunakan Logs Explorer.

Yang akan Anda bangun

Dalam codelab ini, Anda akan menyediakan resource berikut:

  • Dua jaringan VPC: network-a dan network-b
  • network-a akan mencakup subnet dan virtual machine di region us-east4 dan us-central1.
  • network-b akan menyertakan subnet dan virtual machine hanya di us-east4.
  • Detektor ancaman lanjutan DNS Armor yang dikonfigurasi untuk memeriksa kueri DNS.

75d6eeb807735645.png

Yang akan Anda pelajari

  • Cara menyediakan resource jaringan yang diperlukan, termasuk VPC dan virtual machine.
  • Cara men-deploy detektor ancaman tingkat lanjut dan mengecualikan jaringan tertentu.
  • Cara memvalidasi konfigurasi deteksi ancaman menggunakan skrip simulasi ancaman.
  • Cara menganalisis log ancaman di Logs Explorer.

Yang Anda butuhkan

  • Project Google Cloud.
  • Akses ke alat command line gcloud.

2. Prasyarat

Di bagian ini, Anda akan melakukan tugas-tugas berikut:

  • Pastikan project Google Cloud Anda memenuhi batasan Kebijakan Organisasi yang diperlukan.
  • Pastikan akun pengguna Anda memiliki peran dan izin IAM yang diperlukan.
  • Aktifkan Google Cloud API yang penting untuk codelab ini.
  • Tetapkan peran IAM roles/logging.viewer ke Akun Layanan Compute Engine.

Batasan Kebijakan Organisasi

Agar berhasil menyelesaikan codelab ini, pastikan batasan Kebijakan Organisasi yang diterapkan ke project Anda. Kebijakan tertentu dapat menghambat penyediaan resource yang diperlukan. Batasan berikut dapat memengaruhi konfigurasi codelab ini:

  • constraints/gcp.resourceLocations: Membatasi region tempat Anda dapat membuat resource; codelab ini memerlukan us-east4 dan us-central1.
  • constraints/compute.vmExternalIpAccess: Mencegah pembuatan virtual machine dengan alamat IP publik, yang dapat mengganggu penyiapan jika Anda tidak mengikuti penggunaan flag --no-address dalam codelab .
  • constraints/compute.shieldedVm: Memaksakan pembuatan VM Shielded, yang tidak ditentukan oleh perintah pembuatan VM codelab, sehingga berpotensi menyebabkan error.
  • constraints/gcp.restrictServiceUsage: Membatasi API Google Cloud yang dapat diaktifkan, dan dapat memblokir codelab jika tidak mengizinkan compute.googleapis.com, networksecurity.googleapis.com, logging.googleapis.com, dan monitoring.googleapis.com.

Peran dan Izin IAM

Agar berhasil menyelesaikan codelab ini, pastikan peran dan izin IAM yang diberikan kepada pengguna Anda. Peran dan izin IAM berikut diperlukan untuk menyelesaikan Codelab ini.

  • Admin Penggunaan Layanan (roles/serviceusage.serviceUsageAdmin): Untuk mengaktifkan Google Cloud API yang diperlukan untuk codelab.
  • Compute Network Admin (roles/compute.networkAdmin): Untuk membuat dan mengelola jaringan VPC, subnet, dan Cloud NAT.
  • Compute Security Admin (roles/compute.securityAdmin): Untuk mengonfigurasi aturan firewall untuk akses SSH ke virtual machine.
  • Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1): Untuk membuat dan mengelola virtual machine yang diperlukan untuk lab.
  • IAP-secured Tunnel User (roles/iap.tunnelResourceAccessor): Untuk terhubung ke mesin virtual menggunakan SSH melalui Identity-Aware Proxy (IAP).
  • Admin Keamanan Jaringan (roles/networksecurity.admin): Untuk membuat dan mengelola detektor ancaman DNS Armor.
  • Logs Viewer (roles/logging.viewer): Untuk melihat dan menganalisis log ancaman di Logs Explorer.

Google Cloud API

Pastikan Google Cloud API yang diperlukan diaktifkan di project Anda.

1. Aktifkan API yang diperlukan, jalankan perintah gcloud berikut dalam Cloud Shell.

gcloud services enable compute.googleapis.com \
networksecurity.googleapis.com \
logging.googleapis.com \
monitoring.googleapis.com

2. Verifikasi bahwa API telah Diaktifkan, jalankan perintah gcloud berikut dalam Cloud Shell.

gcloud services list --enabled

Akun Layanan Compute Engine

Skrip pengujian memerlukan izin untuk membaca log ancaman dari Cloud Logging. Karena skrip akan dieksekusi dari VM yang menggunakan Akun Layanan Compute Engine default, peran IAM roles/logging.viewer harus ditetapkan ke akun layanan ini.

1. Tetapkan variabel lingkungan, jalankan perintah berikut dalam Cloud Shell.

export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')

2. Berikan peran pelihat logging ke SA Compute Engine. Jalankan perintah gcloud berikut dalam Cloud Shell

gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \
--role="roles/logging.viewer"

3. Penyiapan Lingkungan Dasar

Di bagian ini, Anda akan melakukan tugas-tugas berikut:

  • Buat jaringan VPC (network-a dan network-b) dengan subnet kustom.
  • Konfigurasi Cloud Router dan Cloud NAT untuk keluar internet di network-a dan network-b.
  • Buat aturan firewall untuk mengizinkan akses SSH ke VM dari rentang IP IAP untuk network-a dan network-b.
  • Sediakan mesin virtual Linux di network-a dan network-b tanpa alamat IP publik.

Membuat VPC dan Subnet

1. Buat network-a dan subnetnya di region us-east4 dan us-central1. Jalankan perintah gcloud berikut dalam Cloud Shell.

gcloud compute networks create network-a --subnet-mode=custom
gcloud compute networks subnets create subnet-a-use4 \
--network=network-a \
--range=10.10.0.0/24 \
--region=us-east4
gcloud compute networks subnets create subnet-a-usc1 \
--network=network-a \
--range=10.10.1.0/24 \
--region=us-central1

2. Buat network-b dan subnetnya di region us-east4. Jalankan perintah gcloud berikut dalam Cloud Shell.

gcloud compute networks create network-b --subnet-mode=custom
gcloud compute networks subnets create subnet-b-use4 \
--network=network-b \
--range=10.20.0.0/24 \
--region=us-east4

Mengonfigurasi Traffic Keluar Internet

1. Buat Cloud Router dan Cloud NAT untuk network-a guna mengizinkan traffic keluar internet untuk VM tanpa IP publik.

gcloud compute routers create router-a-use4 \
--network=network-a \
--region=us-east4
gcloud compute routers nats create nat-a-use4 \
--router=router-a-use4 \
--auto-allocate-nat-external-ips \
--nat-all-subnet-ip-ranges \
--region=us-east4
gcloud compute routers create router-a-usc1 \
--network=network-a \
--region=us-central1
gcloud compute routers nats create nat-a-usc1 \
--router=router-a-usc1 \
--auto-allocate-nat-external-ips \
--nat-all-subnet-ip-ranges \
--region=us-central1

2. Buat Cloud Router dan Cloud NAT untuk network-b guna mengizinkan traffic keluar internet untuk VM tanpa IP publik.

gcloud compute routers create router-b-use4 \
--network=network-b \
--region=us-east4
gcloud compute routers nats create nat-b-use4 \
--router=router-b-use4 \
--auto-allocate-nat-external-ips \
--nat-all-subnet-ip-ranges \
--region=us-east4

Mengonfigurasi Aturan Firewall

1. Buat aturan firewall untuk network-a guna mengizinkan akses SSH dari rentang IP IAP. Jalankan perintah gcloud berikut dalam Cloud Shell.

gcloud compute firewall-rules create allow-ssh-iap-a \
--network=network-a \
--allow=tcp:22 \
--source-ranges=35.235.240.0/20

2. Buat aturan firewall untuk network-b guna mengizinkan akses SSH dari rentang IP IAP. Jalankan perintah gcloud berikut dalam Cloud Shell.

gcloud compute firewall-rules create allow-ssh-iap-b \
--network=network-b \
--allow=tcp:22 \
--source-ranges=35.235.240.0/20

Membuat Virtual Machine

1. Buat VM Linux di network-a

gcloud compute instances create vm-a-use4 \
--zone=us-east4-c \
--network=network-a \
--subnet=subnet-a-use4 \
--no-address \
--scopes=cloud-platform
gcloud compute instances create vm-a-usc1 \
--zone=us-central1-a \
--network=network-a \
--subnet=subnet-a-usc1 \
--no-address \
--scopes=cloud-platform

2. Buat VM Linux di network-b

gcloud compute instances create vm-b-use4 \
--zone=us-east4-c \
--network=network-b \
--subnet=subnet-b-use4 \
--no-address \
--scopes=cloud-platform

4. Membuat Pendeteksi Ancaman DNS

Di bagian ini, Anda akan melakukan tugas-tugas berikut:

  • Buat pendeteksi ancaman.
  • Mencantumkan pendeteksi ancaman.
  • Jelaskan resource.

Setelah VPC, subnet, dan virtual machine disediakan, langkah berikutnya adalah membuat detektor ancaman DNS.

1. Buat pendeteksi ancaman menggunakan perintah gcloud beta network-security dns-threat-detectors create. Gunakan flag --excluded-networks untuk mengecualikan network-b.

gcloud beta network-security dns-threat-detectors create my-dns-threat-detector \
--location=global \
--provider=infoblox \
--excluded-networks=projects/$PROJECT_ID/global/networks/network-b

2. Mencantumkan pendeteksi ancaman untuk mengonfirmasi pembuatan.

gcloud beta network-security dns-threat-detectors list --location=global

3. Deskripsikan resource untuk memverifikasi bahwa network-b tercantum dengan benar di bagian excludedNetworks.

gcloud beta network-security dns-threat-detectors describe my-dns-threat-detector --location=global

Contoh Output:

createTime: '2025-08-06T17:06:30.297586089Z'
excludedNetworks:
- projects/dns-armor-demo-project/global/networks/network-b
name: projects/dns-armor-demo-project/locations/global/dnsThreatDetectors/my-dns-threat-detector
provider: INFOBLOX
updateTime: '2025-08-27T01:14:09.666357239Z'

5. Menguji Penyiapan

Di bagian ini, Anda akan melakukan tugas-tugas berikut:

  • Gunakan SSH untuk terhubung ke VM.
  • Instal Git di VM.
  • Buat clone repositori simulator deteksi ancaman Infoblox.
  • Jalankan skrip dan analisis output yang dihasilkan.

Validasi penyiapan dengan membuat kueri DNS berbahaya yang diemulasi dari VM Anda. Anda akan melihat entri log untuk kueri yang berasal dari network-a, sementara tidak ada log yang akan dibuat dari network-b.

1. Terapkan SSH ke vm-a-use4. Jalankan perintah gcloud berikut dalam Cloud Shell.

gcloud compute ssh vm-a-use4 --zone=us-east4-c

2. Instal Git di VM.

sudo apt-get install git -y

3. Buat clone repositori simulator deteksi ancaman Infoblox.

git clone https://github.com/infobloxopen/ib-threat-detection-simulator

4. Ubah direktori ke direktori simulator.

cd ib-threat-detection-simulator/threat_detection_simulator/

5. Jalankan skrip dan analisis output yang dihasilkan.

Buat skrip agar dapat dieksekusi.

chmod +x run.sh

Jalankan skrip.

./run.sh info basic

6. Contoh Output

Screenshot di bawah menunjukkan sebagian output skrip dari VM di network-a. Output menunjukkan bahwa 100% ancaman terdeteksi.

a66c1757f8c74da6.png

Screenshot di bawah menunjukkan sebagian output skrip dari VM di network-b. Output menunjukkan bahwa 0% ancaman terdeteksi. Hal ini sudah diperkirakan karena network-b dikecualikan selama pembuatan pendeteksi ancaman.

c12d130c95c04e84.png

7. Kembali ke Cloud Shell dengan keluar dari sesi SSH.

exit

6. Melihat Log Ancaman di Logs Explorer

Log ancaman yang dihasilkan dapat dilihat di Logs Explorer setelah menjalankan skrip pengujian, karena log tersebut ditulis ke Cloud Logging.

Contoh Entri Log

Bagian ini memberikan contoh entri log untuk ancaman DNS yang terdeteksi, yang menunjukkan informasi mendetail yang diambil oleh DNS Armor, termasuk IP sumber, domain yang dikueri, dan kategori ancaman. Dokumen ini berfungsi sebagai referensi untuk memahami struktur dan konten log yang akan Anda analisis.

{
  "insertId": "1izjkneb44",
  "jsonPayload": {
    "partnerId": "Infoblox",
    "detectionTime": "2025-08-08T01:49:54.092250101Z",
    "dnsQuery": {
      "authAnswer": false,
      "rdata": "random.malicious-domain.com.\t300\tIN\ta\t196.251.118.39",
      "protocol": "UDP",
      "projectNumber": "1234567890",
      "responseCode": "NOERROR",
      "queryType": "A",
      "location": "us-east4",
      "sourceIp": "10.10.0.2",
      "queryName": "random.malicious-domain.com.",
      "vmProjectNumber": "1234567890",
      "vmInstanceId": "01234567899876543210",
      "destinationIp": "",
      "queryTime": "2025-08-08T01:49:53.712692495Z"
    },
    "threatInfo": {
      "severity": "HIGH",
      "confidence": "HIGH",
      "threatDescription": "",
      "category": "EmergentDomain",
      "threatId": "Suspicious_EmergentDomain",
      "type": "Suspicious",
      "threatIndicator": "izumisv1.cc",
      "threatIndicatorType": "FQDN",
      "threat": "Suspicious",
      "threatFeed": "suspicious-noed"
    }
  },
  "resource": {
    "type": "networksecurity.googleapis.com/DnsThreatDetector",
    "labels": {
      "resource_container": "projects/1234567890",
      "id": "",
      "location": "us-east4"
    }
  },
  "timestamp": "2025-08-08T01:49:54.092250101Z",
  "severity": "INFO",
  "logName": "projects/dns-armor-demo-project/logs/networksecurity.googleapis.com%2Fdns_threat_events",
  "receiveTimestamp": "2025-08-08T01:49:55.290965780Z"
}

Melihat Log di Logs Explorer

1. Buka bagian Monitoring di Google Cloud Console, lalu pilih Logs explorer.

4a90c593d7e339d8.png

2. Filter semua log ancaman DNS Armor, gunakan kueri berikut. Filter ini memfilter log berdasarkan jenis resource untuk DNS Threat Detector.

resource.type="networksecurity.googleapis.com/DnsThreatDetector"

3. Filter log untuk region us-east4, tambahkan filter untuk lokasi. Kueri ini hanya akan menampilkan ancaman yang terdeteksi di region us-east4.

resource.type="networksecurity.googleapis.com/DnsThreatDetector"
resource.labels.location="us-east4"

4. Memfilter log menurut jaringan sumber, memfilter log berdasarkan alamat IP sumber kueri DNS untuk melihat ancaman yang berasal dari jaringan VPC tertentu.

Untuk melihat log dari network-a (subnet 10.10.0.0/24 dan 10.10.1.0/24):

resource.type="networksecurity.googleapis.com/DnsThreatDetector"
(jsonPayload.dnsQuery.sourceIp:"10.10.0." OR jsonPayload.dnsQuery.sourceIp:"10.10.1.")

Untuk melihat log dari network-b (subnet 10.20.0.0/24):

resource.type="networksecurity.googleapis.com/DnsThreatDetector"
jsonPayload.dnsQuery.sourceIp:"10.20.0."

7. Pembersihan

Untuk menghindari biaya di masa mendatang, hapus resource yang dibuat di codelab ini. Pastikan untuk keluar dari shell VM dan kembali ke Cloud Shell saat menjalankan perintah pembersihan.

1. Hapus VM.

gcloud compute instances delete vm-a-use4 --zone=us-east4-c --quiet
gcloud compute instances delete vm-a-usc1 --zone=us-central1-a --quiet
gcloud compute instances delete vm-b-use4 --zone=us-east4-c --quiet

2. Hapus aturan firewall.

gcloud compute firewall-rules delete allow-ssh-iap-a --quiet
gcloud compute firewall-rules delete allow-ssh-iap-b --quiet

3. Hapus Gateway Cloud NAT.

gcloud compute routers nats delete nat-a-use4 --router=router-a-use4 --region=us-east4 --quiet
gcloud compute routers nats delete nat-a-usc1 --router=router-a-usc1 --region=us-central1 --quiet
gcloud compute routers nats delete nat-b-use4 --router=router-b-use4 --region=us-east4 --quiet

4. Menghapus Cloud Router

gcloud compute routers delete router-a-use4 --region=us-east4 --quiet
gcloud compute routers delete router-a-usc1 --region=us-central1 --quiet
gcloud compute routers delete router-b-use4 --region=us-east4 --quiet

5. Hapus subnet.

gcloud compute networks subnets delete subnet-a-use4 --region=us-east4 --quiet
gcloud compute networks subnets delete subnet-a-usc1 --region=us-central1 --quiet
gcloud compute networks subnets delete subnet-b-use4 --region=us-east4 --quiet

6. Hapus pendeteksi ancaman DNS.

gcloud beta network-security dns-threat-detectors delete my-dns-threat-detector --location=global --quiet

7. Hapus VPC.

gcloud compute networks delete network-a --quiet
gcloud compute networks delete network-b --quiet

8. Selamat

Selamat! Anda telah berhasil mengonfigurasi, men-deploy, dan menguji detektor ancaman DNS Armor. Anda telah mendapatkan pengalaman langsung dalam melindungi lingkungan Google Cloud Anda dari ancaman berbasis DNS.

Dalam codelab ini, Anda telah:

  • Menyediakan lingkungan jaringan dengan beberapa VPC, subnet, dan virtual machine.
  • Mengonfigurasi traffic keluar internet untuk VM pribadi menggunakan Cloud NAT.
  • Men-deploy pendeteksi ancaman DNS Armor dan mempelajari cara mengecualikan jaringan tertentu.
  • Mensimulasikan ancaman DNS dan memvalidasi konfigurasi deteksi ancaman.
  • Menganalisis log ancaman di Logs Explorer untuk mengidentifikasi dan memahami aktivitas DNS berbahaya.

Apa selanjutnya?

Dokumen referensi