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

Verrouiller un serveur web (durcissement)

Après cette leçon: Je peux dire ce qu'un serveur web doit cacher et ce qu'il doit refuser.

Leçon de 55 min4 commandesLab de durcissement d’un serveur web : corriger une configuration nginx faible et la vérifier avec curl

Le site d'un garage qui en dit trop

Le site d'un garage fonctionne très bien. Pourtant, il annonce à chaque visiteur la version exacte du logiciel qui le fait tourner. Il liste tous les fichiers d'un dossier de tarifs. Il sert même une vieille sauvegarde d'un fichier de réglages.

Personne ne l'a attaqué. On ne lui a simplement jamais demandé d'en dire moins.

La règle unique

Attention

Ce laboratoire est un serveur web volontairement fragile. Travaillez sur votre copie privée, et rien d'autre : elle n'a aucune sortie vers Internet. Sonder un serveur qui n'est pas le vôtre, ou sans permission de test, est un délit dans presque tous les pays.

À la fin de cette leçon

Remarque

Je peux dire ce qu'un serveur web doit cacher et ce qu'il doit refuser.

Mots-clés

MotCe que ça veut direExemple
Durcissementrégler un système pour qu'il en dise et en permette moins
En-têteune ligne au début d'une réponse qui dit au navigateur comment la traiterServer: nginx
Liste de dossierune page qui énumère tous les fichiers d'un dossier
TLSle système qui chiffre les échanges entre un navigateur et un site
Certificatun fichier signé qui prouve qu'un site est bien celui qu'il annonce
HSTSun en-tête qui demande aux navigateurs de n'utiliser que l'adresse sécurisée

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Un serveur doit en dire moins

Chaque mot de trop aide un attaquant. Un numéro de version lui dit quelles failles connues essayer. Une liste de dossier lui montre des fichiers que personne ne voulait publier.

Durcir, c'est retirer le superflu. Il faut ôter la version dans l'en-tête Server, les listes de dossiers, les sauvegardes et fichiers de réglages, et toute zone d'administration ouverte à tous.

Regardez le serveur de votre laboratoire

Votre laboratoire fait tourner le petit site d'un garage sous nginx. Démarrez-le, puis lancez ces quatre commandes. Elles ne font que lire.

La première montre la ligne d'état. La deuxième montre l'en-tête Server. La troisième compte un en-tête de sécurité. La quatrième lit la page d'un dossier.

La ligne d'état

Commande
curl -s -I http://web | head -n 1

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.

L'en-tête Server

Commande
curl -s -I http://web | grep -i "^server"

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.

Combien d'en-têtes X-Frame-Options ?

Commande
curl -s -I http://web | grep -ci "x-frame-options"

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.

Le titre d'une page de dossier

Commande
curl -s http://web/files/ | grep -o "Index of [a-z/]*"

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.

Exemple travaillé : lire les quatre réponses

CommandeAfficheCe que cela veut dire
Ligne d'étatHTTP/1.1 200 OKLe site répond
En-tête ServerServer: nginx/1.27.5Il donne sa version exacte à tout le monde
X-Frame-Options0Cet en-tête protecteur n'est pas envoyé du tout
Page de dossierIndex of /files/, deux foisLe serveur liste un dossier au lieu de refuser : une fois dans le titre, une fois dans l'intitulé

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Des en-têtes qui guident le navigateur

Quelques en-têtes ne coûtent rien et ferment des familles entières de problèmes. X-Content-Type-Options: nosniff empêche le navigateur de deviner le type d'un fichier. X-Frame-Options empêche d'autres sites d'afficher votre page dans un cadre.

Content-Security-Policy limite les scripts permis. Referrer-Policy limite l'adresse transmise aux autres sites.

Une erreur fréquente

Attention

Beaucoup pensent que cacher le numéro de version rend un serveur sûr. Cela ne cache qu'un indice. Un vieux serveur dont la faille est connue reste faible. Cachez l'indice, mais tenez aussi le logiciel à jour et retirez ce qui ne sert pas.

Les échanges doivent être chiffrés en TLS récent

TLS a des versions. SSL 3, TLS 1.0 et TLS 1.1 sont anciens et ne sont plus sûrs. N'autorisez que TLS 1.2 et 1.3.

Une bonne configuration a aussi un certificat de confiance, non expiré. Elle renvoie l'adresse non sécurisée vers l'adresse sécurisée. Elle envoie HSTS pour que les navigateurs s'en souviennent.

Exposer le moins possible

Ne servez que les fichiers dont le site a besoin. Gardez les sauvegardes, les dossiers de gestion de versions et les fichiers de réglages hors du dossier web. Mettez la zone d'administration derrière une connexion ou une limite de réseau.

Chaque chose retirée est une chose de moins à protéger.

À 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 ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.