Comment configurer nftables pour un serveur web

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.

Commentaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *