DNS Armor'un Gelişmiş Tehdit Algılama özelliğini kullanmaya başlama

1. Giriş ve Genel Bakış

Infoblox tarafından desteklenen DNS Armor, Google Cloud iş yükleriniz için DNS katmanı güvenliği sağlayan, tamamen yönetilen bir hizmettir. Gelişmiş tehdit algılayıcısı, operasyonel karmaşıklık veya performans ek yükü oluşturmadan saldırı zincirindeki en erken noktada (DNS sorgusu) kötü amaçlı etkinliği tespit etmek için tasarlanmıştır.

Bu codelab'de, DNS Armor hizmetini yapılandırma ve test etme ile ilgili adım adım talimatlar verilmektedir. Gerekli ağ altyapısını oluşturacak, tehdit algılayıcıyı oluşturacak, DNS tehditlerini simüle ederek hizmeti test edecek ve son olarak Günlük Gezgini'ni kullanarak tehdit günlüklerini analiz edeceksiniz.

Ne oluşturacaksınız?

Bu codelab'de aşağıdaki kaynakları sağlayacaksınız:

  • İki VPC ağı: network-a ve network-b
  • network-a, us-east4 ve us-central1 bölgelerindeki alt ağları ve sanal makineleri içerir.
  • network-b yalnızca us-east4 içinde bir alt ağ ve sanal makine içerir.
  • DNS sorgularını incelemek üzere yapılandırılmış bir DNS Armor gelişmiş tehdit algılayıcısı.

75d6eeb807735645.png

Neler öğreneceksiniz?

  • VPC'ler ve sanal makineler de dahil olmak üzere gerekli ağ kaynaklarının nasıl sağlanacağı.
  • Gelişmiş tehdit algılayıcıyı dağıtma ve belirli ağları hariç tutma
  • Tehdit simülasyonu komut dosyası kullanarak tehdit algılama yapılandırmasını doğrulama
  • Günlük Gezgini'nde tehdit günlüklerini analiz etme

İhtiyacınız olanlar

  • Google Cloud projesi.
  • gcloud komut satırı aracına erişim.

2. Ön koşullar

Bu bölümde aşağıdaki görevleri gerçekleştireceksiniz:

  • Google Cloud projenizin gerekli kuruluş politikası kısıtlamalarını karşıladığını doğrulayın.
  • Kullanıcı hesabınızın gerekli IAM rollerine ve izinlerine sahip olduğunu doğrulayın.
  • Bu codelab için gerekli olan Google Cloud API'lerini etkinleştirin.
  • Compute Engine hizmet hesabına roles/logging.viewer IAM rolünü atayın.

Kuruluş Politikası Kısıtlamaları

Bu codelab'i başarıyla tamamlamak için lütfen projenize uygulanan kuruluş politikası kısıtlamalarını doğrulayın. Belirli politikalar, gerekli kaynakların sağlanmasını engelleyebilir. Aşağıdaki kısıtlamalar bu codelab'in yapılandırmasını etkileyebilir:

  • constraints/gcp.resourceLocations: Kaynak oluşturabileceğiniz bölgeleri kısıtlar. Codelab için us-east4 ve us-central1 gerekir.
  • constraints/compute.vmExternalIpAccess: Herkese açık IP adreslerine sahip sanal makinelerin oluşturulmasını engeller. Bu, --no-address işaretinin codelab'deki kullanımını izlemezseniz kurulumu etkileyebilir.
  • constraints/compute.shieldedVm: Korumalı sanal makinelerin oluşturulmasını zorunlu kılar. Bu durum, kod laboratuvarının sanal makine oluşturma komutlarında belirtilmediği için hataya neden olabilir.
  • constraints/gcp.restrictServiceUsage: Hangi Google Cloud API'lerinin etkinleştirilebileceğini sınırlar ve compute.googleapis.com, networksecurity.googleapis.com, logging.googleapis.com ve monitoring.googleapis.com'ye izin vermezse codelab'i engelleyebilir.

IAM rolleri ve izinleri

Bu codelab'i başarıyla tamamlamak için lütfen kullanıcınıza verilen IAM rollerini ve izinlerini doğrulayın. Bu Codelab'i tamamlamak için aşağıdaki IAM rolleri ve izinleri gereklidir.

  • Service Usage Admin (roles/serviceusage.serviceUsageAdmin): Codelab için gerekli Google Cloud API'lerini etkinleştirmek üzere.
  • Compute Network Admin (roles/compute.networkAdmin): VPC ağları, alt ağlar ve Cloud NAT oluşturup yönetmek için.
  • Compute Security Admin (roles/compute.securityAdmin): Sanal makinelere SSH erişimi için güvenlik duvarı kurallarını yapılandırmak üzere.
  • Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1): Laboratuvar için gereken sanal makineleri oluşturmak ve yönetmek için kullanılır.
  • IAP Güvenli Tünel Kullanıcısı (roles/iap.tunnelResourceAccessor): Identity-Aware Proxy (IAP) üzerinden SSH kullanarak sanal makinelere bağlanmak için.
  • Ağ Güvenliği Yöneticisi (roles/networksecurity.admin): DNS Armor tehdit algılayıcısını oluşturmak ve yönetmek için.
  • Günlük Görüntüleyici (roles/logging.viewer): Tehdit günlüklerini Günlük Gezgini'nde görüntülemek ve analiz etmek için kullanılır.

