Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Les bases du durcissement d’un serveur web

La leçon complète est à lire ici. Créez un compte gratuit pour la pratiquer dans un labo en direct.

Labo de conteneurs8 min de lecture7 commandes

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.

Commande
curl -I http://web

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.

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.

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

Commande
docker exec web lab-check

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.

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.

Commande
docker exec web sed -i 's/server_tokens on/server_tokens off/' /etc/nginx/conf.d/default.conf

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.

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.

Commande
docker exec web nginx -s reload

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.

6. Regarder de nouveau

La ligne Server: indique maintenant seulement nginx, sans numéro.

Commande
curl -I http://web

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.

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.

Commande
docker exec web lab-check

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.

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.

À propos de ce labo et de sa source: Lab de durcissement d’un serveur web : corriger une configuration nginx faible et la vérifier avec curl

Vous enseignez à une classe ? Proposez ces leçons à vos élèves avec correction et un labo pour chaque élève.