Inizia a utilizzare il rilevamento avanzato delle minacce di DNS Armor

1. Introduzione e panoramica

DNS Armor, basato su Infoblox, è un servizio completamente gestito che fornisce sicurezza a livello di DNS per i tuoi carichi di lavoro Google Cloud. Il suo rilevatore delle minacce avanzato è progettato per rilevare attività dannose al punto iniziale della catena di attacco, ovvero la query DNS, senza aggiungere complessità operativa o overhead delle prestazioni.

Questo codelab fornisce istruzioni passo passo per configurare e testare il servizio DNS Armor. Configurerai l'infrastruttura di rete necessaria, creerai il rilevatore di minacce, testerai il servizio simulando minacce DNS e, infine, analizzerai i log delle minacce utilizzando Esplora log.

Cosa creerai

In questo codelab, eseguirai il provisioning delle seguenti risorse:

  • Due reti VPC: network-a e network-b
  • network-a includerà subnet e macchine virtuali nelle regioni us-east4 e us-central1.
  • network-b includerà una subnet e una macchina virtuale solo in us-east4.
  • Un rilevatore di minacce avanzato di DNS Armor configurato per ispezionare le query DNS.

75d6eeb807735645.png

Cosa imparerai a fare

  • Come eseguire il provisioning delle risorse di rete necessarie, tra cui VPC e macchine virtuali.
  • Come eseguire il deployment di un rilevatore di minacce avanzate ed escludere reti specifiche.
  • Come convalidare la configurazione del rilevamento delle minacce utilizzando uno script di simulazione delle minacce.
  • Come analizzare i log delle minacce in Esplora log.

Che cosa ti serve

  • Un progetto Google Cloud.
  • Accesso allo strumento a riga di comando gcloud.

2. Prerequisiti

In questa sezione, eseguirai le seguenti attività:

  • Verifica che il tuo progetto Google Cloud soddisfi i vincoli dei criteri dell'organizzazione necessari.
  • Verifica che il tuo account utente disponga dei ruoli e delle autorizzazioni IAM richiesti.
  • Abilita le API Cloud di Google essenziali per questo codelab.
  • Assegna il ruolo IAM roles/logging.viewer al service account Compute Engine.

Vincoli dei criteri dell'organizzazione

Per completare correttamente questo codelab, verifica i vincoli dei criteri dell'organizzazione applicati al tuo progetto. Alcuni criteri potrebbero ostacolare il provisioning delle risorse necessarie. I seguenti vincoli potrebbero influire sulla configurazione di questo codelab:

  • constraints/gcp.resourceLocations: limita le regioni in cui puoi creare risorse; il codelab richiede us-east4 e us-central1.
  • constraints/compute.vmExternalIpAccess: impedisce la creazione di macchine virtuali con indirizzi IP pubblici, il che potrebbe interferire con la configurazione se non segui l'utilizzo del flag --no-address nel codelab .
  • constraints/compute.shieldedVm: impone la creazione di VM schermate, che i comandi di creazione delle VM del codelab non specificano, causando potenzialmente un errore.
  • constraints/gcp.restrictServiceUsage: limita le API Cloud Google che possono essere attivate e potrebbe bloccare il codelab se non consente compute.googleapis.com, networksecurity.googleapis.com, logging.googleapis.com e monitoring.googleapis.com.

Ruoli e autorizzazioni IAM

Per completare correttamente questo codelab, verifica i ruoli e le autorizzazioni IAM concessi al tuo utente. Per completare questo Codelab sono necessari i seguenti ruoli e autorizzazioni IAM.

  • Amministratore utilizzo servizi (roles/serviceusage.serviceUsageAdmin): per abilitare le API Google Cloud richieste per il codelab.
  • Amministratore di rete Compute (roles/compute.networkAdmin): per creare e gestire reti VPC, subnet e Cloud NAT.
  • Amministratore della sicurezza di Compute (roles/compute.securityAdmin): per configurare le regole firewall per l'accesso SSH alle macchine virtuali.
  • Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1): per creare e gestire le macchine virtuali necessarie per il lab.
  • Utente del tunnel con protezione IAP (roles/iap.tunnelResourceAccessor): per connettersi alle macchine virtuali utilizzando SSH tramite Identity-Aware Proxy (IAP).
  • Amministratore della sicurezza di rete (roles/networksecurity.admin): per creare e gestire il rilevatore di minacce DNS Armor.
  • Logs Viewer (roles/logging.viewer): per visualizzare e analizzare i log delle minacce in Esplora log.

