Ce que tu vas faire
Un serveur web en dit souvent plus qu'il n'en faut : sa version exacte, les fichiers d'un dossier, des fichiers que personne ne voulait publier. Durcir un serveur (« hardening »), c'est changer sa configuration pour qu'il en dise et en montre moins. Tu vas regarder un petit site, lancer une vérification qui liste ce qui ne va pas, corriger une chose dans le serveur qui tourne, puis relancer la vérification. Ta copie n'a pas d'accès à Internet : le seul site que tu touches est le tien.
Avant de commencer
Remarque
Appuie sur Démarrer le lab dans la barre en haut de cette leçon et attends qu'il indique qu'il tourne. Le site est le service appelé web, et le terminal l'atteint par ce nom. Chaque bouton Exécuter ci-dessous tape sa commande dans le terminal de ton lab, l'une après l'autre dans la même session. Pour les suivre, ou pour taper tes propres commandes, appuie sur Ouvrir le terminal (nouvel onglet) dans la barre.
1. Voir ce que dit le serveur
curl -I demande seulement les en-têtes (les « headers »). Regarde la ligne qui commence par Server:. Elle donne à tous les visiteurs, et à tous les attaquants, la version exacte de nginx : nginx/1.27.5.
curl -I http://webAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
2. Voir ce qu’il montre
Ce dossier n'a pas de page d'accueil, alors le serveur affiche la liste de son contenu. La réponse est une page intitulée Index of /files/ avec deux fichiers, prices.csv et suppliers.txt. Personne n'avait demandé qu'une liste soit montrée.
curl http://web/files/Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
3. Lancer la vérification
Dans ce terminal, docker peut regarder le service du lab, y entrer et le redémarrer, et la commande ci-dessous en lance une dans ce service. lab-check pose neuf questions au serveur qui tourne et affiche PASS (réussi) ou FAIL (échec) pour chacune. Au début, toutes disent FAIL, et la dernière ligne est Some checks fail.
docker exec web lab-checkAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
4. Corriger une chose
La configuration est le fichier /etc/nginx/conf.d/default.conf, à l'intérieur du conteneur. Il contient server_tokens on;, ce qui met la version dans l'en-tête. Cette commande remplace on par off. sed est un éditeur qui fait une modification depuis la ligne de commande. Pour des changements plus grands, ouvre le fichier avec docker exec -it web sh et modifie-le avec vi.
docker exec web sed -i 's/server_tokens on/server_tokens off/' /etc/nginx/conf.d/default.confAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
5. Charger la configuration
nginx lit sa configuration une seule fois, alors tu lui dis de la relire. reload le fait sans arrêter le site. Il affiche un seul message, signal process started, qui n'est pas une erreur.
docker exec web nginx -s reloadAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
6. Regarder de nouveau
La ligne Server: indique maintenant seulement nginx, sans numéro.
curl -I http://webAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
7. Relancer la vérification
La première ligne est maintenant PASS the Server header shows no version number, et les huit autres disent encore FAIL : chaque correction ne change que sa propre ligne. La liste du dossier, les en-têtes de sécurité manquants, le dossier .git, le fichier de sauvegarde et la zone d'administration ouverte, c'est à toi de les corriger de la même façon, jusqu'à ce que la dernière ligne dise All checks pass.
docker exec web lab-checkAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
8. Voir ce qui reste
Appuie sur Arrêter le lab dans la barre, puis sur Démarrer le lab de nouveau, et relance la vérification : ta correction est toujours là. Le dossier de configuration est un volume nommé, et la plateforme enregistre les volumes. Un changement fait ailleurs dans le conteneur aurait disparu.
Pour les enseignants
Astuce
Cette leçon est un petit exemple de leçon travaillée dans un lab : les étapes et les boutons Exécuter sont la leçon, et le lab est la copie personnelle de chaque élève. Rien ici ne se corrige tout seul : l'élève rend le résultat de curl -I avant et après, et le dernier lab-check, et vous corrigez à partir de ces preuves. Copiez-la dans votre propre module et modifiez-la, ou construisez-en une de zéro avec le menu Lab du créateur de leçons.