SSD Nodes Learn
Guides Matt ConnorPar Matt Connor · Mis à jour le 2026-07-19

Bases du pare-feu UFW sur un VPS

UFW est la façon simple de gérer un pare-feu sur un VPS. Refusez tout par défaut, ouvrez seulement les ports utiles et activez-le sans bloquer SSH.

Ce qu'est UFW et pourquoi vous en voulez un

UFW signifie Uncomplicated Firewall, et le nom est honnête. C'est une interface conviviale par-dessus le pare-feu que le noyau Linux possède déjà : au lieu d'écrire des règles brutes, vous tapez de courtes commandes comme ufw allow 22/tcp. Sur un VPS neuf, chaque service en écoute est joignable depuis internet par défaut. Un pare-feu inverse la logique : vous refusez tout, puis vous autorisez les quelques ports que vous utilisez vraiment. Ce seul changement supprime la plus grande partie de votre exposition en environ quatre commandes.

Avant d'y toucher, sachez ce qui écoute, car ce sont les services dont le pare-feu décide du sort. Lire ce qui écoute avec ss -tlnp est la bonne première étape.

La seule règle qui vous évite de vous verrouiller dehors

Voici l'erreur qui fait fuir les gens devant les pare-feu. Vous activez UFW avec une politique de refus par défaut, mais vous n'avez jamais autorisé SSH : dès que le pare-feu démarre, votre propre connexion est coupée et vous ne pouvez plus revenir. Évitez-la en autorisant toujours SSH avant d'activer UFW. C'est toute l'astuce, et les étapes ci-dessous le font dans le bon ordre.

Si cela vous arrive quand même, vous n'êtes pas coincé : la console web de votre hébergeur, via VNC ou série, ne passe pas par SSH, vous pouvez donc vous y connecter et lancer ufw disable ou ajouter la règle manquante.

Étape 1 : définir les politiques par défaut

Commencez par dire à UFW de refuser tout ce qui entre et d'autoriser tout ce qui sort :

sudo ufw default deny incoming
sudo ufw default allow outgoing

deny incoming est la moitié importante. Cela signifie que tout port sans règle d'autorisation explicite est fermé vers l'extérieur, même si un service écoute dessus. allow outgoing laisse votre serveur joindre internet normalement pour les mises à jour et le reste. Ces deux commandes ne changent que la politique ; rien n'est appliqué tant que vous n'activez pas UFW à l'étape 3.

Étape 2 : autoriser les ports dont vous avez réellement besoin

Avant d'activer, ouvrez SSH pour garder votre connexion :

sudo ufw allow 22/tcp

UFW peut aussi limiter le débit de SSH pour vous : sudo ufw limit 22/tcp autorise le port mais bloque toute adresse qui fait six connexions ou plus en trente secondes, ce qui émousse les scripts de force brute sans logiciel supplémentaire.

Si vous faites tourner un serveur web, autorisez aussi HTTP et HTTPS :

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

N'autorisez que ce que vous servez au public. Une base de données comme Postgres sur le port 5432 ne devrait presque jamais recevoir de règle d'autorisation. Liez-la plutôt à 127.0.0.1 pour qu'elle ne soit joignable que sur la machine. Chaque port que vous ouvrez est une porte que vous devez désormais défendre, alors gardez la liste courte.

Vous pouvez aussi construire ici la séquence complète de commandes ufw pour votre serveur, puis les lancer dans l'ordre :

ToolUFW rule generator

Étape 3 : activer, et confirmer que c'est en marche

sudo ufw enable

Il avertit que la commande peut perturber les connexions SSH existantes. Comme vous avez autorisé 22/tcp à l'étape 2, votre session survit. Confirmez le résultat :

sudo ufw status verbose
Status: active
Default: deny (incoming), allow (outgoing)

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW IN    Anywhere
22/tcp (v6)                ALLOW IN    Anywhere (v6)
80/tcp                     ALLOW IN    Anywhere

Lisez deux choses ici. Status: active signifie que le pare-feu tourne. Et chaque règle apparaît deux fois, une fois simple et une fois avec (v6), ce qui vous indique qu'UFW couvre l'IPv6 comme l'IPv4. Si les lignes (v6) manquent, votre côté IPv6 n'est pas géré, ce qui est un piège à part couvert dans l'article sur le pare-feu IPv6.

Gérer les règles plus tard

Pour voir les règles avec des numéros afin d'en supprimer une :

sudo ufw status numbered
sudo ufw delete 3

Pour autoriser un port depuis une seule adresse, une bonne façon d'exposer un service d'administration à votre seule IP :

sudo ufw allow from 10.0.0.24 to any port 5432 proto tcp

Un pare-feu est une couche. Il contrôle ce qui peut atteindre un port, mais il ne ralentit pas quelqu'un qui martèle un port que vous avez laissé ouvert, comme SSH. Pour cela, ajoutez Fail2ban devant SSH pour bannir les récidivistes. La défense en profondeur signifie que chaque couche couvre ce que les autres ne peuvent pas.

Un pare-feu n'a de sens qu'une fois que vous savez ce que sont les ports et comment les services écoutent, et en configurer un est une étape dans les 10 premières minutes sur un nouveau VPS.

FAQ

Activer UFW va-t-il couper ma session SSH ?

Pas si vous autorisez SSH d'abord. Lancez sudo ufw allow 22/tcp avant sudo ufw enable, et votre connexion survit car le pare-feu autorise désormais le port 22. Le danger, c'est d'activer un pare-feu en refus par défaut sans règle d'autorisation SSH, ce qui vous coupe l'accès. Si cela arrive, connectez-vous via la console VNC ou série de votre hébergeur et lancez ufw disable.

Quels ports faut-il ouvrir sur un VPS ?

Seulement ceux que vous servez au public. SSH (22/tcp) pour pouvoir administrer la machine, et HTTP et HTTPS (80/tcp, 443/tcp) si vous faites tourner un site web. Laissez tout le reste refusé. Les services internes comme les bases de données devraient se lier à 127.0.0.1 et ne recevoir aucune règle de pare-feu, afin de n'être jamais joignables depuis le réseau.

UFW gère-t-il l'IPv6 ?

Sur les Ubuntu récentes, oui : IPV6=yes est défini dans /etc/default/ufw, donc chaque règle s'applique aux deux piles et ufw status affiche les règles IPv6 avec un suffixe (v6). Les façons dont cela peut encore mal tourner sont couvertes dans le piège du pare-feu IPv6.

Comment supprimer une règle UFW ?

Lancez sudo ufw status numbered pour lister les règles avec des numéros d'index, puis sudo ufw delete N où N est le numéro de la règle à retirer. Vous pouvez aussi supprimer par spécification, par exemple sudo ufw delete allow 80/tcp.

Comment autoriser un port depuis une seule adresse IP ?

Utilisez une règle from au lieu d'un simple allow. Pour ne laisser que l'adresse de votre bureau atteindre PostgreSQL, lancez sudo ufw allow from 10.0.0.10 to any port 5432 proto tcp. Avec une politique de refus par défaut, le port est fermé à tous tant qu'une règle ne l'ouvre pas ; cette règle from est donc le seul accès : tout internet reste bloqué et seule l'adresse que vous nommez passe. N'ajoutez pas en plus un simple allow 5432/tcp, qui ouvrirait le port à tout le monde. C'est la façon la plus sûre d'exposer une base de données ou un panneau d'administration. Confirmez-le avec sudo ufw status verbose, qui affiche l'adresse source à côté du port.