UFW sous Debian 131
1. Présentation générale
UFW (Uncomplicated Firewall) est une interface simplifiée pour configurer netfilter/iptables (et nftables sur les systèmes récents, dont Debian 13 où UFW s'appuie désormais sur le backend nftables). Son objectif est de masquer la complexité syntaxique d'iptables/nftables derrière des commandes lisibles, tout en générant en arrière-plan les règles de filtrage correspondantes.
Installation sous Debian 13 :
2. Politique par défaut
La plupart des règles décrites supposent que vous utilisez le règlement UFW par défaut, configuré pour autoriser le trafic sortant et refuser le trafic entrant par défaut.
Activation/désactivation du pare-feu :
Vérification de l'état des règles :
3. Règles de base (allow/deny/reject)
Bloquer une adresse IP
Pour bloquer toutes les connexions réseau qui proviennent d'une adresse IP spécifique, on exécute sudo ufw deny from <IP>. from <IP> spécifie une adresse IP source, et il est possible de spécifier un sous-réseau (ex: /24) à la place d'une IP unique. L'adresse IP source peut être utilisée dans n'importe quelle règle, y compris une règle allow.
Restriction par interface réseau
Pour bloquer les connexions d'une adresse IP spécifique vers une interface réseau donnée (par exemple eth0), on ajoute l'option in on eth0 à la règle. L'interface réseau peut être spécifiée dans n'importe quelle règle de pare-feu, ce qui permet de limiter la portée de la règle à un réseau spécifique.
Exemples par service courant
| Service | Commande |
|---|---|
| SSH (port 22) | sudo ufw allow ssh ou sudo ufw allow 22 |
| SSH depuis un sous-réseau | sudo ufw allow from 192.168.1.0/24 to 192.168.1.254 port 22 |
| HTTP | sudo ufw allow http ou sudo ufw allow 80 |
| HTTPS | sudo ufw allow https ou sudo ufw allow 443 |
| HTTP+HTTPS en une règle | sudo ufw allow proto tcp from any to 192.168.1.254 port 80,443 |
| MySQL sur interface réseau | sudo ufw allow in on eth0 to 192.168.1.254 port 3306 |
Lorsque plusieurs ports sont spécifiés dans une même règle, il faut indiquer le protocole avec proto tcp.
Limitation du débit (anti brute-force)
Une fonctionnalité importante pour sécuriser SSH :
Cette règle bloque temporairement (via le module recent d'iptables/nftables) une IP qui tente plus de 6 connexions en 30 secondes sur le port spécifié.
4. Gestion des règles
sudo ufw status numbered # afficher les règles numérotées
sudo ufw delete <numéro> # supprimer une règle par son numéro
sudo ufw insert 1 allow from 10.0.0.5 # insérer une règle à une position précise
sudo ufw reset # réinitialiser toutes les règles (rollback)
5. Logging
Les journaux sont consultables via journalctl ou dans /var/log/ufw.log, utile pour le diagnostic et l'audit.
6. Filtrage entre réseaux : la commande ufw route
Par défaut, UFW filtre uniquement le trafic destiné à la machine elle-même (chaînes INPUT/OUTPUT). Lorsque la machine fait office de routeur/passerelle entre plusieurs réseaux (interfaces multiples, routage activé via net.ipv4.ip_forward=1), il faut filtrer le trafic qui traverse la machine — c'est le rôle de la chaîne FORWARD, géré par ufw route.
Syntaxe générale
sudo ufw route allow in on <iface_entrée> out on <iface_sortie> from <réseau_src> to <réseau_dst> port <port> proto <protocole>
sudo ufw route deny ...
sudo ufw route reject ...
Cas d'usage typique
Soit un serveur Debian 13 avec deux interfaces :
-
eth0: réseau LAN interne (192.168.1.0/24) -
eth1: réseau DMZ (192.168.2.0/24)
Autoriser le LAN à accéder à un serveur web dans la DMZ :
sudo ufw route allow in on eth0 out on eth1 from 192.168.1.0/24 to 192.168.2.10 port 80 proto tcp
Autre possibilité avec moins de précisions concernant les interfaces d’entrée et sorite:
sudo ufw route allow from 192.168.1.0/24 to 192.168.2.10 port 80 proto tcp
Bloquer tout autre trafic entre les deux réseaux par défaut :
(Cette politique « routed » est l'équivalent de la politique par défaut pour la chaîne FORWARD, à ne pas confondre avec default deny incoming/outgoing qui concernent le trafic destiné/émis par la machine elle-même.)
Autoriser tout le trafic entre deux interfaces (cas simple type passerelle de confiance) :
Activation impérative du forwarding IP
ufw route ne sert à rien sans le routage IP activé au niveau noyau :
Points importants
-
ufw routeagit sur la chaîne FORWARD de netfilter, distincte des chaînes INPUT/OUTPUT utilisées par les règles classiques (ufw allow/ufw deny). -
Les règles sont évaluées dans l'ordre, comme les règles classiques (voir
ufw status numbered). -
Très utilisé pour : segmentation réseau (LAN/DMZ/invités), contrôle du trafic entre VLANs si la machine fait du routage inter-VLAN, ou filtrage du trafic d'une machine faisant office de passerelle NAT.
7. Bonnes pratiques de mise en œuvre
-
Toujours configurer les règles avant d'activer UFW (
ufw enable), en particulier la règle autorisant SSH, pour éviter de se couper l'accès à distance. -
Utiliser
ufw status verboserégulièrement pour auditer les règles actives. -
Pour les machines passerelles, séparer clairement la logique « trafic vers la machine » (
allow/deny) de la logique « trafic traversant la machine » (route). -
Sauvegarder/versionner les fichiers
/etc/ufw/*.rulesavant toute modification manuelle.
-
Source - Documentation produite par David Balny ↩