Les commandes suivent la page des pare-feu d'Ubuntu Server et la page de Docker sur le filtrage des paquets, relues le 14 octobre 2026.
Les commandes utiles
| Commande | Effet |
|---|---|
sudo ufw status verbose | état du pare-feu et règles en place |
sudo ufw allow 22 | ouvre le port 22 |
sudo ufw allow proto tcp from 192.168.0.2 to any port 22 | ouvre le port 22 pour une seule adresse |
sudo ufw deny 22 | ferme le port 22 |
sudo ufw delete deny 22 | retire une règle |
sudo ufw status numbered | règles numérotées, pour les retirer par leur numéro |
sudo ufw app list | profils d'applications connus |
sudo ufw disable | arrête le pare-feu |
Les noms de service du fichier /etc/services remplacent les numéros : sudo ufw allow ssh revient à ouvrir le port 22.
Le mettre en marche sans se couper l'accès
Sur un serveur distant, l'ordre compte : activer UFW avant d'avoir ouvert SSH vous coupe de votre propre machine.
- Ouvrez d'abord SSH :
sudo ufw allow 22. - Ouvrez les ports de vos services, par exemple
sudo ufw allow 80etsudo ufw allow 443. - Activez le pare-feu :
sudo ufw enable. - Vérifiez depuis une seconde session SSH, sans fermer la première, que vous pouvez toujours vous connecter.
Le piège de Docker
Docker publie les ports des conteneurs en réécrivant le trafic dans la table nat, avant que les règles d'UFW ne s'appliquent. La documentation de Docker le dit : les deux outils sont incompatibles, et le trafic d'un conteneur dont les ports sont publiés échappe aux réglages d'UFW. Concrètement, ports: - "5432:5432" dans un fichier compose expose la base de données sur Internet, même si ufw status affiche le port 5432 fermé.
Trois parades, de la plus simple à la plus technique :
- Ne pas publier ce qui doit rester privé. Les conteneurs d'un même fichier compose se joignent par leur nom, sans
ports:. Pour un accès d'administration, publiez sur l'adresse locale :"127.0.0.1:5432:5432", puis passez par un tunnel SSH. - Un pare-feu en amont du serveur, dans l'infrastructure de l'hébergeur, que Docker ne peut pas contourner puisqu'il n'est pas sur la machine.
- Des règles dans la chaîne `DOCKER-USER`, que Docker consulte avant ses propres règles. C'est la voie que décrit sa page sur iptables, mais elle demande de connaître iptables ou nftables.
Sur un VPS Hubspace
Nos VPS n'utilisent pas UFW, et c'est voulu. Le pare-feu est placé en amont du serveur, dans le réseau : il ne laisse passer que les ports 22, 80 et 443 en TCP, et il s'applique aussi aux ports que Docker publie. Une base de données lancée dans un conteneur n'est donc pas exposée par accident.
Pour ouvrir un autre port, vous ajoutez une règle dans l'onglet « Firewalls » de votre espace client, de préférence limitée à votre adresse IP. La marche à suivre est dans Ouvrir un port sur son VPS. Les tentatives de connexion répétées sur SSH sont, elles, traitées par fail2ban, installé à la livraison ; voir Fail2ban.
Vous pouvez installer UFW en plus, rien ne l'empêche, mais il ne protégera pas vos conteneurs et une erreur de règle peut vous couper l'accès SSH. Si vous le faites, gardez la règle allow 22 et ouvrez une seconde session avant d'activer. Les autres réglages de sécurité de la livraison sont détaillés dans Sécuriser un serveur VPS.
Questions fréquentes
UFW est-il actif par défaut sur Ubuntu ?
Non. La documentation d'Ubuntu indique qu'il est désactivé au départ. sudo ufw status répond « Status: inactive » tant que vous ne l'avez pas activé.
Me suis-je coupé l'accès en activant UFW : que faire ?
Si SSH n'était pas ouvert, la session tombe et aucune nouvelle connexion ne passe. Il faut un accès qui ne passe pas par SSH, comme la console de l'hébergeur, pour lancer sudo ufw allow 22 ou sudo ufw disable. Sur un VPS Hubspace, écrivez-nous depuis votre espace client.
UFW suffit-il à protéger un serveur ?
Il filtre les ports, ce qui est utile, mais il ne remplace ni les mises à jour, ni la connexion SSH par clé, ni la vigilance sur ce que vos conteneurs publient. Sur un serveur Docker, il ne voit même pas les ports publiés.
Articles liés
- Commandes Linux : les essentielles à connaîtreLes commandes Linux à connaître pour gérer un serveur : fichiers et dossiers, recherche, espace disque, services, journaux et droits, avec leurs options utiles.
- Mettre à jour Ubuntu ou Debian sur un serveurMettre à jour Ubuntu ou Debian : apt update et apt upgrade, mises à jour automatiques de sécurité, redémarrage nécessaire et passage à une nouvelle version.
- Crontab : planifier une tâche avec cronCrontab sous Linux : écrire une ligne cron, comprendre ses cinq champs, planifier un script, garder une trace de son exécution et éviter les pièges.