Principes du filtrage
Stateful : le pare-feu suit l'etat des connexions. Une reponse a une requete sortante est automatiquement autorisee.
nftables — Syntaxe moderne
# Lister les regles
sudo nft list ruleset
# Creer une table et une chaine
sudo nft add table inet filter
sudo nft add chain inet filter input { type filter hook input priority 0 \; policy drop \; }
# Autoriser le loopback et les connexions etablies
sudo nft add rule inet filter input iif lo accept
sudo nft add rule inet filter input ct state established,related accept
# Autoriser SSH et HTTP
sudo nft add rule inet filter input tcp dport 22 accept
sudo nft add rule inet filter input tcp dport {80, 443} accept
# Loguer le reste
sudo nft add rule inet filter input log prefix "DROPPED: " drop
NAT (notions)
# Masquerading (partage de connexion)
sudo nft add table nat
sudo nft add chain nat postrouting { type nat hook postrouting priority 100 \; }
sudo nft add rule nat postrouting oif eth0 masquerade
Bonne pratique : Toujours appliquer "deny by default" : bloquer tout puis autoriser explicitement.