UFW
Pare-feu simplifié pour contrôler rapidement vos ports, services et flux réseau sous Linux.
Introduction à UFW
Comprendre le rôle d'UFW comme interface simplifiée pour iptables et ses cas d'usage principaux.
UFW (Uncomplicated Firewall) est une surcouche simplifiée d'iptables conçue pour faciliter la gestion d'un pare-feu sur Linux. Il fournit des commandes lisibles, applique automatiquement les règles dans le bon ordre et évite les erreurs de syntaxe courantes.
Principe : Vous définissez une politique par défaut (allow/deny), puis vous ajoutez des règles explicites pour autoriser ou bloquer des ports/services. UFW gère la traduction en règles netfilter et les applique immédiatement.
Cas d'usage typiques : sécuriser un serveur SSH, n'exposer que les services nécessaires (HTTP/HTTPS), limiter les accès par IP ou par plage et activer la journalisation pour surveiller les tentatives suspectes.
UFW simplifie trois étapes majeures. Gardez ce schéma en tête pour structurer vos règles :
Flux de fonctionnement d'UFW
UFW ne remplace pas iptables mais fournit une abstraction claire pour éviter les erreurs. Toute modification est immédiatement persistée dans /etc/ufw.
# 1. Définir la politique par défaut
# - incoming : deny (bloque tout ce qui n'est pas autorisé)
# - outgoing : allow (autorise les connexions sortantes légitimes)
#
# 2. Ajouter des règles explicites
# - allow/deny un port, un protocole ou une IP
# - ordre important : les règles sont évaluées du haut vers le bas
#
# 3. Activer/surveiller
# - ufw enable / ufw disable
# - ufw status / journalctl -u ufwInstallation et activation
Installer UFW, vérifier sa présence et activer le service en toute sécurité.
UFW est présent par défaut sur Ubuntu, mais peut être réinstallé ou remis à zéro si nécessaire. Avant d'activer le pare-feu, assurez-vous d'autoriser les accès indispensables (ex : SSH) pour éviter de perdre la main.
Installation / réinstallation
Installe les binaires UFW et les scripts systemd. La commande d'installation ne modifie pas vos règles actuelles.
sudo apt-get update -y
sudo apt-get install -y ufwRemettre UFW à zéro supprime toutes les règles personnalisées et restaure les politiques par défaut.
Réinitialiser la configuration
Utile lorsque la configuration devient incohérente. Pensez à sauvegarder vos règles avant.
sudo ufw resetToujours autoriser SSH avant d'activer le firewall pour éviter de perdre l'accès distant.
Activation sécurisée
La première commande utilise le profil applicatif 'OpenSSH'. ufw enable applique immédiatement toutes les règles et active le service au boot.
sudo ufw allow OpenSSH
sudo ufw enableVérifier le statut et la version
status verbose affiche les politiques par défaut, les règles numérotées et l'état du logging.
sudo ufw status verbose
sudo ufw versionPolitiques par défaut
Définir le comportement global des connexions entrantes, sortantes et routées.
Avant d'ajouter des règles, fixez une politique par défaut. La stratégie recommandée est 'deny' pour les entrées et 'allow' pour les sorties. Ajustez selon vos contraintes de sécurité.
Politique recommandée
Bloque tout le trafic entrant non explicitement autorisé, laisse les connexions sortantes intactes.
sudo ufw default deny incoming
sudo ufw default allow outgoingPour un bastion, on peut également bloquer les sorties sauf exceptions.
Serveur bastion strict
Autorise uniquement DNS/HTTP/HTTPS en sortie. Adaptez selon vos besoins (APT, monitoring, etc.).
sudo ufw default deny outgoing
sudo ufw allow out 53
sudo ufw allow out 80
sudo ufw allow out 443Si votre serveur fait office de routeur, contrôlez les paquets forwardés.
Pare-feu de routage
Empêche le transit de paquets entre interfaces tant que vous n'ajoutez pas de règles explicites.
sudo ufw default deny routedGestion des règles essentielles
Autoriser ou bloquer des ports, des plages IP et gérer les protocoles.
UFW accepte plusieurs syntaxes : par numéro de port, nom de service (selon /etc/services), protocole (tcp/udp) et plage IP. Les règles sont numérotées automatiquement.
Exposer les services web
Autorise HTTP et HTTPS pour tous les clients. Ajoutez /udp si nécessaire (HTTP/3).
sudo ufw allow 80/tcp
sudo ufw allow 443/tcpSyntaxe complète : port/protocole depuis une IP ou un réseau.
Autoriser un port custom
Autorise uniquement l'IP 203.0.113.10 à accéder à PostgreSQL (port 5432).
sudo ufw allow from 203.0.113.10 to any port 5432 proto tcpBloquer explicitement un service
Interdit SMTP sortant/entrant si vous ne souhaitez pas d'envoi d'emails depuis ce serveur.
sudo ufw deny 25/tcpLimiter applique une politique avec rate limiting (connexion syn) utile pour SSH.
Limiter un service critique
Bloque les IP effectuant >6 connexions SSH en 30 secondes. Le flag comment ajoute une note visible dans le status.
sudo ufw limit ssh comment 'Anti brute force SSH'Gestion avancée des règles
Manipuler les règles numérotées, insérer à un index précis et créer des profils applicatifs.
UFW stocke ses règles avec un ID. Vous pouvez les insérer à une position précise, supprimer par numéro et utiliser des fichiers d'applications dans /etc/ufw/applications.d/.
Lister avec numéros
Affiche toutes les règles avec un index. Utile pour supprimer la règle n°2 : sudo ufw delete 2.
sudo ufw status numberedInsertion à un index donné
Ajoute l'autorisation du port 8443 en tête de liste pour qu'elle soit évaluée avant les autres règles.
sudo ufw insert 1 allow 8443/tcpLes profils permettent de regrouper plusieurs ports/protocoles sous un nom unique.
Créer un profil applicatif personnalisé
Une fois le fichier créé : sudo ufw app update Devoups API && sudo ufw allow "Devoups API".
sudo nano /etc/ufw/applications.d/devoups.ini
[Devoups API]
title=Devoups API
description=API Fastify (HTTP/HTTPS)
ports=8080/tcpSauvegarder et restaurer les règles
Copiez ces fichiers pour conserver vos règles IPv4/IPv6. Restaurez-les avant un ufw reload.
sudo cp /etc/ufw/user.rules ~/backup-user.rules
sudo cp /etc/ufw/user6.rules ~/backup-user6.rulesProfils applicatifs intégrés
Utiliser les définitions fournies par les paquets (OpenSSH, Nginx, etc.).
De nombreux paquets installent des profils dans /etc/ufw/applications.d/. Utilisez-les pour éviter les erreurs de port ou de protocole.
Lister les profils disponibles
Affiche tous les profils détectés. Exemple : OpenSSH, Nginx Full, Apache Secure.
sudo ufw app listAfficher le détail d'un profil
Montre les ports couverts (80,443) et la description. Vérifiez avant d'autoriser.
sudo ufw app info 'Nginx Full'Autoriser via un profil
Crée les règles nécessaires d'un coup (HTTP & HTTPS). Utile après une installation Nginx/Apache.
sudo ufw allow 'Nginx Full'Surveillance et journalisation
Contrôler l'activité du firewall et analyser les logs pour détecter les anomalies.
UFW peut enregistrer les connexions permises/refusées dans /var/log/ufw.log. Combinez-le avec journalctl pour suivre le service.
Activer/désactiver le logging
Niveaux disponibles : off, low, medium, high, full. Utilisez high en production pour limiter le bruit.
sudo ufw logging on
sudo ufw logging highSuivre les logs en temps réel
Affiche les paquets bloqués/acceptés. Combinez avec grep 'BLOCK' pour isoler les refus.
sudo tail -f /var/log/ufw.logStatut détaillé
Montre l'état du logging, IPv6 et chaque règle avec commentaire. Idéal pour un audit rapide.
sudo ufw status verboseVérifier le service systemd
Permet de diagnostiquer un échec au démarrage ou des erreurs d'application des règles.
sudo systemctl status ufw
sudo journalctl -u ufw -n 50Dépannage et bonnes pratiques
Diagnostiquer les blocages, gérer IPv6 et appliquer des modifications sûres.
En cas de blocage réseau, le plus sûr est de désactiver temporairement UFW, corriger la règle puis réactiver. Travaillez si possible depuis une console locale ou un accès secondaire.
Désactiver temporairement
Désactive toutes les règles mais conserve la configuration. Réactivez avec sudo ufw enable.
sudo ufw disableTester une règle sans la rendre persistante
Le flag --dry-run affiche la règle générée sans l'appliquer. Idéal pour valider la syntaxe.
sudo ufw --dry-run allow 9000/tcpAssurez-vous que la configuration IPv6 est alignée avec IPv4 si votre serveur l'utilise.
Gérer IPv6
Active la prise en charge IPv6. Sans cela, seules les règles IPv4 sont appliquées.
sudo nano /etc/default/ufw
IPV6=yes
sudo ufw reloadRedémarrer UFW proprement
Recharge toutes les règles. Utilisez après modification manuelle des fichiers /etc/ufw/*.rules.
sudo systemctl restart ufw