Firewall avec ufw
Filtrer le trafic réseau est une mesure de défense fondamentale : réduire la surface d'exposition en n'autorisant que ce qui est nécessaire. Sur Debian 13, nftables est le framework de filtrage natif du noyau. ufw (Uncomplicated Firewall) utilise l'API iptables, traduite en règles nftables via iptables-nft sur les systèmes modernes.
Installation et activation
apt install ufw
ufw status # vérifier l'état (inactif par défaut)Avant d'activer ufw, s'assurer que le port SSH est autorisé pour ne pas se couper l'accès :
ufw allow ssh # autoriser SSH (port 22)
ufw enable # activer le pare-feuPolitique par défaut
La règle de base : bloquer tout le trafic entrant, autoriser tout le trafic sortant.
ufw default deny incoming
ufw default allow outgoingC'est le comportement recommandé pour un serveur : rien n'entre sauf ce qui est explicitement autorisé.
Gérer les règles
Autoriser des services
ufw allow ssh # port 22/tcp
ufw allow http # port 80/tcp
ufw allow https # port 443/tcp
ufw allow 8080/tcp # port personnalisé TCP
ufw allow 5353/udp # port personnalisé UDPufw reconnaît les noms de services définis dans /etc/services. Pour les services non-standards, utiliser le numéro de port directement.
Restreindre par source
ufw allow from 192.168.1.0/24 to any port 22 # SSH depuis le LAN uniquement
ufw allow from 10.0.0.5 to any port 5432 # PostgreSQL depuis une IP précise
ufw deny from 1.2.3.4 # bloquer une IPSupprimer une règle
ufw status numbered # lister les règles avec numéro
ufw delete 3 # supprimer la règle n°3
ufw delete allow http # supprimer par descriptionVérifier l'état
ufw status verbose # état complet avec politique par défaut
ufw status numbered # avec numéros pour suppressionCe qu'il y a derrière
ufw génère des règles iptables. Sur Debian 13, iptables-nft est le backend par défaut : les commandes iptables sont traduites en règles nftables dans le noyau. Pour inspecter ce qui tourne effectivement :
nft list ruleset # règles nftables actives (inclut celles d'ufw)
iptables -L -n --line-numbers # vue iptables des règles ufwLa compréhension de nftables natif est utile pour les cas avancés (NAT, marquage de paquets, multi-tables). Pour la plupart des serveurs, ufw couvre largement les besoins.
En pratique
Sur un serveur fraîchement installé : ufw default deny incoming, ufw default allow outgoing, ufw allow ssh, puis ufw enable. Dans cet ordre, pas l'inverse. Ensuite, n'ouvrir que les ports réellement utilisés : HTTP/HTTPS si c'est un serveur web, le port de la base de données uniquement depuis l'IP de l'application. ufw status verbose donne une vue claire de ce qui est ouvert. Combiner avec fail2ban pour le SSH : ufw bloque les ports non autorisés, fail2ban gère les tentatives répétées sur les ports ouverts.