nftables ist ein modernes Framework zur Paketfilterung in Linux, das iptables ablöst. Es bietet einen einheitlichen und leistungsstarken Ansatz zur Verwaltung von Firewall-Regeln für mehrere Protokolle wie IPv4, IPv6 und ARP. Durch die Installation und Einrichtung von nftables profitieren Sie von einer besseren Performance und einer vereinfachten, konsolidierten Oberfläche im Vergleich zum mehrstufigen Tabellenansatz von iptables.
In dieser Anleitung wird beschrieben, wie Sie nftables unter Linux installieren und einrichten, grundlegende Firewall-Regeln konfigurieren, den Netzwerkverkehr steuern und gängige Sicherheitsrichtlinien umsetzen.
Voraussetzungen
- Zugriff auf ein Linux-basiertes System mit einem Nicht-Root-Benutzer mit sudo-Rechten.
- Grundkenntnisse zu Netzwerkprotokollen und der Verwaltung von Firewall-Regeln.
Passende Infrastruktur bei centron
Zum Ausprobieren braucht es keine eigene Hardware: ccloud³ VMs mit vollem Root-Zugriff gibt es ab 3,12 € im Monat, stundengenau abgerechnet und in Sekunden bereit. Cloud Server mieten →
nftables im Vergleich zu iptables
iptables war lange Zeit das Standard-Tool für Firewalls unter Linux, weist jedoch Schwächen auf, darunter eine komplizierte Regelstruktur, geringere Effizienz und die Notwendigkeit, mehrere Werkzeuge für unterschiedliche Protokolle (IPv4, IPv6, ARP usw.) zu nutzen. nftables wurde entwickelt, um diese Probleme zu lösen, und bietet mehr Funktionalität, bessere Leistung und einfachere Bedienung.
Die folgende Tabelle zeigt die wichtigsten Unterschiede in Funktionalität, Performance und Benutzerfreundlichkeit und verdeutlicht, warum nftables die bevorzugte Wahl ist.
| Funktion | iptables | nftables |
|---|---|---|
| Paketfilterung | Erfordert mehrere Tools für verschiedene Protokolle (iptables, ip6tables, arptables) | Verwendet einen einheitlichen Ansatz mit benannten Tabellen und Chains |
| Regelsyntax | Komplexe Chain-basierte Regeln mit vielen Einträgen | Moderne, tabellenbasierte Syntax für einfachere Regeldefinition |
| Performance | Regeln werden nacheinander verarbeitet, was bei vielen Regeln verlangsamt | Optimierte Auswertung reduziert den Verarbeitungsaufwand |
| Atomare Regeländerungen | Gesamte Regelsets müssen gelöscht und neu geladen werden | Unterstützt atomare Updates ohne Unterbrechung |
| Logging | Verwendet ältere LOG- und ULOG-Frameworks | Enthält integriertes Logging mit erweitertem Tracing (meta nftrace, log) |
| Verbindungsverfolgung | Benötigt externe conntrack-Module | Integriert Connection Tracking direkt |
| Multi-Protokoll-Unterstützung | Separate Befehle für jedes Protokoll | Einheitliche Befehle für alle Protokolle |
| Ressourcenverbrauch | Duplizierte Regeln führen zu höherem Speicherbedarf | Ein gemeinsames Regelset sorgt für effiziente Speichernutzung |
| Scripting & Automatisierung | Abhängig von Shell-Skripten und manueller Regelverwaltung | Unterstützt JSON-basierte Regeln und direkte Skripting-Optionen |
| Kompatibilität | Läuft auf allen Distributionen, jedoch mit veraltetem Design | Nativ auf modernen Systemen mit iptables-Kompatibilität |
Installation von nftables unter Linux
Befolgen Sie die nachstehenden Anweisungen entsprechend Ihrer Linux-Distribution.
Ubuntu und Debian
Aktualisieren Sie die Paketliste:
$ sudo apt updateInstallieren Sie nftables mit APT:
$ sudo apt install nftables -yFedora, CentOS und RHEL
Aktualisieren Sie den DNF-Paketindex:
$ sudo dnf updateInstallieren Sie nftables mit DNF:
$ sudo dnf install -y nftablesArch Linux
Installieren Sie nftables mit Pacman:
$ sudo pacman -S nftablesBefehls-Syntax von nft
Die grundlegende Syntax lautet:
nft [ -nNscaeSupyjtT ] [ -I Verzeichnis ] [ -f Dateiname | -i | Befehl ... ]
- -n: Zeigt Regelnummern an.
- -N: Detaillierte Regelausgabe.
- -s: Zeigt Statistiken.
- -c: Listet Chain-Namen auf.
- -a: Zeigt Adressfamilie und Protokoll.
- -e: Erweiterte Regeldetails.
- -S: Gibt das gesamte Regelwerk aus.
- -u: Aktiviert den Update-Modus.
- -p: Ausgabe im parsbaren Format.
- -y: Detaillierte Objekttypen anzeigen.
- -j: Ausgabe im JSON-Format.
- -t: Ausgabe im Tabellenformat.
- -T: Zeigt tokenisierte Ausgabe.
- -I Verzeichnis: Konfigurationsverzeichnis angeben.
- -f Dateiname: Regelwerk aus Datei laden.
- -i: Interaktiver Modus.
- Befehl ...: Argumente zur Verwaltung von nftables-Regeln.
Verwaltung des nftables-Systemdienstes
Der nftables-Dienst verwaltet Ihre Firewall-Regeln und stellt sicher, dass sie nach Neustarts bestehen bleiben. So aktivieren und starten Sie den Dienst:
Aktivieren Sie den Dienst beim Booten:
$ sudo systemctl enable nftablesStarten Sie den Dienst:
$ sudo systemctl start nftablesÜberprüfen Sie den Status des Dienstes:
$ sudo systemctl status nftablesBeispielausgabe:
● nftables.service - Netfilter Tables
Loaded: loaded (/usr/lib/systemd/system/nftables.service; enabled; preset: disabled)
Active: active (exited) since Mon 2025-03-31 17:52:35 UTC; 5s ago
Docs: man:nft(8)
Process: 1838 ExecStart=/sbin/nft -f /etc/sysconfig/nftables.conf (code=exited, status=0/SUCCESS)
Main PID: 1838 (code=exited, status=0/SUCCESS)
CPU: 11ms
Mar 31 17:52:35 nftables-03 systemd[1]: Starting Netfilter Tables...
Mar 31 17:52:35 nftables-03 systemd[1]: Finished Netfilter Tables.Tabellen, Chains und Richtlinien in nftables
In nftables werden Regeln in Tabellen gruppiert, die Chains enthalten, welche festlegen, wie der Datenverkehr verarbeitet wird. Jede Chain ist einem Hook (INPUT, OUTPUT, FORWARD) zugeordnet, der bestimmt, wann sie ausgeführt wird. Zusätzlich besitzen Chains Richtlinien, die festlegen, welche Standardaktion erfolgt, wenn kein Paket einer Regel entspricht.
nftables unterstützt mehrere Adressfamilien für unterschiedliche Netzwerkprotokolle:
- inet: Einheitlich für IPv4 und IPv6.
- ip: Nur IPv4-Filterung.
- ip6: Nur IPv6-Filterung.
- arp: Filterung von ARP-Paketen.
- bridge: Paketfilterung auf Ethernet-Bridges.
- netdev: Filterung auf Ebene der Netzwerkschnittstelle.
Chain Hooks
- input: Steuert Pakete, die an die lokale Maschine gerichtet sind.
- output: Verwaltet Pakete, die die Maschine verlassen.
- forward: Behandelt Pakete, die durch die Maschine weitergeleitet werden.
Richtlinien
Richtlinien legen fest, welche Standardaktion erfolgt, wenn keine Regel zutrifft:
- policy accept: Erlaubt allen nicht übereinstimmenden Datenverkehr (praktisch für Tests).
- policy drop: Verwirft nicht passende Pakete (sicher, üblich im Produktivbetrieb).
- policy reject: Sendet eine Zurückweisung (zeigt die Existenz des Servers an).
Warnung: Verwenden Sie accept nicht als Standardrichtlinie im Produktivbetrieb, da dadurch sämtlicher Datenverkehr zugelassen wird, sofern er nicht explizit blockiert wird.
Standardkonfiguration von nftables verwalten
Vorhandene nftables-Tabellen anzeigen:
$ sudo nft list tablesBeispielausgabe:
table ip filter
table ip6 filterStandardkonfigurationsdatei von nftables anzeigen:
$ cat /etc/nftables.confBeispielinhalt:
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain input {
type filter hook input priority 0; policy accept;
}
chain forward {
type filter hook forward priority 0; policy accept;
}
chain output {
type filter hook output priority 0; policy accept;
}
}Grundlegende nftables-Firewall-Regeln konfigurieren
Initiale Tabelle und Chains erstellen
Erstellen Sie eine Tabelle für IPv4- und IPv6-Datenverkehr:
$ sudo nft add table inet my_tableEingangs-Chain mit Standardrichtlinie accept hinzufügen:
$ sudo nft add chain inet my_table input { type filter hook input priority 0 \; }Forward-Chain mit Standardrichtlinie accept hinzufügen:
$ sudo nft add chain inet my_table forward { type filter hook forward priority 0\; }Bestehende Verbindungen erlauben:
$ sudo nft add rule inet my_table input ct state established,related acceptRegeln hinzufügen, anzeigen und löschen
Eine bestimmte IP-Adresse blockieren:
$ sudo nft add rule inet my_table input ip saddr 192.0.2.10 dropAlle Regeln anzeigen:
$ sudo nft list rulesetRegeln in der Input-Chain auflisten:
$ sudo nft list chain inet my_table inputBeispielausgabe:
table inet my_table {
chain input {
type filter hook input priority filter; policy accept;
ct state established,related accept
ip saddr 192.0.2.10 drop
}
}Regel über Handle-Nummer löschen:
$ sudo nft delete rule inet my_table input handle 0Wichtige Sicherheitsregeln implementieren
SSH (Port 22) erlauben:
$ sudo nft add rule inet my_table input tcp dport 22 acceptHTTP (Port 80) erlauben:
$ sudo nft add rule inet my_table input tcp dport 80 acceptHTTPS (Port 443) erlauben:
$ sudo nft add rule inet my_table input tcp dport 443 acceptAllen übrigen eingehenden Datenverkehr verwerfen:
$ sudo nft add rule inet my_table input ip daddr 0.0.0.0/0 counter dropNAT und Portweiterleitung aktivieren
Bearbeiten Sie /etc/sysctl.conf, um IPv4-Forwarding zu aktivieren:
net.ipv4.ip_forward=1Änderungen anwenden:
$ sudo sysctl -pNAT-Tabelle und Postrouting-Chain erstellen:
$ sudo nft add table nat
$ sudo nft add chain nat postrouting { type nat hook postrouting priority 100 \; }Masquerading-Regel hinzufügen:
$ sudo nft add rule nat postrouting ip saddr 192.0.2.0/24 oif enp1s0 masqueradeRegeln dauerhaft über Neustarts speichern
Aktuelle Regeln in die Konfiguration sichern:
$ sudo nft list ruleset | sudo tee /etc/nftables.confGespeicherte Regeln anwenden:
$ sudo nft -f /etc/nftables.confnftables-Dienst neu starten:
$ sudo systemctl restart nftablesErweiterte Regelkonfiguration
SSH-Verbindungen begrenzen:
$ sudo nft add rule inet my_table input tcp dport 22 limit rate 3/minute acceptPortweiterleitung einrichten:
$ sudo nft add chain ip nat prerouting { type nat hook prerouting priority 0 \; }
$ sudo nft add rule nat prerouting tcp dport 80 dnat to 192.0.2.10Logging für verworfene Pakete aktivieren:
$ sudo nft 'add rule inet my_table input log prefix "nftables-drop: " drop'Alle Regeln löschen:
$ sudo nft flush rulesetWarnung: Durch das Leeren werden sämtliche Regeln entfernt und die Firewall wird zurückgesetzt.
Fazit
Sie haben nftables unter Linux installiert und konfiguriert, Tabellen erstellt, Richtlinien gesetzt und Regeln verwaltet. nftables modernisiert die Paketfilterung durch die einheitliche Behandlung von IPv4/IPv6, atomare Updates und eine höhere Leistung. Mit integriertem Connection Tracking und Logging wird die Verwaltung der Netzwerksicherheit erheblich vereinfacht. Weitere Details und fortgeschrittene Konfigurationen finden Sie im offiziellen nftables-Wiki.
Testen Sie Ihr Setup auf ccloud³
Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.