Pourquoi configurer UFW sur votre VPS
Par défaut, beaucoup d'images de VPS laissent des services à l'écoute et n'appliquent aucune politique de pare-feu cohérente. iptables est puissant mais verbeux et facile à mal configurer ; UFW en offre une surcouche lisible où l'on raisonne en termes de "ports autorisés" plutôt que de chaînes et de cibles. Le principe directeur est simple : on bloque tout le trafic entrant par défaut et on n'ouvre explicitement que ce qui est nécessaire (SSH, HTTP, HTTPS). Self-gérer son pare-feu sur le VPS, plutôt que de s'en remettre uniquement à un éventuel filtrage du fournisseur, vous donne une défense en profondeur indépendante et auditée par vous-même. C'est la première brique d'un durcissement sérieux.
Ce que UFW vous permet de faire
- Adopter une politique "deny par défaut" en entrée, n'ouvrant que les ports réellement utilisés.
- Limiter le débit des tentatives SSH (
ufw limit) pour freiner le brute-force. - Restreindre un port à une seule IP source (votre back-office, votre poste) en une commande.
- Lire et auditer ses règles d'un coup d'œil avec
ufw status numbered, sans déchiffrer iptables. - Profiter de profils d'applications préenregistrés (
ufw app list) pour Nginx, OpenSSH, etc. - Journaliser le trafic rejeté pour repérer scans et tentatives d'intrusion.
Prérequis pour ce déploiement
UFW est d'une légèreté totale : il fonctionne sur le plus modeste des VPS (1 vCPU, 512 Mo de RAM suffisent), car il ne fait que générer des règles iptables/nftables. Vous avez besoin d'un accès root ou sudo, du paquet ufw (présent ou installable via apt install ufw) et, point crucial, de connaître votre port SSH avant toute manipulation pour ne pas vous verrouiller dehors. Aucun Docker ni domaine n'est requis ici. Si vos services tournent en conteneurs Docker, gardez en tête que Docker manipule iptables directement et peut contourner UFW : une attention particulière est alors nécessaire.
Configurer UFW pas à pas
Autoriser SSH AVANT toute autre règle
C'est l'étape qui évite le verrouillage. Avant même d'activer le pare-feu, autorisez votre port SSH : sudo ufw allow 22/tcp (ou votre port personnalisé). N'activez jamais UFW sans cette règle, sous peine de perdre l'accès à votre VPS.
Définir les politiques par défaut
Posez le socle deny-by-default : sudo ufw default deny incoming et sudo ufw default allow outgoing. Tout le trafic entrant non explicitement autorisé sera désormais rejeté, tandis que vos services peuvent toujours initier des connexions sortantes.
Ouvrir les ports des services exposés
Autorisez uniquement ce qui doit être public. Pour un serveur web : sudo ufw allow 80/tcp et sudo ufw allow 443/tcp, ou directement le profil sudo ufw allow 'Nginx Full'. Laissez fermé tout port qui n'a pas vocation à être joint depuis Internet.
Activer le rate limiting sur SSH
Remplacez la règle SSH simple par sudo ufw limit 22/tcp : UFW bloque alors temporairement une IP qui tente plus de 6 connexions en 30 secondes, ce qui ralentit fortement les attaques par force brute sans bannir vos accès légitimes.
Restreindre les ports sensibles par IP source
Pour un panel d'admin ou une base de données, n'ouvrez le port qu'à votre adresse : sudo ufw allow from 203.0.113.10 to any port 5432 proto tcp. Aucune autre source ne pourra atteindre ce service, même s'il écoute.
Activer UFW et vérifier les règles
Activez le pare-feu avec sudo ufw enable, confirmez, puis auditez l'ensemble via sudo ufw status numbered. Gardez une session SSH ouverte pendant le test pour pouvoir corriger une règle si vous vous coupez l'accès.
Si vos services tournent en Docker, sachez que Docker insère ses propres règles iptables en amont de celles d'UFW : un conteneur lancé avec -p 5432:5432 est joignable depuis Internet même si UFW "bloque" le port 5432. Deux parades robustes : bindez explicitement le port sur la loopback (-p 127.0.0.1:5432:5432) pour les services non destinés au public, ou installez le projet ufw-docker qui réconcilie les chaînes Docker et UFW. Activez aussi sudo ufw logging on et surveillez /var/log/ufw.log pour détecter les scans avant qu'ils ne deviennent des intrusions.