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.