# Guide pratique nftables : Sécuriser les réseaux sur Debian
nftables sur Debian offre un filtrage de trafic robuste pour serveurs ou postes de travail. L'objectif ? Bloquer les connexions entrantes indésirables et contrôler les flux sortants. La méthode : modéliser les menaces, définir des contrôles d'accès et créer des règles de filtrage.
Démarrez avec un modèle VM Debian 11.4 netinstall : installation minimale, sans superflu, puis ajoutez SSH, Midnight Commander et conntrack via apt install mc ssh conntrack. Utilisez une plateforme de virtualisation avec contrôle réseau comme QEMU-KVM ou VirtualBox.
Modélisation des menaces et stratégies de mitigation
Identifiez vos menaces principales :
- T1 : Exploits de services — bloquez le trafic entrant par ports/IP.
- T2 : Attaques DoS — limitez le débit des paquets, rejetez les sources loopback (127.0.0.0/8 sauf depuis lo).
- T3 : Attaques par force brute — suivez les échecs de connexion et bannissez les IP.
- T4 : Connexions sortantes malveillantes — filtrez par IP, ports, protocoles.
- T5 : Ports non autorisés — interdisez les nouvelles connexions entrantes.
Schémas de contrôle d'accès, du basique au renforcé :
- Minimal (postes de travail) : Bloquez tout entrant sauf établi ; autorisez tout sortant.
- Standard (serveurs) : Autorisez SSH (22), HTTP/HTTPS (80/443), ICMP ; limitez conntrack.
- Renforcé : Listes blanches IP, limitations de débit par port, listes noires pour DoS.
Mise en place d'une protection serveur renforcée
Configuration labo : Serveur Debian sur réseau 192.168.1.0/24, interface eth0.
Mission : Déployer nftables avec sécurité renforcée.
Étapes de préparation :
apt update && apt install nftables
systemctl enable nftables
Règles dans /etc/nftables.conf :
nft add table inet filter
nft add chain inet filter input { type filter hook input priority 0; policy drop; }
nft add chain inet filter output { type filter hook output priority 0; policy accept; }
nft add chain inet filter forward { type filter hook forward priority 0; policy drop; }
# Établi/lié
nft add rule inet filter input ct state established,related accept
# Loopback
nft add rule inet filter input iifname "lo" accept
# ICMP
nft add rule inet filter input ip protocol icmp icmp type { echo-request, echo-reply } accept
# Limitation SSH
nft add rule inet filter input tcp dport 22 ct state new limit rate 5/minute accept
nft add rule inet filter input tcp dport 22 ct state new drop
# Rejeter sources loopback
nft add rule inet filter input ip saddr 127.0.0.0/8 iifname != "lo" drop
nft add rule inet filter input ct state invalid drop
nft add rule inet filter input accept
Appliquez avec : nft -f /etc/nftables.conf. Vérifiez : nft list ruleset, conntrack -L.
Test de votre pare-feu
Labo : Client (192.168.1.10), serveur (192.168.1.20).
Mission : Sonder les ports, résistance DoS, flux sortants.
Étapes :
nmap -p 22,80,443 192.168.1.20— seul SSH ouvert.hping3 --flood -S 192.168.1.20 -p 22— limitation de débit activée.tcpdump -i eth0pour observer les rejets.
Segmentation réseau avec routage
Activez le forwarding IP : sysctl net.ipv4.ip_forward=1.
Labo : Routeur (eth0 : LAN1 192.168.10.0/24, eth1 : LAN2 192.168.20.0/24).
Mission : Isoler zones utilisateurs et serveurs.
Règles :
nft add table inet filter
nft add chain inet filter forward { type filter hook forward priority 0; policy drop; }
# Utilisateurs vers serveurs : ports essentiels seulement
nft add rule inet filter forward iifname "eth0" oifname "eth1" tcp dport {22,80,443} ct state new accept
nft add rule inet filter forward iifname "eth0" oifname "eth1" ct state established,related accept
# Retour
nft add rule inet filter forward iifname "eth1" oifname "eth0" ct state established,related accept
# Serveurs vers internet
nft add rule inet filter forward iifname "eth1" oifname "eth2" accept
Segmentation couche 2 (pare-feu commutateur)
Pas besoin de sous-réseaux IP : Utilisez VLAN ou filtrage MAC.
Règles bridge :
nft add table bridge filter
nft add chain bridge filter forward { type filter hook forward priority 0; }
# Bloquer entre groupes MAC
nft add rule bridge filter forward ether saddr 00:11:22:33:44:00 ether daddr 00:55:66:77:88:99 drop
OneButtonFirewall : Protection segment rapide
Projet pour déploiement express : Script génère règles à partir de templates.
Labo : Appareil OBF entre segments.
Fonctionnement : Script parse config (JSON/YAML), applique nftables.
Avantages : Zéro config, mises à jour auto. Inconvénients : Moins flexible.
Cas d'usage : Bureaux à domicile, PME sans experts sécurité.
Points clés :
- Modélisez toujours les menaces en premier.
- Politique par défaut : drop avec accepts explicites.
- Testez limitations de débit et conntrack.
- Équilibrez sécurité et convivialité.
- Surveillez logs nftables (
nft log rule).
— Editorial Team
Aucun commentaire pour le moment.