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

Publier un site avec des réglages sûrs

Après cette leçon: Je peux publier un site avec des réglages de sécurité sûrs.

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

Pourquoi un petit site se fait attaquer

Publier un site, c’est le mettre sur internet pour que tout le monde le voie. Des réglages sûrs évitent qu’il donne des informations ou des fichiers qu’il devrait garder.

Des robots testent des milliers de sites chaque jour, même les petits. Un réglage oublié suffit à leur ouvrir la porte.

La règle de ce lab : tu travailles seulement sur ta propre copie, avec la permission de ton enseignant. Tu ne testes jamais un site qui n’est pas à toi.

À la fin de cette leçon

Remarque

Je peux publier un site avec des réglages de sécurité sûrs.

Mots clés

MotCe que ça veut dire
Configurationle fichier de réglages qui dit au serveur comment se comporter
Durcirchanger les réglages d’un serveur pour qu’il donne moins de prise aux attaques
En-tête de sécuritéune ligne de la réponse qui demande au navigateur de se protéger
Listage de dossierune page qui montre la liste des fichiers d’un dossier
Permissionl’accord d’essayer de réglages ou d’outils sur un système
Rechargementdire au serveur de lire de nouveau sa configuration

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

Un serveur neuf en dit trop

Un serveur web neuf fait de son mieux pour être utile, pas pour être discret. Il peut annoncer sa version, lister le contenu de ses dossiers ou servir un vieux fichier oublié.

Ces petits détails aident un attaquant à choisir son attaque. Durcir un serveur, c’est les régler un par un.

Exemple travaillé : ce qui fuit d’un site

Ce qui fuitPourquoi c’est un risqueLe réglage
La version du serveurOn cherche les failles connues de cette versionLa cacher
La liste d’un dossierOn voit des fichiers qu’on ne devait pas voirCouper le listage
Un fichier oublié, comme une sauvegardeIl peut contenir un mot de passeLe supprimer ou le bloquer
Une page d’administration ouverteN’importe qui peut y entrerDemander un identifiant

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

Un fichier de configuration règle le serveur

Le serveur nginx lit sa configuration dans un fichier. Chaque réglage est une ligne qui finit par un point-virgule.

Un bloc server décrit un site. Un bloc location décrit une partie de ses adresses. Les lignes qui commencent par # sont des commentaires.

Exemple : la configuration d’une librairie

Code: bash
# Exemple d'une librairie imaginaire, pas celui du lab.
server {
  listen 80;
  server_name librairie.exemple;
  root /var/www/librairie;
  server_tokens off;
  autoindex off;
  add_header X-Content-Type-Options "nosniff" always;
  add_header X-Frame-Options "DENY" always;
  location ~ /\.git { deny all; }
  location /admin/ { auth_basic "Zone privee"; }
}

Liste le dossier de configuration du site

Commande
docker exec web ls /etc/nginx/conf.d

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.

Demande à nginx de tester sa configuration

Commande
docker exec web nginx -t

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.

Ce que disent ces deux Runs

Le premier Run écrit default.conf : le site a un seul fichier de réglages. Le second écrit deux phrases qui finissent par syntax is ok et test is successful.

Cette commande ne change rien : elle lit la configuration et dit si elle est correcte. On la lance avant chaque rechargement.

Les en-têtes de sécurité guident le navigateur

Un en-tête de sécurité est une ligne que le serveur ajoute à chaque réponse. Elle demande au navigateur de se protéger.

Le navigateur obéit, donc quelques lignes bloquent des attaques entières. Chaque en-tête a un seul métier.

Exemple travaillé : quatre en-têtes courants

En-têteCe qu’il demande au navigateur
X-Content-Type-OptionsNe pas deviner le type d’un fichier
X-Frame-OptionsNe pas afficher le site dans le cadre d’un autre
Content-Security-PolicyN’exécuter que les scripts d’origine permise
Referrer-PolicyNe pas dire d’où vient le visiteur

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

Tester, recharger, vérifier, garder une copie

On change un réglage dans une copie, puis on teste avec nginx -t. Si le test passe, on recharge. Sinon on corrige : un fichier faux peut empêcher le site de démarrer.

Après le rechargement, on regarde la réponse du site pour vérifier. On garde aussi une copie de l’ancien fichier, pour revenir en arrière.

Demande la version de nginx du lab

Commande
docker exec web nginx -v

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.

Une erreur fréquente

Attention

Beaucoup pensent qu’un petit site ne vaut pas la peine d’être attaqué. Les robots ne choisissent pas : ils essaient tous les sites, l’un après l’autre. Un réglage de sécurité coûte quelques minutes, et une fuite peut coûter beaucoup plus.

Pour aller plus loin : un fichier oublié

Ajoute à ton devoir bloque_les_sauvegardes(texte). Elle renvoie True quand la configuration contient une ligne deny all;.

Pourquoi un fichier comme config.php.bak est-il plus dangereux qu’un fichier de la page d’accueil ?

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