Configurer un pare-feu OS moderne avec nftables
Pendant des années, iptables a été le standard de facto pour la gestion du pare-feu sous Linux. Aujourd'hui, il est officiellement obsolète et remplacé par nftables. Plus performant, doté d'une syntaxe plus claire et gérant nativement IPv4 et IPv6 dans une seule table, il est le choix incontournable pour sécuriser vos instances Cloud.
Ce guide vous montre comment configurer un pare-feu robuste en ligne de commande, de manière 100% open source.
Prérequis
- Un serveur avec un accès
rootousudo. - Un système d'exploitation récent : Debian 13 ou Ubuntu 24.04.
- Avoir identifié les ports nécessaires à vos applications (ex: 22 pour SSH, 80/443 pour le web).
Étape 1 : Installation et activation du service
Sur les versions récentes comme Debian 13 ou Ubuntu 24.04, l'outil est souvent préinstallé, mais il convient de s'en assurer et d'activer le service pour qu'il démarre automatiquement avec le serveur.
sudo apt update
sudo apt install nftables -y
# Activer le service au démarrage
sudo systemctl enable nftables
Étape 2 : Comprendre et modifier le jeu de règles
Contrairement à iptables, nftables ne charge pas de tables par défaut. Tout est défini dans un fichier de configuration unique.
sudo nano /etc/nftables.conf
Effacez le contenu existant et remplacez-le par ce modèle sécurisé "Drop by default" (tout ce qui n'est pas explicitement autorisé est bloqué) :
#!/usr/sbin/nft -f
# On vide toutes les règles existantes pour repartir à zéro
flush ruleset
# On crée une table "inet" qui gère à la fois IPv4 et IPv6
table inet filter {
# Chaîne pour le trafic ENTRANT
chain input {
type filter hook input priority 0; policy drop;
# 1. Accepter le trafic de la boucle locale (localhost)
iif "lo" accept
# 2. Accepter le trafic lié aux connexions que notre serveur a lui-même initiées
ct state established,related accept
# 3. Accepter les trames ICMP (Ping)
ip protocol icmp accept
ip6 nexthdr icmpv6 accept
# 4. SERVICES AUTORISÉS (À adapter à vos besoins)
# SSH (Attention à bien mettre votre port si vous l'avez modifié)
tcp dport 22 accept
# HTTP et HTTPS (Serveur Web)
tcp dport { 80, 443 } accept
}
# Chaîne pour le trafic de TRANSIT (utile si le serveur fait office de routeur)
chain forward {
type filter hook forward priority 0; policy drop;
}
# Chaîne pour le trafic SORTANT (On autorise notre serveur à sortir sur Internet)
chain output {
type filter hook output priority 0; policy accept;
}
}
Étape 3 : Appliquer et vérifier les règles
Une fois le fichier sauvegardé, il faut recharger la configuration de nftables pour que le noyau Linux applique les nouvelles règles immédiatement.
sudo systemctl restart nftables
Avant de fermer votre session terminal, ouvrez toujours une deuxième fenêtre pour tester votre connexion SSH. Si vous avez fait une erreur de syntaxe dans le port autorisé, vous serez déconnecté. Si cela arrive sur un Cloud VPC Plennyx, vous devrez utiliser la console VNC de secours depuis votre espace client.
Pour visualiser l'état actuel de votre pare-feu et confirmer que vos règles sont bien actives en mémoire, utilisez la commande suivante :
sudo nft list ruleset