CRITICAL INFRA
Loading critical CVEs…
ALL EXPLOITED
Loading…

HowTo: nftables-Firewall auf Debian

📅 2026-09-13 · Cyber Immunity

nftables ersetzt iptables auf modernem Debian. Ein sauberes Ruleset mit Befehlen: Drop-Policy, erlaubte Dienste, IP-Sets, SSH-Rate-Limit und Persistenz.

1. Installation

sudo apt update && sudo apt -y install nftables
sudo systemctl enable nftables

2. Basis-Ruleset (/etc/nftables.conf)

sudo tee /etc/nftables.conf >/dev/null <<'EOF'
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
  chain input {
    type filter hook input priority 0; policy drop;
    iif "lo" accept
    ct state established,related accept
    ct state invalid drop
    ip protocol icmp accept
    tcp dport 22 accept
    tcp dport { 80, 443 } accept
  }
  chain forward { type filter hook forward priority 0; policy drop; }
  chain output  { type filter hook output priority 0; policy accept; }
}
EOF

3. Pruefen und anwenden

sudo nft -c -f /etc/nftables.conf   # verifica sintaxa
sudo systemctl restart nftables
sudo nft list ruleset

4. Blocklist-IP-Set

# set de IP-uri blocate (interval) + regula de drop
sudo nft add set inet filter blocklist '{ type ipv4_addr; flags interval; }'
sudo nft add rule inet filter input ip saddr @blocklist drop
sudo nft add element inet filter blocklist '{ 203.0.113.0/24, 198.51.100.7 }'

5. SSH-Rate-Limit

# limiteaza noile conexiuni SSH: max 4 / minut / IP
sudo nft add rule inet filter input tcp dport 22 ct state new \
  meter ssh_meter '{ ip saddr limit rate 4/minute }' accept
sudo nft add rule inet filter input tcp dport 22 ct state new drop

6. Logging fuer verworfene Pakete

# logheaza ce pica (rate-limited ca sa nu inunde)
sudo nft add rule inet filter input limit rate 5/minute log prefix \"nft-drop \" 
sudo journalctl -k -g nft-drop --no-pager | tail

7. Pruefen

sudo nft list ruleset
sudo nft list set inet filter blocklist
sudo systemctl status nftables --no-pager

NAT und Port-Forward

Ist der Server zugleich Gateway, fuegen Sie eine NAT-Tabelle hinzu: Masquerade, um das Internet ins LAN zu teilen, und DNAT, um einen oeffentlichen Port an einen internen Host weiterzuleiten.

table ip nat {
  chain postrouting {
    type nat hook postrouting priority 100;
    oif "eth0" masquerade          # partajare internet catre LAN
  }
  chain prerouting {
    type nat hook prerouting priority -100;
    iif "eth0" tcp dport 80 dnat to 10.0.0.5:8080   # port-forward
  }
}

Fazit

Sie haben nun eine nftables-Firewall mit Standard-Drop-Policy, persistent ueber Neustarts. HINWEIS: SSH vor dem Anwenden erlaubt lassen, um sich nicht auszusperren.

Lassen Sie uns über Ihr Projekt sprechen →