Installation und Konfiguration von nftables unter Linux

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.

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:

Installieren Sie nftables mit APT:

$ sudo apt install nftables -y

Fedora, CentOS und RHEL

Aktualisieren Sie den DNF-Paketindex:

Installieren Sie nftables mit DNF:

$ sudo dnf install -y nftables

Arch Linux

Installieren Sie nftables mit Pacman:

Befehls-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 nftables

Starten Sie den Dienst:

$ sudo systemctl start nftables

Überprüfen Sie den Status des Dienstes:

$ sudo systemctl status nftables

Beispielausgabe:

● 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:

Beispielausgabe:

table ip filter
table ip6 filter

Standardkonfigurationsdatei von nftables anzeigen:

Beispielinhalt:

#!/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_table

Eingangs-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 accept

Regeln 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 drop

Alle Regeln anzeigen:

Regeln in der Input-Chain auflisten:

$ sudo nft list chain inet my_table input

Beispielausgabe:

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 0

Wichtige Sicherheitsregeln implementieren

SSH (Port 22) erlauben:

$ sudo nft add rule inet my_table input tcp dport 22 accept

HTTP (Port 80) erlauben:

$ sudo nft add rule inet my_table input tcp dport 80 accept

HTTPS (Port 443) erlauben:

$ sudo nft add rule inet my_table input tcp dport 443 accept

Allen übrigen eingehenden Datenverkehr verwerfen:

$ sudo nft add rule inet my_table input ip daddr 0.0.0.0/0 counter drop

NAT und Portweiterleitung aktivieren

Bearbeiten Sie /etc/sysctl.conf, um IPv4-Forwarding zu aktivieren:

Änderungen anwenden:

NAT-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 masquerade

Regeln dauerhaft über Neustarts speichern

Aktuelle Regeln in die Konfiguration sichern:

$ sudo nft list ruleset | sudo tee /etc/nftables.conf

Gespeicherte Regeln anwenden:

$ sudo nft -f /etc/nftables.conf

nftables-Dienst neu starten:

$ sudo systemctl restart nftables

Erweiterte Regelkonfiguration

SSH-Verbindungen begrenzen:

$ sudo nft add rule inet my_table input tcp dport 22 limit rate 3/minute accept

Portweiterleitung 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.10

Logging für verworfene Pakete aktivieren:

$ sudo nft 'add rule inet my_table input log prefix "nftables-drop: " drop'

Alle Regeln löschen:

Warnung: 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.

Quelle: vultr.com

Jetzt 200€ Guthaben sichern

Registrieren Sie sich jetzt in unserer ccloud³ und erhalten Sie 200€ Startguthaben für Ihr Projekt.

Das könnte Sie auch interessieren: