Labs d’exemple : labs de conteneurs et labs VM prêts à enseigner

Chaque lab ici s’exécute dans le navigateur et donne à chaque élève une copie privée avec un terminal à côté : rien à installer et rien sur l’ordinateur de l’élève qui puisse casser. Chacun a sa propre page dans ce manuel, avec les instructions, ce qu’il faut demander aux élèves de rendre et sa source sur GitHub, que vous pouvez dupliquer et modifier.

Certains sont des labs de conteneurs, écrits sous forme de fichier compose, et d’autres des labs VM, chaque élève recevant sa propre machine Ubuntu. Démarrez-en un pour l’essayer, ou copiez-en un dans un module et proposez-le comme travail.

Bases de données et API

PostgreSQL et PostgREST : une base Postgres et une API web qui transforme chaque table en points d’accès REST, avec psql et curl dans le terminal. Il enseigne SQL, REST, les volumes et les sauvegardes.

MySQL et phpMyAdmin : MySQL avec une base de boutique d’exemple de huit tables et quelques centaines de lignes, et phpMyAdmin déjà connecté, avec treize exercices SQL, d’un premier SELECT aux sous-requêtes et aux transactions.

Gestion de versions

Git et Gitea : un serveur Git propre à l’élève, avec un dépôt à cloner, où faire un commit et un push depuis le terminal, puis à retrouver dans une interface web semblable à celle de GitHub, sans compte GitHub.

Sécurité des applications web

OWASP Juice Shop, DVWA et WebGoat : trois applications web volontairement vulnérables, chacune dans la copie privée de l’élève. Les élèves attaquent l’application, expliquent la faille et rendent des preuves. La page de présentation, Labs de sécurité, traite de la règle de périmètre et de la place de chacun dans un cursus.

OWASP Mutillidae II ajoute une seconde application PHP volontairement vulnérable, avec une base de données et un service d’annuaire, OWASP WrongSecrets enseigne la gestion des secrets en cachant de faux secrets dans le code et la configuration pour que l’élève les trouve, et « SQL injection : find it and fix it » donne à l’élève une petite application faible, la nôtre, à exploiter puis à réparer.

DevOps et serveurs web

Durcir un serveur web : un site nginx à la configuration faible, à repérer et à corriger depuis le terminal, avec une vérification qui répond PASS ou FAIL. Docker basics : une petite pile avec un service en panne, où l’élève lit les journaux, exécute une commande dans un conteneur, le répare et le redémarre. Observabilité : Prometheus et Grafana surveillent un petit serveur web, avec une règle d’alerte à écrire par l’élève.

Administration Linux et opérations de sécurité

Administration Linux, Réponse à incident et Ansible sont des labs VM : l’élève reçoit sa propre machine Ubuntu et un README. L’administration Linux compte quatre petites tâches, des utilisateurs, un dossier partagé, une entrée cron et un fichier de service. La réponse à incident fournit un jeu de journaux d’une machine compromise à examiner, et Ansible demande à l’élève de terminer un playbook qui configure la machine. Chacun a une vérification qui note la machine enregistrée.

Réseaux informatiques

Routage statique, OSPF et BGP : trois labs VM dans lesquels chaque routeur et chaque machine d’un petit réseau sont construits dans l’unique VM de l’élève et où les routeurs exécutent FRRouting, avec une vérification qui note le lab à votre place.

NAT gateway, DHCP et DNS, VLAN et WireGuard vont plus loin de la même façon : une passerelle NAT avec masquerade et une redirection de port, un serveur DHCP et DNS avec dnsmasq, un commutateur et un routeur sur un bras pour les VLAN, et un tunnel WireGuard entre deux sites.

Une leçon de base pour chaque lab

Chaque lab a une petite leçon qui s’y fait. Les six premiers labs de conteneurs en ont deux : Git Basics et Git Basics 2, SQL Basics et SQL Basics 2, API Basics et API Basics 2, Juice Shop Basics et Juice Shop Basics 2, DVWA Basics et DVWA Basics 2, WebGoat Basics et WebGoat Basics 2. Les autres en ont une chacun : Static Routing Basics, OSPF Basics, BGP Basics, Mutillidae Basics, WrongSecrets Basics, SQL Injection Fix Basics, Web Server Hardening Basics, Docker Basics, Observability Basics, Linux Administration Basics, Privilege Escalation Basics, Incident Response Basics, Hadoop Basics, Spark Basics, Kafka Basics, Valkey Basics, Ansible Basics, NAT Basics, DHCP and DNS Basics, VLAN Basics et WireGuard Basics. Une leçon qui se fait dans un lab a une étape en mots et un bouton Exécuter qui tape la commande dans le terminal de l’élève, dans un conteneur ou dans une VM Ubuntu, si bien qu’un enseignant voit à la fois ce qu’est une leçon et ce qu’un lab peut faire. Elles sont volontairement courtes.

Elles sont disponibles partout : un compte personnel gratuit les reçoit toutes dans le module Basics, qui se trouve sur l’« Accueil », chaque établissement peut les copier depuis le dossier Basics de la Bibliothèque dans un module à lui, et un nouvel établissement les a dans ses modules d’exemple, Basics (Sample), Database (Sample), Lab Basics (Sample), Networking Basics (Sample), Security Labs (Sample), DevOps Labs (Sample) et Linux Labs (Sample).

La barre du lab en haut d’une leçon qui se fait dans un lab, sous le titre de la leçon, avec un bouton pour démarrer le lab et les premières étapes de la leçon en dessous
Une leçon qui se fait dans un lab a la barre du lab au-dessus de ses étapes : démarrez le lab une fois, puis chaque bouton Exécuter tape dans son terminal.

Les lancer dans le navigateur

Les labs de conteneurs démarrent depuis la page Conteneur : le lab Git et le lab SQL sans compte, tous les autres avec un compte gratuit. Les labs VM s’ajoutent à un module comme tâche de lab et démarrent depuis l’exemple de la page du lab.

  1. Ouvrir la page Conteneur. Ouvrez « Créer » dans la barre et choisissez « Lancer un conteneur ». Tout le monde peut ouvrir la page, et le lab Git et le lab SQL se lancent sans compte. Tous les autres labs demandent un compte gratuit : créez-en un, connectez-vous, puis appuyez sur « Démarrer ».
  2. Appuyer sur Démarrer sur un exemple. La carte « Laboratoires d’exemple » liste tous les labs de conteneurs. « Démarrer » en lance un en un clic, et « Modifier le fichier d’abord » vous laisse le changer avant de démarrer.
  3. En faire un travail. Copiez un lab dans votre module comme lab de conteneurs ou comme lab VM Ubuntu, publiez-le, essayez votre propre copie et attribuez-le comme n’importe quelle tâche.
La section Labs pratiques de la page des ressources gratuites : un titre de thème et une carte pour chaque lab de sécurité web, avec ses leçons gratuites et des liens vers sa page du manuel et son code
Chaque lab est listé par thème sur la page des ressources gratuites, avec les leçons gratuites qui s’y font.

Le code est public

Chaque lab se trouve dans un dépôt public sous mitsurutech sur GitHub, avec un README qui porte la leçon. Les fichiers compose et les définitions de labs sont sous licence MIT : copiez-les, modifiez-les, enseignez avec. Les applications qu’ils contiennent, Juice Shop, DVWA, WebGoat et les autres, gardent leur propre licence et sont tirées des images de leurs projets, jamais redistribuées par nous.

Questions fréquentes

Les élèves doivent-ils installer quelque chose ?
Non. Chaque lab s’exécute sur nos machines et s’ouvre dans le navigateur, avec un terminal à côté. Rien n’est installé sur l’ordinateur de l’élève.
Puis-je modifier un lab ou écrire le mien ?
Oui. Faites un fork du dépôt et faites pointer un lab vers votre fork, ou copiez le fichier dans un lab écrit sur la page. Le guide des labs de conteneurs dit ce qu’un fichier compose peut contenir.
Y a-t-il une leçon pour chaque lab ?
Oui : chaque lab a une courte leçon de base qui s’y fait, et les six premiers labs de conteneurs en ont une seconde, gratuites pour tout compte personnel et tout établissement. Dans un lab VM, le bouton Exécuter tape dans le terminal de la VM Ubuntu.
Les labs se notent-ils tout seuls ?
La plupart des labs VM, oui : chacun a un script de vérification que vous lancez sur la machine enregistrée d’un élève. Le lab d’élévation de privilèges Linux fait exception, car un élève sur cette machine pourrait fabriquer toute preuve : vous lisez donc une remise écrite. Les labs de conteneurs, c’est vous qui les notez d’après ce que l’élève rend, et quelques-uns, comme celui du durcissement d’un serveur web, ont une vérification que l’élève lance lui-même.
Puis-je les utiliser en dehors de la plateforme ?
Les labs de conteneurs s’exécutent sur votre propre machine avec docker compose, et chaque README dit comment. Les labs VM sont des définitions pour les labs VM de la plateforme.