UFW (Uncomplicated Firewall) est un frontend en ligne de commande pour nftables/iptables. Il est installé par défaut sur Ubuntu (désactivé au démarrage), disponible via apt sur Debian, et conçu pour rendre la configuration d'un pare-feu hôte accessible sans apprendre la syntaxe de iptables. C'est la bonne porte d'entrée pour un serveur Debian/Ubuntu autonome. Dans ce guide, vous posez une politique par défaut stricte, ouvrez les flux utiles, validez l'état du pare-feu, et vous équipez d'un plan de rollback pour ne jamais vous couper de votre propre serveur.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Installer UFW sur Debian/Ubuntu et comprendre quand il n'est pas disponible ailleurs
- Autoriser SSH avant toute activation pour éviter le lockout
- Poser une politique par défaut (
deny incoming,allow outgoing) et l'activer - Ajouter des règles
allow,deny,limitpar service ou par port - Vérifier l'état et le numéro de chaque règle avec
ufw status verbose/numbered - Revenir en arrière proprement en cas de mauvaise règle
Dans quel contexte ?
Section intitulée « Dans quel contexte ? »UFW est fait pour le pare-feu hôte d'un serveur ou d'un poste Linux. On l'utilise quand :
- on est sur Ubuntu ou Debian et qu'on veut un pare-feu simple, auditable rapidement
- on veut une syntaxe lisible (
sudo ufw allow 22/tcp) plutôt que des chaînes iptables - on met en place une première couche de filtrage avant d'envisager
nftablesdirect oufirewalld
Si vous êtes sur RHEL, Fedora, CentOS Stream ou Rocky, la valeur par défaut est Firewalld, UFW n'y est pas packagé par défaut et le mélanger avec Firewalld crée des conflits. Sur ces systèmes, restez sur Firewalld.
Prérequis
Section intitulée « Prérequis »- Un serveur Debian 12 ou Ubuntu 24.04 LTS
- Un utilisateur avec droits
sudo - Un accès SSH par clé déjà configuré, si vous utilisez SSH par mot de passe, lisez d'abord Clés SSH
- Un moyen d'accès de secours (console physique, console cloud provider, série…) en cas de lockout
Installer UFW
Section intitulée « Installer UFW »sudo apt updatesudo apt install -y ufwUFW est normalement déjà présent :
dpkg -l ufwSi absent :
sudo apt updatesudo apt install -y ufwUFW n'est pas la solution recommandée ici. Préférez Firewalld qui est packagé par défaut et intégré à l'écosystème Red Hat. Si vous voulez quand même UFW, il est disponible via EPEL mais le mixage avec Firewalld est à éviter.
Vérifiez que la commande répond :
sudo ufw statusSortie attendue après installation, avant activation :
Status: inactiveAutoriser SSH avant toute activation
Section intitulée « Autoriser SSH avant toute activation »C'est l'étape la plus importante du guide. Avant d'activer UFW, créez la règle qui garde votre session SSH vivante.
-
Autoriser SSH explicitement
Fenêtre de terminal sudo ufw allow 22/tcpSi votre SSH écoute sur un port non standard :
Fenêtre de terminal sudo ufw allow 2222/tcp comment 'SSH admin' -
Rate-limiter SSH pour freiner les attaques par force brute
Fenêtre de terminal sudo ufw limit 22/tcplimitaccepte jusqu'à 6 connexions par source par 30 s avant de bloquer l'IP. Utile contre les bots ; pas un substitut à des clés SSH et à un durcissement SSH complet si vous exposez SSH sur Internet (voir Durcir SSH). -
Relire la règle
Fenêtre de terminal sudo ufw show addedDoit afficher
ufw limit 22/tcpouufw allow 22/tcpselon votre choix.
Activer UFW avec une politique stricte
Section intitulée « Activer UFW avec une politique stricte »Par défaut, UFW applique :
deny incoming, tout trafic entrant non explicitement autorisé est refuséallow outgoing, tout trafic sortant est autorisé
C'est la bonne baseline. Activez :
sudo ufw enableVous verrez un avertissement puis la règle d'activation. Vérifiez immédiatement :
sudo ufw status verboseSortie attendue :
Status: activeLogging: on (low)Default: deny (incoming), allow (outgoing), disabled (routed)New profiles: skip
To Action From-- ------ ----22/tcp LIMIT Anywhere22/tcp (v6) LIMIT Anywhere (v6)Votre connexion SSH courante doit toujours fonctionner. Si elle tombe, utilisez votre accès de secours et exécutez sudo ufw disable.
Ouvrir les services utiles
Section intitulée « Ouvrir les services utiles »UFW connaît les noms de services via /etc/services. Les deux syntaxes ci-dessous sont équivalentes :
# par nom de servicesudo ufw allow http
# par numéro de portsudo ufw allow 80/tcpQuelques cas courants :
# Serveur websudo ufw allow httpsudo ufw allow https
# Serveur mail (SMTP + IMAP chiffrés)sudo ufw allow 587/tcp comment 'SMTP submission'sudo ufw allow 993/tcp comment 'IMAPS'
# Limiter un service à un réseau internesudo ufw allow from 192.168.10.0/24 to any port 3306 proto tcp comment 'MySQL LAN only'
# Bloquer une IP qui martèle un service public (ex: HTTP exposé)# Inutile sur un port déjà bloqué par deny-by-defaultsudo ufw deny from 203.0.113.42 to any port 80 proto tcpToujours vérifier après chaque lot de règles :
sudo ufw status numberedLe numéro permet de supprimer une règle précise :
sudo ufw delete 3Vérifier et lire les règles
Section intitulée « Vérifier et lire les règles »Trois commandes de vérification à garder sous la main :
| Besoin | Commande |
|---|---|
| État + politique par défaut + règles | sudo ufw status verbose |
| Règles avec numéro (pour suppression) | sudo ufw status numbered |
Règles en attente (avant ufw enable) | sudo ufw show added |
Pour inspecter le trafic bloqué, activez la journalisation :
sudo ufw logging mediumsudo tail -f /var/log/ufw.logLes entrées [UFW BLOCK] indiquent les paquets refusés ; utilisez-les pour diagnostiquer un service qui ne répond pas.
Bonnes pratiques
Section intitulée « Bonnes pratiques »- Toujours autoriser SSH avant
ufw enable, règle d'or. - Préférer
limitàallowsur SSH exposé sur Internet, complété par clé SSH uniquement. - Commenter chaque règle avec
comment '…', la relecture dans 6 mois sera beaucoup plus facile. - Scoper les règles au bon réseau (
from 192.168.0.0/16 to any …) plutôt que d'ouvrirAnywherepar défaut. - Ne pas mixer UFW et iptables/nftables à la main, UFW écrit ses propres chaînes, une modification manuelle crée des conflits silencieux.
- Tester la persistance :
sudo systemctl rebootpuis revérifierufw status verbose. UFW est normalement activé au démarrage, mais une config cloud-init peut remettre l'état àinactive.
Sécurité et rollback
Section intitulée « Sécurité et rollback »Avant de lancer ufw enable, ayez ces deux filets de secours :
- Une deuxième session SSH ouverte sur le serveur (l'activation ne coupe pas les connexions établies, mais une règle ratée pourrait le faire sur la prochaine).
- L'accès console configuré et testé (IPMI, KVM cloud, port série).
Rollback complet en cas de problème :
# Désactiver UFW (retour à l'état pré-activation)sudo ufw disable
# Réinitialiser toutes les règlessudo ufw resetreset efface toutes les règles et désactive UFW. C'est radical, utilisez-le si vous êtes perdu. Après un reset, il faut refaire la procédure d'autorisation SSH avant un nouveau enable.
Dépannage rapide
Section intitulée « Dépannage rapide »| Symptôme | Cause probable | Action |
|---|---|---|
SSH coupé après ufw enable | Port SSH non autorisé ou règle trop restrictive | Accès console → sudo ufw disable, corriger, réessayer |
| Service accessible en local, pas depuis l'extérieur | Port non autorisé ou règle avec from trop étroite | sudo ufw status numbered ; ajuster ou ajouter allow <port>/tcp |
ufw status vide après reboot | UFW désactivé au démarrage (Ubuntu cloud init) | sudo systemctl enable --now ufw + vérifier sudo ufw enable |
Règles non visibles dans iptables -L | Normal : UFW utilise ses propres chaînes | Utiliser sudo iptables -L -n -v avec les chaînes UFW ou rester sur sudo ufw status |
[UFW BLOCK] dans /var/log/ufw.log pour un service légitime | Service arrive sur une interface non autorisée | Ajouter allow in on <iface> ou élargir la règle |
À retenir
Section intitulée « À retenir »- UFW est un frontend simplifié de nftables/iptables, packagé par défaut sur Ubuntu et installable sur Debian.
- Autorisez SSH avant d'activer, c'est la seule erreur qui peut vous couper votre serveur.
- Utilisez
limitpour SSH exposé sur Internet,allowpour un réseau interne. - Politique par défaut recommandée :
deny incoming,allow outgoing. sudo ufw status verboseetsudo ufw status numberedsont les deux commandes à mémoriser.- Chaque règle peut recevoir un
comment, utilisez-le systématiquement. - Sur RHEL/Fedora/Rocky, préférez Firewalld ; ne mélangez pas les deux.
ufw reseten dernier recours pour repartir d'une page blanche.
FAQ : questions fréquentes
Section intitulée « FAQ : questions fréquentes »nftables/iptables. Il rend la configuration d'un pare-feu hôte sur Debian/Ubuntu accessible sans apprendre la syntaxe iptables, avec des commandes lisibles comme sudo ufw allow 22/tcp. Installé par défaut sur Ubuntu (désactivé au démarrage).ufw enable : sudo ufw allow 22/tcp (ou sudo ufw limit 22/tcp). La politique deny incoming par défaut refuse tout port non autorisé, y compris SSH : c'est la cause n°1 de lockout. Gardez aussi un accès console de secours (IPMI, KVM cloud) et une 2e session SSH ouverte pendant la manipulation.allow: ouvre un port (sudo ufw allow 80/tcp)deny: le refuse explicitementlimit: ouvre le port mais bloque une source qui dépasse 6 connexions en 30 s (anti-force brute)
limit pour SSH exposé sur Internet, allow pour un réseau interne ou via VPN. limit n'est pas un substitut aux clés SSH et au durcissement.sudo ufw status numbered, puis supprimez par numéro : sudo ufw delete 3. Pour l'état complet + la politique par défaut : sudo ufw status verbose. Avant ufw enable, les règles en file d'attente se voient avec sudo ufw show added. En dernier recours, sudo ufw reset repart d'une page blanche.