Ouverture commerciale reportée le temps de finaliser nos locaux à Limoges. Être prévenu de l'ouverture

Configurer un pare-feu sur son VPS (nftables ou ufw)

VPS · 4 min de lecture · Mis à jour le 16 octobre 2026

Un pare-feu sur le VPS garantit qu'un service lancé par erreur, ou une base de données mal configurée, ne soit pas joignable depuis l'extérieur. Ce guide met en place un pare-feu simple, avec nftables (inclus dans Debian) ou ufw (plus simple à manier), et explique ce qui est propre aux VPS HebergHub.

Comment le trafic arrive sur votre VPS

Votre VPS n'a pas d'adresse IP publique dédiée. Il est déjà isolé des autres VPS par un pare-feu côté infrastructure, et seul le trafic qui passe par le point d'entrée commun l'atteint :

Ce qui arrive Par où Port reçu par le VPS
SSH ssh -p 2222 [email protected] 22
Votre site https://nom.vps.heberghub.fr (HTTPS géré par le point d'entrée) 80

Une conséquence :

  1. Les ports 22 et 80 doivent rester ouverts dans votre pare-feu, sinon vous coupez votre propre accès SSH et votre site.

Le pare-feu du VPS sert donc surtout à fermer tout ce qui n'est pas voulu.

Avant de commencer : le filet de sécurité

Ouvrez la console de votre VPS depuis l'espace client, dans un onglet à part. Elle ne passe pas par le réseau : si une règle vous enferme dehors, c'est par elle que vous corrigerez.

Faites l'inventaire de ce qui écoute :

ss -tulpn

Notez les services qui doivent être joints de l'extérieur. Les autres (base de données, cache, interface d'administration) devraient écouter sur 127.0.0.1 de toute façon.

N'utilisez qu'un seul outil : nftables ou ufw, pas les deux.

Option A : nftables

apt install -y nftables
cat > /etc/nftables.conf <<'EOF'
#!/usr/sbin/nft -f
flush ruleset

table inet filtre {
  chain entree {
    type filter hook input priority 0; policy drop;
    ct state established,related accept
    ct state invalid drop
    iif lo accept
    meta l4proto { icmp, ipv6-icmp } accept
    tcp dport 22 accept       # SSH (via ssh.vps.heberghub.fr)
    tcp dport 80 accept       # site publié sur nom.vps.heberghub.fr
    # tcp dport 25565 accept  # exemple : service TCP derrière un port public
    # udp dport 51820 accept  # exemple : service UDP (WireGuard)
  }
}
EOF
systemctl enable nftables
systemctl restart nftables
nft list ruleset

Utilisez bien restart : dans un VPS conteneur, nftables peut être déjà actif, et systemctl enable --now ne relit alors pas le fichier. Vérifiez que policy drop apparaît dans nft list ruleset.

Pour ajouter un port plus tard, ajoutez une ligne dans /etc/nftables.conf, puis systemctl restart nftables.

Vérifié sur un VPS conteneur et sur un VPS machine virtuelle Debian 13 : avec ces règles, les ports 22 et 80 répondent, les autres sont fermés ; sur machine virtuelle, la configuration est conservée après un redémarrage.

Option B : ufw

apt install -y ufw
ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp
ufw allow 80/tcp
# ufw allow 25565/tcp     # exemple : service derrière un port public
# ufw allow 51820/udp     # exemple : service UDP
ufw enable
ufw status verbose

ufw enable demande une confirmation, car la commande peut couper une session SSH : la règle 22/tcp étant déjà en place, votre session continue.

Vérifié sur un VPS conteneur et sur un VPS machine virtuelle Debian 13 : ufw status liste 22/tcp et 80/tcp, le port 8080 d'un service de test reste fermé.

Ouvrir un service au public

Pour un service autre que le site web (serveur de jeu, API, VPN), il faut deux ouvertures :

  1. dans l'espace client, un port public vers votre VPS ;
  2. dans le pare-feu du VPS, le port correspondant, avec le bon protocole (TCP ou UDP).

Testez ensuite depuis votre ordinateur, hors du VPS :

nc -vz nom.vps.heberghub.fr PORT          # TCP

Tester sans se couper

nft flush ruleset           # nftables : tout est ouvert jusqu'au prochain redémarrage du service
ufw disable                 # ufw

Corrigez ensuite la règle fautive, puis réactivez.

Docker et le pare-feu

Docker ajoute ses propres règles pour les ports publiés des conteneurs, et ces règles passent avant celles d'ufw : un port publié par Docker reste ouvert même si ufw status ne le montre pas. Avec nftables, flush ruleset efface les règles de Docker au redémarrage du service. Le guide Installer Docker sur un VPS KVM explique comment publier les conteneurs sans surprise.

En sortie

Le pare-feu de ce guide laisse tout sortir, ce qui convient à la plupart des usages. Côté infrastructure, les envois de mail (ports 25, 465 et 587) sont bloqués en sortie, contre le spam : utilisez un service d'envoi par API.

Et fail2ban ?

fail2ban bannit les adresses qui multiplient les échecs de connexion. Derrière le point d'entrée commun, toutes les connexions semblent venir de la même adresse : un bannissement risque de vous bloquer vous-même. Évitez de l'activer sur SSH et préférez l'authentification par clé, qui rend les tentatives par mot de passe inutiles.

Besoin d'aide ?

Bloqué hors de votre VPS ? Ouvrez la console depuis l'espace client et annulez la dernière règle. Sinon, ouvrez un ticket depuis votre espace client avec le nom du VPS et la sortie de nft list ruleset ou ufw status verbose.

Retour à la documentation