API di Google Cloud

Assicurati che le API Cloud richieste siano abilitate nel tuo progetto.

1. Abilita le API necessarie, esegui i seguenti comandi gcloud in Cloud Shell.

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

2. Verifica che le API siano abilitate, esegui i seguenti comandi gcloud in Cloud Shell.

gcloud services list --enabled

Service account Compute Engine

Lo script per il test richiede le autorizzazioni per leggere i log delle minacce da Cloud Logging. Poiché lo script verrà eseguito da una VM che utilizza il service account Compute Engine predefinito, a questo service account deve essere assegnato il ruolo IAM roles/logging.viewer.

1. Imposta le variabili di ambiente, esegui i seguenti comandi in Cloud Shell.

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

2. Concedi il ruolo Visualizzatore log al service account Compute Engine. Esegui i seguenti comandi gcloud in Cloud Shell

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

3. Configurazione di base dell'ambiente

In questa sezione, eseguirai le seguenti attività:

  • Crea reti VPC (network-a e network-b) con subnet personalizzate.
  • Configura i router Cloud e Cloud NAT per l'uscita da internet sia in network-a che in network-b.
  • Crea regole firewall per consentire l'accesso SSH alle VM dall'intervallo IP di IAP sia per network-a sia per network-b.
  • Esegui il provisioning di macchine virtuali Linux sia in network-a che in network-b senza indirizzi IP pubblici.

Crea VPC e subnet

1. Crea network-a e le relative subnet nelle regioni us-east4 e us-central1. Esegui i seguenti comandi gcloud in 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. Crea network-b e la relativa subnet nella regione us-east4. Esegui i seguenti comandi gcloud in 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

Configurare il traffico in uscita da internet

1. Crea Cloud Router e Cloud NAT per network-a per consentire l'uscita da internet per le VM senza IP pubblici.

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. Crea Cloud Router e Cloud NAT per network-b per consentire l'uscita da internet per le VM senza IP pubblici.

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

Configura le regole firewall

1. Crea regole firewall per network-a per consentire l'accesso SSH dall'intervallo IP di IAP. Esegui i seguenti comandi gcloud in 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. Crea regole firewall per network-b per consentire l'accesso SSH dall'intervallo IP di IAP. Esegui i seguenti comandi gcloud in Cloud Shell.

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

Creare macchine virtuali

1. Crea VM Linux in 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. Crea una VM Linux in 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. Crea il rilevatore di minacce DNS

In questa sezione, eseguirai le seguenti attività:

  • Crea il rilevatore di minacce.
  • Elenca il rilevatore di minacce.
  • Descrivi la risorsa.

Ora che sono stati sottoposti a provisioning VPC, subnet e macchine virtuali, il passaggio successivo è creare il rilevatore di minacce DNS.

1. Crea il rilevatore di minacce utilizzando il comando gcloud beta network-security dns-threat-detectors create. Utilizza il flag --excluded-networks per escludere 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. Elenca il rilevatore di minacce per confermare la creazione.

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

3. Descrivi la risorsa per verificare che network-b sia elencato correttamente in excludedNetworks.

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

Output di esempio:

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. Test della configurazione

In questa sezione, eseguirai le seguenti attività:

  • Accedi alle VM tramite SSH.
  • Installa Git sulle VM.
  • Clona il repository del simulatore di rilevamento delle minacce Infoblox.
  • Esegui lo script e analizza l'output generato.

Convalida la configurazione generando query DNS dannose emulate dalle tue VM. Dovresti osservare le voci di log per le query provenienti da network-a, mentre non verranno generati log da network-b.

1. Accedi tramite SSH a vm-a-use4. Esegui i seguenti comandi gcloud in Cloud Shell.

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

2. Installa Git sulla VM.

sudo apt-get install git -y

3. Clona il repository del simulatore di rilevamento delle minacce di Infoblox.

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

4. Cambia directory impostandola su quella del simulatore.

cd ib-threat-detection-simulator/threat_detection_simulator/

5. Esegui lo script e analizza l'output generato.

Rendi eseguibile lo script.

chmod +x run.sh

Esegui lo script.

./run.sh info basic