objectif
Déployer un pare-feu simple et sûr avec nftables: politique par défaut drop, règles d’entrée explicites.
code minimal
# sauvegarder la config actuelle
sudo nft list ruleset > /root/nft-backup-$(date +%F).nft
# charger un ruleset minimal (ipv4/ipv6, ssh, http/https)
sudo tee /etc/nftables.conf >/dev/null <<'EOF'
flush ruleset
table inet filter {
chain input {
type filter hook input priority 0;
ct state established,related accept
iifname "lo" accept
ip protocol icmp accept
ip6 nexthdr ipv6-icmp accept
tcp dport { 22, 80, 443 } accept
counter drop
}
chain forward {
type filter hook forward priority 0; policy drop;
}
chain output {
type filter hook output priority 0; policy accept;
}
}
EOF
sudo systemctl enable --now nftables
sudo nft -f /etc/nftables.conf
utilisation
# ajouter un port (ex: 5432) de façon idempotente
sudo nft add rule inet filter input tcp dport 5432 accept || true
# lister la table
sudo nft list table inet filter
# tester la politique avec nmap depuis une autre machine
nmap -Pn --top-ports 100 --open VOTRE_IP
variante(s) utile(s)
# limiter le SSH par adresse source
sudo nft add rule inet filter input tcp dport 22 ip saddr 198.51.100.0/24 accept
# bloquer scans bruyants (SYN flood simple)
sudo nft add rule inet filter input tcp flags syn tcp option maxseg size 0 drop
notes
- testez via une session distincte avant d’appliquer pour éviter de vous verrouiller.
- persistez dans /etc/nftables.conf et activez le service systemd nftables.
- utilisez
inetpour couvrir IPv4/IPv6 avec un seul ruleset.