Warum nftables?
Viele Distributionen setzen intern bereits auf nftables, auch wenn das Kommando iptables noch vorhanden ist. Mittelfristig gilt: Neue Firewall-Regeln sollten auf nftables basieren. In diesem Artikel schauen wir uns an, was sich ändert, wie die Syntax funktioniert und wie du bestehende iptables-Regeln migrierst.
iptables vs. nftables – Kurzüberblick
- iptables: klassische, tabellenbasierte Firewall, lange Zeit Standard
- nftables: moderner Nachfolger, einheitliche Syntax für IPv4/IPv6, performanter, flexiblere Sets und Maps
- Viele Distros nutzen bereits iptables-wrapper, die intern nftables aufrufen
Prüfen, ob nftables bereits aktiv ist
sudo nft list ruleset
sudo systemctl status nftablesWenn du eine Ausgabe bei nft list ruleset erhältst, ist bereits ein Regelwerk aktiv. Mit systemctl siehst du, ob der Dienst läuft.
nftables Grundkonzept
Die wichtigsten Objekte:
- Table – z. B.
inet filter - Chain – z. B.
input,forward,output - Rule – konkrete Regel
Beispiel: Minimaler nftables-Regelsatz
table inet filter {
chain input {
type filter hook input priority 0;
policy drop;
# Bestehende Verbindungen erlauben
ct state established,related accept
# Loopback erlauben
iif lo accept
# SSH erlauben
tcp dport 22 accept
# Ping erlauben (optional)
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;
}
}Aktivieren des Regelsatzes
Speichere den obigen Inhalt z. B. nach /etc/nftables.conf und lade ihn mit:
sudo nft -f /etc/nftables.conf
sudo systemctl enable --now nftablesiptables-Regeln in nftables übernehmen
Viele Systeme bieten ein Kompatibilitätswerkzeug, das bestehende iptables-Regeln in ein nftables-Regelwerk übersetzt.
iptables-Regeln anzeigen
sudo iptables -S
sudo ip6tables -SMigration (Konzeptuell)
Typische iptables-Regel:
iptables -A INPUT -p tcp --dport 22 -j ACCEPTentspricht in nftables grob:
add rule inet filter input tcp dport 22 acceptStatt vieler Einzelregeln kannst du in nftables z. B. Ports in Sets organisieren:
define ALLOWED_SSH = { 22, 2222 }
table inet filter {
chain input {
type filter hook input priority 0;
policy drop;
ct state established,related accept
iif lo accept
tcp dport $ALLOWED_SSH accept
}
}Schrittweise Migration in der Praxis
- Bestehende iptables-Regeln dokumentieren (
iptables -S) - Neuen nftables-Regelsatz in einer separaten Datei entwerfen
- Regelsatz testweise laden (
nft -f) – bei SSH-Tests immer eine zweite Session offen lassen - nftables-Dienst aktivieren und Autostart konfigurieren
- iptables-Regeln entfernen bzw. iptables-Dienste deaktivieren
Fehlerquellen und Tipps
- Nie ohne Rückfalloption testen: Immer eine zweite SSH-Session offen lassen.
- Log-Regeln ergänzen (
log prefix "nftables-drop: "), um Probleme schneller zu finden. - Konfiguration versionieren (Git-Repository für
/etc/nftables.conf).
Fazit
nftables ist der moderne Standard für Firewall-Regeln unter Linux. Mit einem strukturierten Migrationsplan kannst du bestehende iptables-Konfigurationen sauber migrieren und profitierst von einer einheitlichen, flexiblen und zukunftssicheren Firewall-Syntax.
Kommentare