Prérequis
- Un serveur Linux avec nftables
- Un accès console : une règle de trop, et SSH se ferme
01Le jeu de règles
La politique par défaut de la chaîne d’entrée est drop. On accepte ensuite les réponses aux connexions sortantes (established, related), la boucle locale, le strict minimum d’ICMPv6 dont IPv6 a besoin, puis les ports voulus.
flush ruleset
table inet firewall {
chain inbound_ipv4 {
icmp type echo-request limit rate 5/second accept
}
chain inbound_ipv6 {
icmpv6 type { nd-neighbor-solicit, nd-router-advert, nd-neighbor-advert } accept
}
chain inbound {
type filter hook input priority 0; policy drop;
ct state vmap { established : accept, related : accept, invalid : drop }
iifname lo accept
meta protocol vmap { ip : jump inbound_ipv4, ip6 : jump inbound_ipv6 }
tcp dport { 22, 80, 443 } accept
}
chain forward {
type filter hook forward priority 0; policy drop;
}
}02Charger et vérifier
Sur Debian, le service nftables charge /etc/nftables.conf à chaque démarrage.
nft -f /etc/nftables.conf
nft list ruleset
systemctl enable nftablesÀ retenir
- Politique drop, puis des exceptions explicites.
- established/related d’abord : les réponses reviennent.
- Un accès console avant de toucher au pare-feu.