Sécuriser un serveur Leçon 1
Le pare-feu
Fermer toutes les portes du serveur, puis n'ouvrir que celles dont tu as besoin, avec ufw.
À la fin de cette leçon, tu sauras
- Comprendre ce que bloque un pare-feu
- Régler ufw : tout refuser, puis autoriser SSH, HTTP et HTTPS
- Ne jamais se couper l'accès à son propre serveur
Pourquoi un pare-feu ?
Un serveur branché sur Internet reçoit des connexions de partout, en permanence : des robots essaient tous les ports (les « portes » d'entrée numérotées de la machine) à la recherche d'un service mal protégé. Le pare-feu filtre ces connexions : tout ce qui n'est pas explicitement autorisé est refusé.
La règle d'or d'un serveur web est simple :
- on refuse tout ce qui entre par défaut ;
- on autorise seulement 22 (SSH, pour l'administrer), 80 (HTTP) et 443 (HTTPS) ;
- on laisse sortir ce que le serveur demande lui-même (mises à jour, envoi d'e-mails…).
ufw : le pare-feu simple de Debian et Ubuntu
ufw (« Uncomplicated Firewall ») pilote le vrai pare-feu de Linux avec des commandes lisibles. Tout se fait avec sudo :
sudo apt install ufw
sudo ufw default deny incoming # refuser tout ce qui entre
sudo ufw default allow outgoing # laisser sortir
sudo ufw allow 22/tcp # SSH : TOUJOURS avant d'activer !
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw enable # activer (et au démarrage)
sudo ufw status verbose # vérifierAttention : si tu actives le pare-feu sans avoir autorisé le port 22, ta connexion SSH est coupée… et tu ne peux plus revenir sur le serveur, sauf par la console de secours de l'hébergeur. Autorise toujours SSH avant ufw enable.
Des règles plus fines
sudo ufw allow from 198.51.100.10 to any port 22 # SSH seulement depuis cette adresse
sudo ufw limit 22/tcp # bloque une adresse qui tente trop de connexions
sudo ufw deny 3306/tcp # refuse explicitement la base de données
sudo ufw status numbered # règles numérotées
sudo ufw delete 2 # supprime la règle n°2
sudo ufw delete allow 80/tcp # ou en la recopiantAstuce : une base de données (MariaDB sur 3306, PostgreSQL sur 5432) ne doit jamais être ouverte sur Internet. Seul le site, sur la même machine, a besoin d'y accéder.
Avec Docker : les ports publiés par Docker (-p 8080:80) passent avant les règles d'ufw. Pour qu'un conteneur ne soit joignable que depuis le serveur lui-même, publie-le sur 127.0.0.1:8080:80. On en reparle dans le cours Docker.
À retenir
- Un pare-feu refuse tout ce qui n'est pas autorisé : on ferme tout, puis on ouvre 22, 80 et 443.
sudo ufw default deny incoming,sudo ufw allow 22/tcp,sudo ufw enable.- Autoriser SSH avant d'activer le pare-feu, sinon on se coupe l'accès.
- Règle depuis une seule adresse :
sudo ufw allow from IP to any port 22. - Une base de données ne s'ouvre jamais sur Internet.
Voir la fiche de révision de cette leçon (à imprimer ou à relire avant un contrôle)
Exercice 1 · Un pare-feu pour serveur web
Facile ✓ RéussiTon nouveau serveur n'a aucun pare-feu actif. Règle-le comme un vrai serveur web :
- vérifie l'état actuel du pare-feu ;
- refuse par défaut tout ce qui entre ;
- autorise SSH (
22/tcp), HTTP (80/tcp) et HTTPS (443/tcp) ; - active le pare-feu — après avoir autorisé SSH, bien sûr ;
- affiche le détail des règles avec
status verbose.
Tape tes commandes ici ou dans le fichier à gauche : chaque commande tapée dans le terminal est ajoutée au fichier.
Consignes à réussir
- À faire : Tout ce qui entre est refusé par défaut
- À faire : SSH (22) est autorisé
- À faire : HTTP (80) est autorisé
- À faire : HTTPS (443) est autorisé
- À faire : Le pare-feu est actif
- À faire : SSH était autorisé AVANT l'activation
- À faire : ufw status verbose vérifie le résultat
Bravo, cet exercice est réussi !
- Indice 1 : Toutes les commandes d'ufw demandent
sudo. Pour l'état :sudo ufw status. - Indice 2 : Par défaut :
sudo ufw default deny incoming. Puissudo ufw allow 22/tcp, et pareil pour 80 et 443. - Indice 3 : Seulement à la fin :
sudo ufw enable, puissudo ufw status verbose.
Toujours bloqué ? Voir une solution
sudo ufw status
sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose Exercice 2 · SSH réservé à ta maison
Moyen ✓ RéussiLe pare-feu est déjà en place, mais le port SSH est ouvert au monde entier. Tu te connectes toujours depuis chez toi, avec l'adresse 198.51.100.10.
- autorise SSH (port 22) uniquement depuis
198.51.100.10; - supprime ensuite la règle qui autorisait
22/tcpà tout le monde ; - refuse explicitement le port de la base de données MariaDB (
3306/tcp) ; - affiche les règles numérotées pour vérifier.
Le départ remet le pare-feu dans son état actuel : ne modifie pas ces lignes.
Tape tes commandes ici ou dans le fichier à gauche : chaque commande tapée dans le terminal est ajoutée au fichier.
Consignes à réussir
- À faire : SSH est autorisé depuis 198.51.100.10
- À faire : La règle SSH ouverte à tous est supprimée
- À faire : Le port 3306 est refusé
- À faire : Le pare-feu est toujours actif
- À faire : Les règles numérotées sont affichées
Bravo, cet exercice est réussi !
- Indice 1 : Une règle avec une adresse :
sudo ufw allow from 198.51.100.10 to any port 22. Ajoute-la avant de supprimer l'ancienne, sinon tu te coupes l'accès. - Indice 2 : Supprimer une règle en la recopiant :
sudo ufw delete allow 22/tcp. - Indice 3 : Refuser :
sudo ufw deny 3306/tcp, puissudo ufw status numbered.
Toujours bloqué ? Voir une solution
# état actuel du serveur (ne pas modifier)
sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
# à toi :
sudo ufw allow from 198.51.100.10 to any port 22
sudo ufw delete allow 22/tcp
sudo ufw deny 3306/tcp
sudo ufw status numbered