Google Cloud API'leri

Lütfen gerekli Google Cloud API'lerinin projenizde etkinleştirildiğinden emin olun.

1. Gerekli API'leri etkinleştirin. Cloud Shell'de aşağıdaki gcloud komutlarını çalıştırın.

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

2. API'lerin etkinleştirildiğini doğrulayın. Cloud Shell'de aşağıdaki gcloud komutlarını çalıştırın.

gcloud services list --enabled

Compute Engine hizmet hesabı

Test komut dosyasının, Cloud Logging'deki tehdit günlüklerini okumak için izinleri olması gerekir. Komut dosyası, varsayılan Compute Engine hizmet hesabını kullanan bir sanal makineden yürütüleceğinden bu hizmet hesabına roles/logging.viewer IAM rolü atanmalıdır.

1. Ortam değişkenlerini ayarlayın. Cloud Shell'de aşağıdaki komutları çalıştırın.

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

2. Compute Engine hizmet hesabına günlük görüntüleyici rolünü verin. Cloud Shell'de aşağıdaki gcloud komutları çalıştırın.

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

3. Temel Ortam Kurulumu

Bu bölümde aşağıdaki görevleri gerçekleştireceksiniz:

  • Özel alt ağlara sahip VPC ağları (network-a ve network-b) oluşturun.
  • Hem network-a hem de network-b bölgelerinde internet çıkışı için Cloud Router ve Cloud NAT'yi yapılandırın.
  • Hem network-a hem de network-b için IAP'nin IP aralığından sanal makinelere SSH erişimine izin veren güvenlik duvarı kuralları oluşturun.
  • Hem network-a hem de network-b içinde genel IP adresleri olmadan Linux sanal makineleri sağlayın.

VPC'ler ve alt ağlar oluşturma

1. us-east4 ve us-central1 bölgelerinde network-a ve alt ağlarını oluşturun. Cloud Shell'de aşağıdaki gcloud komutları çalıştırın.

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. us-east4 bölgesinde network-b ve alt ağını oluşturun. Cloud Shell'de aşağıdaki gcloud komutları çalıştırın.

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

İnternet çıkışını yapılandırma

1. network-a içinCloud Router ve Cloud NAT oluşturarak genel IP'si olmayan VM'lerin internete çıkışına izin verin.

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. network-b içinCloud Router ve Cloud NAT oluşturarak genel IP'si olmayan VM'lerin internete çıkışına izin verin.

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

Güvenlik Duvarı Kurallarını Yapılandırma

1. network-a için güvenlik duvarı kuralları oluşturarak IAP'nin IP aralığından SSH erişimine izin verin. Cloud Shell'de aşağıdaki gcloud komutları çalıştırın.

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

2. network-b için güvenlik duvarı kuralları oluşturarak IAP'nin IP aralığından SSH erişimine izin verin. Cloud Shell'de aşağıdaki gcloud komutları çalıştırın.

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

Sanal Makine Oluşturma

1. network-a içinde Linux sanal makineleri oluşturma

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. network-b bölgesinde Linux sanal makinesi oluşturma

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

4. DNS tehdit algılayıcısını oluşturma

Bu bölümde aşağıdaki görevleri gerçekleştireceksiniz:

  • Tehdit algılayıcıyı oluşturun.
  • Tehdit algılayıcıyı listeleyin.
  • Kaynağı açıklayın.

VPC'ler, alt ağlar ve sanal makineler artık sağlandığına göre bir sonraki adım, DNS tehdit dedektörünü oluşturmaktır.

1. gcloud beta network-security dns-threat-detectors create komutunu kullanarak tehdit algılayıcıyı oluşturun. network-b öğesini hariç tutmak için --excluded-networks işaretini kullanın.

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. Oluşturmayı onaylamak için tehdit algılayıcıyı listeleyin.

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

3. network-b öğesinin excludedNetworks altında doğru şekilde listelendiğini doğrulamak için kaynağını açıklayın.

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

Örnek çıkış:

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. Kurulumu Test Etme

Bu bölümde aşağıdaki görevleri gerçekleştireceksiniz:

  • Sanal makinelere SSH uygulayın.
  • Sanal makinelere Git'i yükleyin.
  • Infoblox tehdit algılama simülasyon aracı deposunu klonlayın.
  • Komut dosyasını çalıştırın ve oluşturulan çıkışı analiz edin.

