Dans cet article, nous allons voir comment installer et configurer nftables sur une distribution Linux Debian 12 pour sécuriser un serveur web en autorisant uniquement les ports 443 (HTTPS) et 22 (SSH).
Installation de nftables
Sur Debian 12, nftables est installé par défaut. Si ce n’est pas le cas, vous pouvez l’installer avec la commande suivante :
sudo apt update && sudo apt install nftables -y
Ensuite, assurez-vous que le service nftables est activé au démarrage :
sudo systemctl enable nftables
Et démarrez le service :
sudo systemctl start nftables
Configuration de nftables
Nous allons maintenant créer une configuration de base qui :
- Bloque tout le trafic entrant par défaut
- Autorise les connexions SSH (port 22)
- Autorise les connexions HTTPS (port 443)
- Autorise le trafic sortant
Ouvrez le fichier de configuration principal :
sudo nano /etc/nftables.conf
Remplacez le contenu par :
#!/usr/sbin/nft -f
table inet filter {
chain input {
type filter hook input priority 0;
policy drop;
# Autoriser les connexions déjà établies
ct state established,related accept;
# Autoriser le trafic en provenance de localhost
iif lo accept;
# Autoriser SSH (port 22)
tcp dport 22 accept;
# Autoriser HTTPS (port 443)
tcp dport 443 accept;
}
chain forward {
type filter hook forward priority 0;
policy drop;
}
chain output {
type filter hook output priority 0;
policy accept;
}
}
Explication des commandes
- table inet filter : Crée une table nommée « filter » pour IPv4 et IPv6.
- chain input : Définition des règles pour le trafic entrant.
- policy drop : Par défaut, tout le trafic entrant est bloqué.
- ct state established,related accept : Autorise les connexions déjà établies.
- iif lo accept : Autorise le trafic provenant de l’interface loopback.
- tcp dport 22 accept : Autorise les connexions entrantes sur le port 22 (SSH).
- tcp dport 443 accept : Autorise les connexions entrantes sur le port 443 (HTTPS).
- chain forward : Bloque le trafic redirigé par la machine.
- chain output : Autorise tout le trafic sortant.
Application des règles
Pour appliquer les règles définies, rechargez nftables :
sudo systemctl restart nftables
Vérifiez que les règles sont bien en place :
sudo nft list ruleset
Conclusion
Vous avez maintenant un pare-feu fonctionnel avec nftables qui protège votre serveur en autorisant uniquement SSH et HTTPS. Cette configuration peut être adaptée en fonction de vos besoins.