nftables-Regel-Generator
nftables-Regeln aus CSV generieren
Rule Definitions
nftables Configuration
Enter rules to generate nftables configuration
Der nftables-Regel-Generator erstellt moderne Linux-Firewall-Regeln aus strukturierter CSV-Eingabe unter Verwendung der nftables-Syntax. Geben Sie Regeln als CSV-Zeilen mit den Spalten Tabellenfamilie, Kette, Quelle, Ziel, Protokoll, Port und Aktion ein und erhalten Sie entweder einzelne nft-Befehle oder eine vollstaendige Regelsatzdatei, die atomar geladen werden kann -- der empfohlene Ansatz fuer aktuelle Linux-Distributionen einschliesslich Debian 10+, RHEL 8+ und Ubuntu 20.04+.
nftables verstehen
Wenn Sie eine Firewall auf einer modernen Linux-Distribution einrichten, ist nftables das Tool, das Sie verwenden sollten. Es hat iptables als Standard-Paketfilter-Framework ab dem Linux-Kernel 3.13 abgeloest, und alle grossen Distributionen liefern jetzt nftables als Standard-Backend aus. Debian, Ubuntu, RHEL, Fedora und Arch Linux verwenden nftables im Hintergrund, selbst wenn Sie iptables-Befehle ausfuehren (die iptables-nft-Kompatibilitaetsschicht uebersetzt sie automatisch).
Der wichtigste Vorteil von nftables gegenueber iptables ist das atomare Laden von Regelsaetzen. Bei iptables ist jede Regel ein separater Befehl, der den aktiven Kernel-Zustand aendert -- wenn Ihr Skript auf halbem Weg fehlschlaegt, haben Sie einen unvollstaendigen Regelsatz, der moeglicherweise Sicherheitsluecken aufweist. nftables ermoeglicht es Ihnen, Ihre gesamte Konfiguration in einer einzigen Datei zu schreiben und in einer Operation mit nft -f zu laden. Wenn eine Regel einen Syntaxfehler hat, schlaegt das gesamte Laden fehl und nichts aendert sich. Dieses atomare Verhalten beseitigt das Problem der "halb geladenen Firewall", das bei iptables zu echten Sicherheitsvorfaellen gefuehrt hat.
Die zweite grosse Verbesserung ist eine sauberere Syntax fuer gaengige Muster. In iptables erfordert das Matching mehrerer Ports die umstaendliche Erweiterung -m multiport --dports 80,443,8080. In nftables schreiben Sie tcp dport { 80, 443, 8080 } -- ein einfaches Set, das sich wie ein natuerlicher Ausdruck liest. Die inet-Familie ermoeglicht es, eine Regel zu schreiben, die sowohl fuer IPv4 als auch fuer IPv6 gilt, anstatt separate iptables- und ip6tables-Konfigurationen zu pflegen. Benannte Sets lassen Sie eine Gruppe von Adressen einmal definieren und in mehreren Regeln referenzieren. Diese Funktionen reduzieren die Konfigurationskomplexitaet und machen Firewall-Regeln bei Audits leichter lesbar.
So generieren Sie nftables-Regeln aus CSV
- Bereiten Sie Ihre Regeldaten im CSV-Format mit den Spalten vor: Tabellenfamilie, Kette, Quelle, Ziel, Protokoll, Port(s) und Aktion.
- Fuegen Sie die CSV in den Generator ein oder laden Sie sie hoch.
- Waehlen Sie das Ausgabeformat: einzelne
nft-Befehle oder eine vollstaendige Regelsatzdatei. - Der Generator erzeugt nftables-Syntax unter Nutzung von Funktionen wie Sets, Maps und der
inet-Familie. - Kopieren Sie die Ausgabe und laden Sie sie mit
nft -f ruleset.nftfuer atomare Anwendung.
CSV-Eingabeformat und generierte Regeln
CSV-Eingabe
family,chain,source,destination,protocol,port,action
inet,input,203.0.113.0/24,,tcp,22,drop
inet,input,10.0.0.0/8,,tcp,443,accept
inet,input,,,tcp,80,accept
inet,output,,198.51.100.10,tcp,3306,accept
inet,forward,192.168.1.0/24,10.0.0.0/8,tcp,8080,accept
Generierte Regelsatzdatei
table inet filter {
chain input {
type filter hook input priority 0; policy drop;
ip saddr 203.0.113.0/24 tcp dport 22 drop
ip saddr 10.0.0.0/8 tcp dport 443 accept
tcp dport 80 accept
}
chain output {
type filter hook output priority 0; policy accept;
ip daddr 198.51.100.10 tcp dport 3306 accept
}
chain forward {
type filter hook forward priority 0; policy drop;
ip saddr 192.168.1.0/24 ip daddr 10.0.0.0/8 tcp dport 8080 accept
}
}
Generierte Einzelbefehle
nft add table inet filter
nft add chain inet filter input '{ type filter hook input priority 0; policy drop; }'
nft add rule inet filter input ip saddr 203.0.113.0/24 tcp dport 22 drop
nft add rule inet filter input ip saddr 10.0.0.0/8 tcp dport 443 accept
nft add rule inet filter input tcp dport 80 accept
Vom Generator verwendete nftables-Funktionen
| Funktion | nftables-Syntax | iptables-Aequivalent |
|---|---|---|
| Mehrere Ports | tcp dport { 80, 443, 8080 } | -m multiport --dports 80,443,8080 |
| Port-Bereich | tcp dport 8000-8080 | --dport 8000:8080 |
| Mehrere Quellen | ip saddr { 10.0.0.0/8, 172.16.0.0/12 } | Zwei separate Regeln |
| Dual-Stack (inet) | table inet filter | Separate iptables- und ip6tables-Regeln |
| Benannte Sets | set blocklist { type ipv4_addr; } | Kein Aequivalent |
| Protokollierung | log prefix "SSH: " drop | Separate -j LOG- und -j DROP-Regeln |
Wann den nftables-Regel-Generator verwenden
- Neue Server-Bereitstellungen -- Moderne Distributionen liefern nftables als Standard; beginnen Sie von Anfang an mit nftables-Syntax.
- iptables-Migration -- Bestehende iptables-Regeln beim Upgrade auf Debian 10+, RHEL 8+ oder Ubuntu 20.04+ in nftables konvertieren.
- Atomares Regelsatz-Laden -- Anders als iptables (Regel fuer Regel) kann nftables einen kompletten Regelsatz atomar mit
nft -fladen und eliminiert Luecken bei Konfigurationsaenderungen. - Infrastructure as Code -- nftables-Regelsaetze aus CSV-/Tabellenkalkulationsdaten fuer versionskontrollierte, wiederholbare Firewall-Konfigurationen generieren.
- Dual-Stack-Vereinfachung -- Die
inet-Familie verwenden, um eine Regel zu schreiben, die sowohl fuer IPv4 als auch fuer IPv6 gilt, anstatt separate Regelsaetze zu pflegen.
Wie sich nftables von iptables unterscheidet
Tabellenfamilien
nftables organisiert Regeln nach Familien, die bestimmen, welchen Datenverkehr die Tabelle verarbeitet:
inet-- Verarbeitet sowohl IPv4 als auch IPv6 (haeufigste Wahl)ip-- Nur IPv4ip6-- Nur IPv6arp-- ARP-Protokollbridge-- Filterung auf Bridge-Ebene
Sets und Maps
nftables unterstuetzt anonyme Inline-Sets und benannte wiederverwendbare Sets:
# Anonymes Set -- mehrere Werte in einer Regel
tcp dport { 22, 80, 443 } accept
# Benanntes Set -- wiederverwendbar ueber Regeln hinweg
set trusted_nets {
type ipv4_addr
flags interval
elements = { 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 }
}
ip saddr @trusted_nets accept
Atomares Laden
Der Generator kann eine vollstaendige Regelsatzdatei erzeugen, die die gesamte Konfiguration in einer einzigen Operation ersetzt:
nft -f /etc/nftables.conf # Gesamten Regelsatz atomar laden
nft list ruleset # Aktive Regeln ueberpruefen
Praktische Hinweise zur nftables-Konfiguration
Wenn Sie von iptables migrieren, widerstehen Sie der Versuchung, Regeln einfach eins zu eins zu uebersetzen. nftables bietet Funktionen, mit denen Sie dieselbe Richtlinie mit deutlich weniger Regeln ausdruecken koennen. Nutzen Sie die Gelegenheit zur Konsolidierung: Fassen Sie mehrere portspezifische Regeln zu Set-basierten Regeln zusammen, kombinieren Sie IPv4- und IPv6-Regeln mit der inet-Familie und ersetzen Sie Ketten von LOG-dann-DROP durch einzelne log prefix "..." drop-Anweisungen. Eine Migration ist der perfekte Zeitpunkt, um Ihre Firewall-Richtlinie zu pruefen und zu vereinfachen, nicht nur sie zu transliterieren.
Fuer Produktionsserver speichern Sie Ihre nftables-Konfiguration immer in /etc/nftables.conf und aktivieren Sie den nftables-Systemd-Dienst mit systemctl enable nftables. Dies stellt sicher, dass Ihre Regeln beim Booten geladen werden. Anders als bei iptables, wo Sie einen separaten Persistenzmechanismus benoetigen (iptables-persistent auf Debian, iptables-services auf RHEL), ist die nftables-Persistenz in die Standard-Service-Unit-Datei integriert. Nach Aenderungen fuehren Sie nft -c -f /etc/nftables.conf aus, um die Syntax zu pruefen, ohne sie anzuwenden, und laden dann mit systemctl restart nftables neu.
Beim Debuggen von nftables-Regeln ist der Befehl nft list ruleset Ihr bester Freund. Er zeigt die vollstaendige aktive Konfiguration genau so, wie der Kernel sie sieht, einschliesslich Regelzaehlern, die Ihnen sagen, wie viele Pakete jede Regel zugeordnet hat. Wenn ein Regelzaehler auf Null bleibt, ist entweder kein passender Datenverkehr angekommen, oder eine Regel weiter oben in der Kette faengt den Verkehr zuerst ab. Verwenden Sie nft monitor fuer Echtzeit-Protokollierung von Regelzuordnungen, was bei der Fehlersuche, warum bestimmter Datenverkehr verworfen wird, unschaetzbar ist.
Haeufig gestellte Fragen
Kann ich iptables und nftables gleichzeitig ausfuehren?
Technisch verwenden beide dasselbe Kernel-Netfilter-Framework, aber der gleichzeitige Betrieb beider verursacht Konflikte. Die iptables-nft-Kompatibilitaetsschicht uebersetzt iptables-Befehle intern in nftables, aber das Mischen nativer nftables-Regeln mit iptables-Befehlen wird nicht empfohlen.
Wie mache ich nftables-Regeln ueber Neustarts hinweg persistent?
Speichern Sie Ihren Regelsatz in /etc/nftables.conf und aktivieren Sie den nftables-Systemd-Dienst: systemctl enable nftables. Der Dienst laedt die Regelsatzdatei beim Booten.
Was ist die inet-Familie und sollte ich sie immer verwenden?
Die inet-Familie verarbeitet sowohl IPv4- als auch IPv6-Datenverkehr in einer einzigen Tabelle und macht doppelte Regeln ueberfluessig. Verwenden Sie inet fuer die meisten Konfigurationen. Verwenden Sie ip oder ip6 nur, wenn Sie adressfamilienspezifisches Verhalten benoetigen.
Wie migriere ich von iptables zu nftables?
Verwenden Sie den Befehl iptables-save, um Ihre aktuellen Regeln zu exportieren, und lassen Sie sie dann durch iptables-restore-translate (Teil des iptables-nft-Pakets) laufen, um ein nftables-Aequivalent zu erhalten. Ueberpruefen Sie die Ausgabe sorgfaeltig -- die automatische Uebersetzung erzeugt funktionale, aber nicht idiomatische nftables-Regeln. Verwenden Sie diesen Generator, um saubere nftables-Regeln von Grund auf zu erstellen, wann immer moeglich.
Was ist der Leistungsunterschied zwischen iptables und nftables? nftables verwendet eine optimierte virtuelle Maschine im Kernel fuer die Regelauswertung, die im Allgemeinen schneller als iptables fuer komplexe Regelsaetze ist. Die Verbesserung ist am deutlichsten bei grossen Regelsaetzen (Hunderte von Regeln) und Set-basiertem Matching. Fuer einfache Konfigurationen mit einem Dutzend Regeln ist der Unterschied vernachlaessigbar.
Kann ich nftables auf aelteren Kerneln verwenden? nftables erfordert Linux-Kernel 3.13 oder spaeter. Grundlegende Funktionen funktionieren ab 3.13, aber erweiterte Funktionen wie Maps und verkettete Sets erfordern 4.1+. Alle aktuellen LTS-Distributionen enthalten ausreichend aktuelle Kernel.
Verwandte Tools
- iptables-Regel-Generator - iptables-Regeln aus CSV fuer Legacy-Linux-Systeme generieren
- Regelkonflikt-Finder - Doppelte, ueberdeckte oder ueberlappende Firewall-Regeln finden
- Allowlist-Builder - Minimale CIDR-Allowlist aus IP-Liste erstellen
- Blocklist-Builder - Minimale CIDR-Blocklist aus IP-Liste erstellen
- Azure-NSG-Regel-Generator - Azure-NSG-Regeln aus CSV generieren