Sicherheit

Wie können wir helfen?

Anleitungen und technische Dokumentation für Ihren Dedicated Server oder VPS von Server4You.

nftables-Konfiguration & Sicherheit

Diese Anleitung zeigt, wie Sie mit nftables, dem Nachfolger von iptables, eine Default-Deny-Firewall unter Debian, Ubuntu, AlmaLinux oder Rocky Linux einrichten. Sie behandelt eine vollständige /etc/nftables.conf, das Öffnen von Ports, Rate-Limiting und das dauerhafte Speichern der Regeln.

iptables oder nftables? Auf aktuellen Distributionen wie Debian 13, Ubuntu 24.04, AlmaLinux und Rocky Linux ist nftables der 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 →

nftables vs. iptables — Die wichtigsten Unterschiede

Merkmaliptablesnftables
WerkzeugeSeparate 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 (AlmaLinux/Rocky Linux)
dnf install nftables systemctl disable --now firewalld systemctl enable --now nftables

Falls noch iptables-Regeln aktiv sind, setzen Sie vorher die Policies zurück und leeren Sie die Regeln, um Konflikte und Aussperrungen zu vermeiden:

Bestehende iptables-Regeln leeren (optional)
iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT 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 (sauberer Start)
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

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 (insgesamt, nicht pro IP). Ersetzen Sie in der input-Chain Ihrer Konfigurationsdatei die Zeile tcp dport 22 accept durch diese beiden Zeilen:

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. limit muss vor log stehen, sonst wird jedes Paket protokolliert:

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

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, und ergänzen Sie nach dem Export wieder flush ruleset als erste Zeile. Unter AlmaLinux und Rocky Linux lädt der Dienst stattdessen /etc/sysconfig/nftables.conf — speichern Sie Ihre Regeln dort oder binden Sie Ihre Datei dort per include ein.

Weiterführende Dokumentation

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