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
| Mot | Ce que ça veut dire |
|---|---|
| Configuration | le fichier de réglages qui dit au serveur comment se comporter |
| Durcir | changer 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 dossier | une page qui montre la liste des fichiers d’un dossier |
| Permission | l’accord d’essayer de réglages ou d’outils sur un système |
| Rechargement | dire 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 fuit | Pourquoi c’est un risque | Le réglage |
|---|---|---|
| La version du serveur | On cherche les failles connues de cette version | La cacher |
| La liste d’un dossier | On voit des fichiers qu’on ne devait pas voir | Couper le listage |
| Un fichier oublié, comme une sauvegarde | Il peut contenir un mot de passe | Le supprimer ou le bloquer |
| Une page d’administration ouverte | N’importe qui peut y entrer | Demander 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
# 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
docker exec web ls /etc/nginx/conf.dAffiché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
docker exec web nginx -tAffiché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ête | Ce qu’il demande au navigateur |
|---|---|
| X-Content-Type-Options | Ne pas deviner le type d’un fichier |
| X-Frame-Options | Ne pas afficher le site dans le cadre d’un autre |
| Content-Security-Policy | N’exécuter que les scripts d’origine permise |
| Referrer-Policy | Ne 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
docker exec web nginx -vAffiché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 ?