VM'lerinizden taklit edilmiş kötü amaçlı DNS sorguları oluşturarak kurulumu doğrulayın. network-a kaynağından gelen sorgular için günlük girişlerini gözlemlemeniz gerekir. network-b. kaynağından ise günlük oluşturulmaz.

1. vm-a-use4 sanal makinesine SSH üzerinden bağlanın. Cloud Shell'de aşağıdaki gcloud komutları çalıştırın.

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

2. Sanal makineye Git'i yükleyin.

sudo apt-get install git -y

3. Infoblox tehdit algılama simülatörü deposunuklonlayın.

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

4. Dizini simülatörün dizini olarak değiştirin.

cd ib-threat-detection-simulator/threat_detection_simulator/

5. Komut dosyasını çalıştırın ve oluşturulan çıktıyı analiz edin.

Komut dosyasını yürütülebilir hale getirin.

chmod +x run.sh

Komut dosyasını çalıştırın.

./run.sh info basic

6. Örnek Çıkış

Aşağıdaki ekran görüntüsünde, network-a'daki bir sanal makinenin komut dosyası çıkışının bir kısmı gösterilmektedir. Çıkış, tehditlerin% 100'ünün algılandığını gösteriyor.

a66c1757f8c74da6.png

Aşağıdaki ekran görüntüsünde, network-b'deki bir sanal makinenin komut dosyası çıkışının bir kısmı gösterilmektedir. Çıkışta, tehditlerin% 0'ının algılandığı gösteriliyor. Bu durum, tehdit algılayıcı oluşturulurken network-b hariç tutulduğu için beklenir.

c12d130c95c04e84.png

7. SSH oturumundan çıkarak Cloud Shell'e dönün.

exit

6. Günlük Gezgini'nde tehdit günlüklerini görüntüleme

Oluşturulan tehdit günlükleri, Cloud Logging'e yazıldığından test komut dosyası çalıştırıldıktan sonra Günlük Gezgini'nde görüntülenebilir.

Örnek günlük girişi

Bu bölümde, algılanan bir DNS tehdidi için örnek bir günlük girişi sağlanmaktadır. Bu örnekte, kaynak IP, sorgulanan alan ve tehdit kategorisi de dahil olmak üzere DNS Armor tarafından yakalanan ayrıntılı bilgiler gösterilmektedir. Analiz edeceğiniz günlüklerin yapısını ve içeriğini anlamak için referans olarak kullanılır.

{
  "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"
}

Günlük Gezgini'nde günlükleri görüntüleme

1. Google Cloud Console'daMonitoring bölümüne gidin ve Logs explorer seçeneğini belirleyin.

4a90c593d7e339d8.png

2. Tüm DNS Armor tehdit günlüklerini filtrelemek için aşağıdaki sorguyu kullanın. Bu filtre, DNS Threat Detector için günlükleri kaynak türüne göre filtreler.

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

3. us-east4 bölgesi için günlükleri filtreleyin, konuma filtre ekleyin. Bu sorgu yalnızca us-east4 bölgesinde algılanan tehditleri gösterir.

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

4. Günlükleri kaynak ağına göre filtreleyin: Belirli bir VPC ağından kaynaklanan tehditleri görmek için DNS sorgusunun kaynak IP adresine göre filtreleyin.

network-a (10.10.0.0/24 ve 10.10.1.0/24 alt ağları) günlüklerini görüntülemek için:

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

network-b (10.20.0.0/24 alt ağları) günlüklerini görüntülemek için:

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

7. Temizleme

Gelecekte ücretlendirilmemek için bu codelab'de oluşturulan kaynakları silin. Temizleme komutlarını çalıştırırken sanal makinenin kabuğundan çıktığınızdan ve Cloud Shell'e döndüğünüzden emin olun.

1. Sanal makineleri silin.

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. Güvenlik duvarı kurallarını silin.

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

3. Cloud NAT ağ geçitlerini silin.

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. Cloud Router'ları silin

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. Alt ağları silin.

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. DNS tehdidi algılayıcısını silin.

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

7. VPC'leri silin.

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

8. Tebrikler

Tebrikler! DNS Armor tehdit algılayıcısını başarıyla yapılandırdınız, dağıttınız ve test ettiniz. Google Cloud ortamınızı DNS tabanlı tehditlerden koruma konusunda uygulamalı deneyim kazandınız.

Bu codelab'de:

  • Birden fazla VPC, alt ağ ve sanal makine içeren bir ağ ortamı sağladıysanız.
  • Cloud NAT kullanarak özel sanal makineler için internet çıkışını yapılandırdıysanız.
  • DNS Armor tehdit dedektörü dağıttı ve belirli ağları hariç tutmayı öğrendi.
  • Simüle edilmiş DNS tehditleri ve tehdit algılama yapılandırması doğrulandı.
  • Kötü amaçlı DNS etkinliğini belirlemek ve anlamak için Günlük Gezgini'ndeki tehdit günlüklerini analiz edin.

Yapabilecekleriniz

Referans belgeleri