nftables Konfiguration & Sicherheit

nftables ist der moderne Nachfolger von iptables und seit Linux Kernel 3.13 verfügbar. Diese Anleitung zeigt, wie Sie eine sichere Default-Deny Firewall mit nftables einrichten.

iptables oder nftables? Auf modernen Distributionen (Debian 10+, Ubuntu 20.04+, RHEL 8+) ist nftables der empfohlene Standard. Wenn Sie einen bestehenden Server mit iptables betreiben, können Sie bei iptables bleiben — für neue Server empfehlen wir nftables. Zur iptables-Anleitung →

Reihenfolge ist kritisch! Aktivieren Sie die Default-Deny-Policy erst, nachdem Sie SSH explizit erlaubt haben — sonst sperren Sie sich sofort aus. Halten Sie immer einen Konsolenzugang über das PowerPanel bereit.

nftables vs. iptables — Die wichtigsten Unterschiede

Merkmaliptablesnftables
SyntaxSeparate Tools (ip6tables, arptables…)Ein einheitliches Tool für alle Protokolle
KonfigurationZeilenbasierte BefehleStrukturierte Regeldateien (lesbar wie Code)
PerformanceGutBesser — durch optimierten Kernel-Bytecode
ZukunftLegacy, wird nicht mehr aktiv entwickeltAktiv entwickelt, Standardtool auf neuen Distros

1. Installation & Vorbereitung

Auf den meisten modernen Distributionen ist nftables bereits vorinstalliert. Prüfen und installieren Sie es bei Bedarf:

Installation prüfen / nachinstallieren (Debian/Ubuntu)
apt update && apt install nftables systemctl enable --now nftables
Installation prüfen / nachinstallieren (CentOS/RHEL)
dnf install nftables systemctl enable --now nftables

Falls noch iptables-Regeln aktiv sind, sollten diese vorher geleert werden um Konflikte zu vermeiden:

Bestehende iptables-Regeln leeren (optional)
iptables -F iptables -X

2. Grundlegende Regelstruktur

nftables verwendet Tables (Tabellen) und Chains (Ketten). Eine Table fasst mehrere Chains zusammen. Im Gegensatz zu iptables müssen Tables und Chains erst explizit erstellt werden.

Bestehende Konfiguration anzeigen
nft list ruleset
Alle Regeln löschen (Neustart)
nft flush ruleset

3. Default-Deny Firewall einrichten

Die empfohlene Methode ist das Erstellen einer vollständigen Konfigurationsdatei, die dann geladen wird. Erstellen oder bearbeiten Sie die Datei /etc/nftables.conf:

/etc/nftables.conf
#!/usr/sbin/nft -f flush ruleset table inet filter { chain input { type filter hook input priority 0; policy drop; # Loopback erlauben iif lo accept # Etablierte Verbindungen erlauben ct state established,related accept # Ungültige Pakete verwerfen ct state invalid drop # SSH erlauben (Port 22) tcp dport 22 accept # HTTP und HTTPS erlauben tcp dport { 80, 443 } accept # ICMP (Ping) erlauben ip protocol icmp accept ip6 nexthdr icmpv6 accept } chain forward { type filter hook forward priority 0; policy drop; } chain output { type filter hook output priority 0; policy accept; } }

Laden Sie die Konfiguration anschließend:

Konfiguration laden
nft -f /etc/nftables.conf

SSH-Port prüfen! Falls Sie SSH auf einem anderen Port als 22 betreiben, passen Sie den Wert in der Konfiguration entsprechend an, bevor Sie die Regeln laden.

4. Einzelne Ports gezielt öffnen

Regeln können entweder direkt in die Konfigurationsdatei eingetragen oder per Befehl hinzugefügt werden:

Weiteren Port öffnen (z. B. für ein Spiel)

Port zur laufenden Konfiguration hinzufügen
nft add rule inet filter input tcp dport 25565 accept

Datenbankzugriff auf eine IP beschränken

Kritische Ports wie MySQL sollten nur für bekannte IP-Adressen freigegeben werden:

MySQL nur für eine IP freigeben
nft add rule inet filter input ip saddr 192.0.2.5 tcp dport 3306 accept

UDP-Port öffnen (z. B. für einen Game Server)

UDP-Port freigeben
nft add rule inet filter input udp dport 27015 accept

5. Rate-Limiting & Schutzmechanismen

SSH Brute-Force-Schutz

Begrenzt neue SSH-Verbindungsversuche auf 5 pro Minute pro IP — trägt die Regel direkt in die Konfigurationsdatei ein:

SSH Rate-Limit
tcp dport 22 ct state new limit rate 5/minute accept tcp dport 22 ct state new drop

Ungültige Pakete verwerfen

Bereits in der Basiskonfiguration enthalten — blockiert Pakete die zu keiner bekannten Verbindung gehören:

Ungültige Pakete
ct state invalid drop

Logging verworfener Pakete

Fügen Sie diese Regel am Ende der input-Chain ein, direkt vor der impliziten DROP-Policy:

Logging aktivieren
log prefix "nftables dropped: " level warn limit rate 5/minute

6. Regeln prüfen & persistent speichern

Aktuelle Regeln anzeigen

Alle aktiven Regeln auflisten
nft list ruleset

Aktuelle Regeln in Datei speichern

Exportieren Sie die laufende Konfiguration direkt in die persistente Konfigurationsdatei:

Konfiguration sichern
nft list ruleset > /etc/nftables.conf

Dienst aktivieren (automatisch beim Booten laden)

nftables beim Start aktivieren
systemctl enable nftables systemctl restart nftables

Wenn der nftables-Dienst aktiviert ist, lädt er beim Booten automatisch /etc/nftables.conf. Stellen Sie sicher, dass Ihre Konfigurationsdatei stets aktuell ist, nachdem Sie Regeln per Befehl hinzugefügt haben.

Weiterführende Dokumentation

Für eine vollständige Referenz aller nftables-Optionen empfehlen wir die offizielle Dokumentation.