Aller au contenu

ufw

À quoi il sert

ufw (Uncomplicated Firewall) simplifie l'écriture d'un pare-feu d'hôte : on raisonne en règles du type « autoriser le port 8000 en TCP depuis ce réseau » (ufw allow from 172.16.8.0/22 to any port 8000 proto tcp), et ufw les traduit en règles iptables, donc nftables via iptables-nft sur Ubuntu 24.04. Il gère les politiques par défaut (ufw default deny incoming), IPv4 et IPv6 ensemble, une limitation des tentatives de connexion (ufw limit), des commentaires, et la journalisation des paquets refusés.

Quand le choisir

Sur un serveur Ubuntu, où il est installé par défaut mais inactif : c'est le moyen le plus court d'obtenir une politique en refus par défaut, lisible par toute l'équipe. Pour une politique plus fine (ensembles dynamiques, filtrage en sortie détaillé), ou sur Debian, on écrit directement un fichier nftables ; sur Red Hat, firewalld tient ce rôle. Dans tous les cas, un seul outil de pare-feu par machine.

Points d'attention

  • Avant ufw enable à distance, autorisez SSH depuis la bonne plage et programmez un retour arrière (systemd-run --on-active=5min --unit=retour-pare-feu /usr/sbin/ufw disable), puis testez par une nouvelle session.
  • La première règle qui correspond l'emporte : un refus ponctuel s'ajoute avec ufw insert 1 ..., et ufw status numbered montre l'ordre.
  • Sans proto tcp, une règle ouvre TCP et UDP. ufw allow 22 ouvre SSH au monde entier : précisez toujours la source.
  • ufw status ne montre pas tout : /etc/ufw/before.rules accepte la boucle locale, les connexions établies et plusieurs types ICMP. C'est là qu'on ajoute ce que la commande ne sait pas exprimer, puis ufw reload.
  • Docker publie ses ports par une règle DNAT qui passe par la chaîne FORWARD, pas par INPUT : un port publié reste joignable malgré un deny. Publiez sur 127.0.0.1 ou filtrez dans DOCKER-USER.
  • ufw logging low (le défaut) suffit en production ; les lignes [UFW BLOCK] arrivent dans /var/log/ufw.log par rsyslog.

Par où commencer

La leçon Le pare-feu de l'hôte du cours Linux : administration système, qui met en place ufw sur les serveurs applicatifs de Signalements et montre ce qu'il écrit réellement dans le noyau. Puis les pages de manuel ufw(8) et ufw-framework(8), et la page du projet sur Launchpad.