Zum Hauptinhalt springen

nftables vs iptables: Linux-Firewall-Einrichtung

Veröffentlicht am:
.
38 Minuten Lesezeit
.
Für die Englische Version

Firewalls sind die erste Sicherheitslinie zwischen Ihrem Linux-System und der Außenwelt. Firewalls sind im Grunde genommen Paketfilter. Sie betrachten den ein- und ausgehenden Netzwerkverkehr, vergleichen ihn mit bereits festgelegten Regeln und entscheiden dann, ob sie ihn durchlassen, blockieren oder verwerfen. Diese Filterung ist sowohl für Server als auch für Desktops wichtig, da sie sicherstellt, dass nur gültiger, erwarteter Datenverkehr zu Anwendungen gelangt und dass bösartige oder unbefugte Pakete blockiert werden.

Nicht nur ist eine Firewall auf Linux ein Dienstprogramm, sondern sie ist auch Teil des Kernel-Netzwerk-Stacks. Linux verfügt über eine sehr effiziente Verkehrssteuerung, die auf allem von einem persönlichen Laptop bis hin zu einem Hochleistungs-Rechenzentrumsrouter funktioniert. Das liegt daran, dass die Paketfilterung direkt in den Kernel integriert ist. Eine korrekt eingerichtete Firewall ist für Systemadministratoren keine Option; sie ist notwendig, um Dienste privat, sicher und verfügbar zu halten.

Früher verwendete Linux iptables, ein Benutzerspace-Tool, das mit dem Netfilter-Framework des Kernels arbeitet. Fast zwanzig Jahre lang war iptables die Norm. Es betrieb alles, von persönlichen Firewalls bis hin zu Unternehmens-Gateways. Aber mit der Zeit wurde seine Syntax schwer zu benutzen, es war schwierig, den Überblick über die gleichen Regeln zu behalten, und es hatte Schwierigkeiten, in großen Situationen zu wachsen.

Der Linux-Kernel hat nftables hinzugefügt, um diese Probleme zu beheben. Nftables ist der aktuelle Ersatz für IPv4, IPv6, ARP und andere Protokolle. Es stellt sie alle unter ein Regelwerk. Es erleichtert das Schreiben von Regeln, reduziert die Duplizierung und fügt starke Konzepte wie Mengen und Karten hinzu. Dies ermöglicht es Administratoren, große Sammlungen von Regeln auf eine intelligente und effiziente Weise zu verwalten. Zusätzlich zur besseren Lesbarkeit beschleunigt nftables die Dinge erheblich, indem es ändert, wie Regeln überprüft und angewendet werden.

Gleichzeitig pushen viele Distributionen auch firewalld, das ein Front-End-Manager ist, der die Verwendung von iptables oder nftables erleichtert. Administratoren können Zonen (Vertrauensstufen für Netzwerke) und Dienste (vordefinierte Port-/Protokollkombinationen) verwenden, um Richtlinien festzulegen, anstatt Low-Level-Regeln zu entwickeln. Dies ist sehr hilfreich für diejenigen, die nicht sehr gut mit Computern umgehen können oder für automatisierte Bereitstellungssysteme, da es die Konfiguration erleichtert und gleichzeitig die Netfilter-Engine verwendet.

Der Wechsel von iptables zu nftables war nicht nur Show; er sollte langjährige Probleme mit der Architektur beheben. Mit iptables wurden Regeln nacheinander implementiert, was die Effizienz verringerte. Administratoren kopierten auch oft Regeln von IPv4- zu IPv6-Tabellen.

Es war einfach, Fehler zu machen, wenn man große, komplizierte Regelwerke im Auge behalten musste.

nftables behebt diese Probleme durch:

  • Verwendung der gleichen Syntax für alle Protokolle.

  • Ermöglichen atomarer Updates, die das gesamte Regelwerk in einer Aktion ersetzen (Verhinderung teilweiser Updates, die den Verkehr unterbrechen könnten).

  • Es einfacher machen, zu skalieren, indem Tausende von Regeln ohne großen Leistungsabfall verarbeitet werden können.

  • Zähler und Debugging-Tools bereitstellen, um die Dinge leichter sichtbar zu machen.

Starten Sie noch heute kostenlos mit Zenarmor

Große Änderungen über iptables

Einige der wichtigsten Vorteile von nftables sind:

  • Effizienz: Die optimierte Auswertung macht es schneller, Pakete zuzuordnen.
  • Skalierbarkeit: Sets und Maps ermöglichen es Ihnen, mit einer Regel mehrere Adressen oder Ports zu verwalten.
  • Einfachere Syntax: Ein Regelwerk für sowohl IPv4 als auch IPv6 reduziert die Wiederholung und macht die Dinge einfacher.
  • Einheitliche Werkzeuge: Der nft-Befehl ersetzt mehrere andere Werkzeuge, wie iptables, ip6tables, arptables und ebtables.

firewalld: Dinge einfacher machen

Nicht alle Administratoren wollen oder müssen rohe Firewall-Regeln schreiben. Hier kommt firewalld ins Spiel. Als Richtlinienmanager:

  • Gruppiert Regeln in Kategorien wie "öffentlich," "intern" oder "dmz."
  • Richtet Dienste wie SSH, HTTP oder DNS ein, um automatisch die richtigen Ports zu öffnen.
  • Änderungen werden dynamisch angewendet, ohne aktuelle Verbindungen zu schließen.

Firewalld ist einfacher zu bedienen als iptables oder nftables zur Verwaltung von Linux-Firewalls, aber es verwendet sie dennoch im Hintergrund. Für fortgeschrittene Benutzer ist nftables immer noch die konfigurierbarste Option, aber firewalld erleichtert es mehr Menschen, Firewalls zu verwalten.

Was sind Linux-Firewalls?

Eine Linux-Firewall ist ein Sicherheitswerkzeug, das steuert, welcher Netzwerkverkehr in Ihr System ein- oder austreten oder hindurchgehen kann. Es funktioniert auf seiner grundlegendsten Ebene als Verkehrsfilter. Jedes Datenpaket, das versucht, Ihre Netzwerkschnittstellen zu durchlaufen, wird mit einer Reihe von bereits konfigurierten Regeln überprüft. Wenn es einer Erlauben-Regel entspricht, wird es durchgelassen; wenn es einer Verweigern-Regel entspricht, wird es blockiert oder lautlos verworfen.

Das mag vage erscheinen, aber in Wirklichkeit ist es einer der besten Schutzmaßnahmen, die Sie nutzen können. Firewalls schützen Sie sowohl vor offensichtlichen Angriffen als auch vor Diensten, von denen Sie nicht einmal wussten, dass sie betrieben werden und die versehentlich offengelegt werden könnten.

  • Kontrolle: Firewalls in Linux ermöglichen es Ihnen zu entscheiden, welcher Datenverkehr Dienste auf Ihrem Rechner erreichen darf, wie SSH und HTTP.

  • Isolation: Halten Sie vertrauenswürdige Netzwerke (wie Ihr Büro-LAN) von nicht vertrauenswürdigen Netzwerken (wie dem Internet) getrennt.

  • Durchsetzung: Stellen Sie sicher, dass Sicherheitsrichtlinien immer eingehalten werden, um den Bedürfnissen der Organisation oder des Gesetzes gerecht zu werden.

  • Sichtbarkeit: Behalten Sie alle versuchten Verbindungen im Auge und protokollieren Sie sie, um verdächtiges oder illegales Verhalten zu erkennen.

Wie Linux-Firewalls funktionieren

Das Netfilter-Framework, das Teil des Linux-Kernels ist, wird von Linux-Firewalls verwendet, um zu funktionieren. Wenn Pakete in Ihren Computer ein- oder ausgehen, stoppt Netfilter sie und überprüft sie anhand Ihrer Firewall-Regeln. Werkzeuge wie iptables (alt) oder nftables (neu) kümmern sich um diese Regeln.

Ketten sind kleinere Gruppen von Kontrollpunkten, die Pakete durchlaufen. Tabellen sind größere Gruppen von Ketten.

  • Tabellen sagen dem Computer, welche Art von Filterung er durchführen soll (Filterung, NAT, Paketmodifikation).

  • Chains sagen dem Paket, wohin es gehen soll (Eingang, Ausgang, Weiterleitung).

  • Regeln sind die genauen Anweisungen (erlauben, ablehnen, verweigern, protokollieren).

Sie können dies in Aktion sehen, indem Sie den folgenden Befehl ausführen:

sudo nft list ruleset

Dies zeigt alle Regeln an, die derzeit geladen sind, wie z.B. Filterung, NAT und benutzerdefinierte Chains.

Auf älteren Systemen, die noch iptables verwenden, ist das Äquivalent:

sudo iptables -L -v -n

Hier sehen Sie die Filtertabelle mit ihren Ketten und Zählern, die anzeigen, wie viele Pakete jeder Regel entsprechen. Nachdem Sie diese Befehle ausgeführt haben, können Sie die Ausgabe interpretieren, um Ihre Firewall-Position zu verstehen. Zum Beispiel, wenn die Standardrichtlinie der INPUT-Kette ACCEPT ist und es keine Regeln gibt, bedeutet das, dass Ihr System für eingehende Verbindungen weit offen ist.

Firewalls auf verschiedenen Systemtypen

  • Auf Servern: Sie begrenzen die Exponierung sensibler Dienste. Zum Beispiel könnte ein Webserver nur die Ports 80/443 zulassen und alles andere blockieren.

  • Auf Desktops/Laptops: Sie schützen persönliche Geräte beim Verbinden mit nicht vertrauenswürdigen Wi-Fi-Netzwerken, indem sie unerwünschte Verbindungen stillschweigend abweisen.

  • Auf Routern/Gateways: Sie setzen Grenzen zwischen internen (vertrauenswürdigen) und externen (nicht vertrauenswürdigen) Netzwerken durch.

Um dies zu veranschaulichen, lassen wir nur Webverkehr (HTTP/HTTPS) zu und blockieren alles andere mit nftables:

sudo nft add rule inet filter input tcp dport {80,443} accept
sudo nft add rule inet filter input drop

Mit nur zwei Zeilen stellt die Firewall sicher, dass nur Webverkehr akzeptiert wird. Jeder andere eingehende Datenverkehr wird abgelehnt, selbst wenn ein Dienst versehentlich läuft.

Werkzeuge zur Verwaltung von Linux-Firewalls

Es gibt drei Hauptwerkzeuge zur Verwaltung von Linux-Firewalls, die Sie kennenlernen werden:

  1. iptables – Das traditionelle Firewall-Verwaltungstool, weit verbreitet, aber ausführlich.

  2. nftables – Der moderne Ersatz, mit sauberer Syntax und besserer Skalierbarkeit.

  3. firewalld – Eine höherstufige Abstraktion, die iptables oder nftables im Hintergrund verwaltet und Regeln in Zonen und Dienste organisiert.

Zum Beispiel könnten Sie mit firewalld SSH wie folgt erlauben:

sudo firewall-cmd --zone=public --add-service=ssh --permanent
sudo firewall-cmd --reload

Das ist viel einfacher, als rohe nftables-Regeln zu schreiben, besonders für Anfänger oder in automatisierten Umgebungen. Linux-Firewalls sind Paketfilter im Herzen der Systemsicherheit. Sie entscheiden, was hereinkommt, was herausgeht und was für eine spätere Analyse protokolliert wird. Ob sie nun mit iptables, nftables oder firewalld verwaltet werden, sie spielen eine entscheidende Rolle beim Schutz von Linux-Systemen auf Servern, Desktops und Gateways.

Die wichtigste Erkenntnis: Ohne eine Firewall ist Ihr Linux-System auf der Netzwerkschicht wehrlos. Mit einer solchen können Sie strenge Richtlinien durchsetzen, Risiken minimieren und sowohl persönliche als auch Unternehmensumgebungen sicher halten.

Warum sind Linux-Firewalls wichtig?

Linux-Firewalls sind ein wesentlicher Bestandteil der Systemsicherheit. Sie setzen Sicherheitsrichtlinien durch, indem sie den ein- und ausgehenden Datenverkehr regulieren und sicherstellen, dass nur autorisierte Kommunikation erlaubt ist. Durch die Kontrolle, wie Pakete durch das System bewegt werden, minimieren Firewalls die Angriffsfläche, verhindern unbefugten Zugriff und tragen zu Compliance- und mehrschichtigen Verteidigungsstrategien bei.

Die Rolle von Firewalls in der Systemsicherheit

Im Herzen der Linux-Sicherheit fungieren Firewalls als Torwächter. Jedes Paket, das das System betritt oder verlässt, wird anhand der Firewall-Regeln bewertet. Ohne sie könnte jeder offene Dienst—selbst einer, an den Sie nicht mehr denken—zu einer Hintertür für Angreifer werden.

Zum Beispiel, betrachten Sie einen Webserver. Während Sie HTTP- und HTTPS-Verkehr zulassen müssen, möchten Sie möglicherweise den Zugriff auf SSH blockieren oder einschränken. Eine Firewall stellt sicher, dass diese Grenzen respektiert werden, wodurch das Risiko unbefugter Anmeldungen oder Datenexfiltration verringert wird.

# Allow only HTTP/HTTPS
sudo nft add rule inet filter input tcp dport {80,443} accept
# Drop everything else
sudo nft add rule inet filter input drop

Mit nur zwei Regeln legen Sie eine Basislinie von „nur das, was nötig ist“ fest, die ein Grundpfeiler der Systemsicherheit ist.

Regulierung des ein- und ausgehenden Verkehrs

Linux-Firewalls arbeiten bidirektional:

  • Inbound-Filterung schützt Dienste, indem sie einschränkt, wer sich verbinden kann und von wo.
  • Outbound-Filterung verhindert, dass kompromittierte Systeme nach Hause telefonieren oder Malware verbreiten.

Zum Beispiel können Sie allen ausgehenden SMTP-Verkehr blockieren, außer von Ihrem Mailserver:

sudo iptables -A OUTPUT -p tcp --dport 25 -d 203.0.113.5 -j ACCEPT
sudo iptables -A OUTPUT -p tcp --dport 25 -j DROP

Dies stellt sicher, dass nur der designated Mailserver über Port 25 kommuniziert, während andere Anwendungen blockiert werden.

Minimierung der Angriffsfläche

Die meisten Angriffe beginnen mit dem Scannen. Bots und böswillige Akteure scannen kontinuierlich IP-Bereiche, auf der Suche nach offenen Ports oder falsch konfigurierten Diensten. Eine richtig konfigurierte Firewall reduziert die sichtbare „Angriffsfläche“ Ihres Systems, sodass Angreifer weniger Möglichkeiten haben. Zum Beispiel sind Brute-Force-SSH-Angriffe eine der häufigsten Angriffe auf internetexponierte Server. Eine Firewall kann diese Risiken mindern, indem sie SSH nur von vertrauenswürdigen Subnetzen zulässt:

sudo nft add rule inet filter input ip saddr 192.0.2.0/24 tcp dport 22 accept
sudo nft add rule inet filter input tcp dport 22 drop

Jetzt können nur noch Maschinen in Ihrem Büronetzwerk SSH-Verbindungen herstellen, der Rest des Internets wird blockiert.

Sicherstellung der Einhaltung und mehrschichtige Verteidigung

In Unternehmensumgebungen sind Firewalls auch an Compliance-Rahmenwerke wie PCI-DSS (Zahlungen), HIPAA (Gesundheitswesen) und GDPR (Datenschutz) gebunden. Diese Standards verlangen Zugangskontrolle auf der Netzwerkschicht, wodurch Firewalls nicht nur eine gute Praxis, sondern eine gesetzliche und regulatorische Anforderung sind. Über die Einhaltung hinaus sind Firewalls Teil einer mehrschichtigen Verteidigungsstrategie:

  • Anwendungssicherheit verteidigt gegen Softwarefehler.

  • Benutzerzugriffskontrolle beschränkt, was Benutzer tun können.

  • Firewalls stellen sicher, dass selbst wenn ein Angreifer eine Schicht umgeht, er immer noch auf Barrieren auf Netzwerkebene stößt.

Beispiel: Protokollierung verworfener Pakete zur Einhaltung von Vorschriften

sudo nft add rule inet filter input log prefix "NFT-DROP: " counter drop

Dies stellt sicher, dass jeder abgebrochene Verbindungsversuch zur Überprüfung protokolliert wird, was während der Prüfungen als Beweis dient.

Linux-Firewalls sind nicht optional—sie sind entscheidende Wächter der Systemsicherheit. Durch die Regulierung des eingehenden und ausgehenden Datenverkehrs reduzieren sie die Angriffsfläche, setzen Prinzipien der minimalen Berechtigungen durch und bieten wesentliche Einblicke in die Netzwerkaktivität. In Unternehmens- und regulierten Umgebungen sind sie auch ein wesentlicher Bestandteil von Compliance- und mehrschichtigen Verteidigungsstrategien. Kurz gesagt: Ohne eine Firewall ist Ihr Linux-System unnötig exponiert; mit einer gewinnen Sie Kontrolle, Widerstandsfähigkeit und Vertrauenswürdigkeit.

Was sind iptables?

iptables ist ein Tool, das im Benutzerspeicher auf Linux-Systemen läuft und es Administratoren ermöglicht, Firewall-Regeln einzurichten und zu verwalten. Es ist die Befehlszeilenschnittstelle für das Netfilter-Framework im Linux-Kernel. Dies ermöglicht es Ihnen, Pakete zu filtern, den Datenverkehr zu regulieren und Network Address Translation (NAT) durchzuführen.

Verwendung von iptables im Benutzermodus

Der Linux-Kernel führt die eigentliche Paketfilterung durch, aber Administratoren benötigen einen Mechanismus, um dem Kernel mitzuteilen, was mit jedem Paket geschehen soll. Das ist es, was iptables tut. Es läuft im Benutzerspeicher und sendet diese Anweisungen an Netfilter. Sie können iptables als die "Sprache" betrachten, die Sie verwenden, um dem Kernel Anweisungen zu geben, was mit dem Netzwerkverkehr zu tun ist.

Zum Beispiel, um Ihre aktuellen Firewall-Regeln in der Filtertabelle zu sehen, würden Sie Folgendes tun:

sudo iptables -L -v –n

Dies zeigt alle aktiven Regeln an, wobei angezeigt wird, welche Ports und IPs erlaubt oder verweigert werden, zusammen mit Zählern, die angeben, wie viele Pakete jeder Regel entsprochen haben.

Verwendung von Netfilter mit iptables

Netfilter ist das Linux-Kernel-Framework, das Pakete betrachtet und ändert, während sie durch den Netzwerk-Stack wandern. Es hat "Hooks", die es Ihnen ermöglichen, Pakete zu filtern, NAT durchzuführen oder zu ändern. Administratoren können iptables verwenden, um sich mit diesen Hooks zu verbinden und Regeln festzulegen wie:

  • Erlaube Pakete auf Port 22 (SSH).

  • Pakete von einer verdächtigen IP-Adresse verwerfen.

  • Übersetzen Sie private IP-Adressen (NAT) in eine öffentliche IP.

Beispiel - Erlauben von SSH-Verkehr durch iptables:

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

Hier weist iptables Netfilter an, jedes TCP-Paket, das für Port 22 bestimmt ist, zu akzeptieren.

Firewall-Regeln strukturiert organisieren

iptables organisiert Firewall-Regeln auf strukturierte Weise: Tabellen → Ketten → Regeln.

  • Tabellen sind Kategorien der Verarbeitung:
    • filter: Standardtabelle, verantwortlich für grundlegendes Paketfiltern.
    • nat: Behandelt die Adressübersetzung (z.B. Portweiterleitung, Maskierung).
    • mangle: Ändert Paket-Header für fortgeschrittenes Routing/QoS.
    • raw: Bietet Ausnahmen für die Verbindungsverfolgung.
  • Chains sind Kontrollpunkte, an denen Pakete überprüft werden:
    • INPUT: Pakete, die zum lokalen System kommen.
    • AUSGABE: Vom System erzeugte Pakete.
    • FORWARD: Pakete, die durch das System geleitet werden.
  • Regeln sind die spezifischen Anweisungen (erlauben, ablehnen, zurückweisen, protokollieren).

Zum Beispiel, um eine Standardrichtlinie festzulegen und dann SSH zu erlauben:

sudo iptables -P INPUT DROP
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

Diese Konfiguration:

  1. Blockiert standardmäßig allen eingehenden Datenverkehr.

  2. Ermöglicht Antworten auf bestehende Verbindungen.

  3. Erlaubt neue SSH-Verbindungen auf Port 22.

Historische Rolle bei der Paketfilterung und NAT

iptables ist seit etwa 20 Jahren das Haupt-Firewall-Tool für Linux, seit es 2001 erstmals in den Linux-Kernel aufgenommen wurde. Es ersetzte das frühere ipchains-Tool und wurde als die Linux-Firewall bekannt.

Früher wurde iptables verwendet für:

  • Paketfilterung: Durchsetzung von Zugriffskontrollrichtlinien für eingehenden und ausgehenden Datenverkehr.
  • NAT (Network Address Translation): Umschreiben von IP-Headern, damit mehrere Geräte eine öffentliche IP-Adresse teilen können.
  • Maskierung: Eine spezielle Form von NAT, die oft in Heim- oder Büronetzwerken verwendet wird.
  • Portweiterleitung: Weiterleitung von Anfragen von einem Port/IP zu einem anderen.

Beispiel: Aktivierung von NAT mit iptables:

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Diese Regel ermöglicht es mehreren Geräten in einem privaten LAN, eine einzige öffentliche IP über die Schnittstelle eth0 zu teilen.

Kurz gesagt, iptables ist nicht die Firewall selbst; es ist ein Benutzerraum-Programm. Es ist die Schnittstelle zu Netfilter, das die eigentliche Paketfilter-Engine im Linux-Kernel ist. Es gruppiert Regeln in Tabellen und Ketten, was es Ihnen ermöglicht, komplizierte Firewall-Regeln zu erstellen. Seit fast 20 Jahren ist iptables das Hauptwerkzeug für Paketfilterung und NAT unter Linux. Es hat das Rückgrat sowohl kleiner als auch großer Firewalls gebildet.

Auch wenn iptables jetzt als veraltet gilt, müssen Systemadministratoren dennoch wissen, wie man es benutzt, um Systeme am Laufen zu halten und die Fortschritte seines Nachfolgers, nftables, zu verstehen.

Wie funktionieren iptables?

Iptables funktioniert, indem es Datenpakete durch Regeltabellen sendet. Es überprüft jedes Paket der Reihe nach, und wenn die Bedingungen einer Regel erfüllt sind (wie das Protokoll, der Port oder die Quell-IP), wird die als "Ziel" festgelegte Aktion ausgeführt. Diese Aktionen können entweder das Paket akzeptieren, es ohne weitere Mitteilung verwerfen, mit einem Fehler ablehnen oder es für eine spätere Überprüfung protokollieren.

Ketten: INPUT, OUTPUT und FORWARD

iptables verwendet Chains, um die Verkehrsfilterung zu organisieren. Chains zeigen die verschiedenen Phasen der Reise eines Pakets:

  • EINGANG → Für Pakete, die an die lokale Maschine gerichtet sind (z.B. SSH-Zugriff auf einen Server).

  • AUSGABE → Für Pakete, die von der lokalen Maschine stammen (z.B. eine curl-Anfrage zum Herunterladen von Updates).

  • FORWARD → Für Pakete, die durch die Maschine geleitet werden, wenn sie als Router fungiert.

Beispiel: Auflisten der INPUT-Kette mit ausführlicher Ausgabe:

sudo iptables -L INPUT -v -n

Dies zeigt alle Regeln, die auf eingehenden Datenverkehr angewendet werden, und wie viele Pakete jeder Regel entsprochen haben.

Bewertung sequentieller Regeln

iptables überprüft die Regeln nacheinander, in der Reihenfolge. Die erste Regel, die übereinstimmt, entscheidet, was mit dem Paket passiert. Die Standardrichtlinie der Kette wird verwendet, wenn keine Regeln übereinstimmen.

Zum Beispiel, lassen wir SSH zuerst los und dann alles andere loswerden:

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -j DROP

Wenn ein Paket auf Port 22 (SSH) ankommt, passt die erste Regel und die Verbindung wird erlaubt. Alle anderen Pakete fallen unter die zweite Regel und werden verworfen.

Übereinstimmungsbedingungen: Protokoll, Port, IP

Regeln werden durch Bedingungen wie folgt definiert:

  • Protokoll (-p tcp, -p udp, -p icmp)

  • Quell-/Ziel-IP (-s 192.0.2.0/24, -d 203.0.113.5)

  • Ports (--dport 80, --sport 53)

  • Verbindungsstatus (-m conntrack --ctstate ESTABLISHED)

Beispiel: Erlauben Sie HTTP-Verkehr nur von einem vertrauenswürdigen Subnetz:

sudo iptables -A INPUT -p tcp -s 192.0.2.0/24 --dport 80 -j ACCEPT

Das bedeutet: Wenn das Paket TCP ist, aus dem Subnetz 192.0.2.0/24 stammt und für Port 80 bestimmt ist → akzeptiere es.

Häufige Aktionen (Ziele): AKZEPTIEREN, FALLEN LASSEN, ABLEHNEN, PROTOKOLLIEREN

Sobald eine Regel übereinstimmt, wendet iptables ein Ziel an:

  • AKZEPTIEREN → Lass das Paket durch.

  • DROP → Stumm verwerfen (keine Antwort an den Absender).

  • REJECT → Verweigern Sie das Paket und senden Sie einen Fehler zurück (z.B. ICMP „Port nicht erreichbar“).

  • LOG → Protokolliere die Paketdetails in den Systemprotokollen und fahre dann mit der nächsten Regel fort. Protokollieren Sie die Paketdetails in den Systemprotokollen und fahren Sie dann mit der nächsten Regel fort.

Beispiel: Protokollierung und Verwerfen aller anderen Datenverkehrs außer SSH:

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -j LOG --log-prefix "IPTABLES-DROP: "
sudo iptables -A INPUT -j DROP
  • Regel 1 → SSH-Verbindungen akzeptieren.

  • Regel 2 → Protokolliere alles andere mit dem Präfix „IPTABLES-DROP.“

  • Regel 3 → Paket verwerfen.

iptables funktioniert, indem es Pakete durch Regelketten sendet, die nacheinander überprüft werden. Bedingungen wie Protokoll, IP und Port setzen Regeln, während Aktionen wie ACCEPT, DROP, REJECT und LOG entscheiden, was mit dem Paket geschieht. Dieses Modell zeigt, dass iptables ein starkes, aber oft kompliziertes Firewall-Tool ist. Um ein sicheres und funktionierendes Regelwerk zu entwerfen, sind die Reihenfolge und die Spezifität der Regeln sehr wichtig.

Was ist nftables?

In der Kernel-Version 3.13 (2014) eingeführt, ist nftables das neue Firewall-Framework für Linux, das iptables ersetzen soll. Es hat eine einzige Schnittstelle zum Filtern von Paketen, NAT und zur Klassifizierung des Verkehrs über IPv4, IPv6, ARP und Bridging. All dies geschieht mit einer einfacheren Syntax und besserer Skalierbarkeit.

nftables als modernes Framework

Fast zwanzig Jahre lang war iptables der Hauptbestandteil von Linux-Firewalls. Aber in großen, sich verändernden Kontexten wurde offensichtlich, dass es zu kompliziert, redundant und langsam war. Die Linux-Entwickler haben nftables entwickelt, um diese Probleme zu beheben. Es ist ein einfacherer und effizienterer Ansatz, um das Netfilter-Framework einzurichten.

iptables benötigte mehrere Werkzeuge (iptables, ip6tables, arptables, ebtables), während nftables ein einziges Befehlszeilenprogramm hat, das mit allen funktioniert:

sudo nft list ruleset

Dieser eine Befehl zeigt alle aktiven Regeln über Protokolle hinweg an und beseitigt die Fragmentierung der älteren Werkzeuge.

Integration ab Linux-Kernel 3.13

Beginnend mit Version 3.13 (Januar 2014) wurde nftables in den Linux-Kernel aufgenommen. Die meisten großen Distributionen (Debian, Ubuntu, RHEL, Fedora, Arch) haben es seitdem als Standard-Firewall-Backend übernommen. Sie verwenden häufig iptables-nft-Kompatibilitätsschichten, um sicherzustellen, dass ältere Skripte während des Übergangs weiterhin funktionieren.

Um zu überprüfen, ob Ihr System nftables unterstützt:

uname –r

Sie können nftables verwenden, wenn Ihre Kernel-Version 3.13 oder neuer ist. Die meisten zeitgenössischen Distributionen haben es bereits vorinstalliert.

Einheitliche Handhabung von IPv4, IPv6, ARP und Bridging

Einer der größten Vorteile von nftables ist seine Fähigkeit, mehrere Protokollfamilien in einem Regelwerk zu verwalten.

  • inet → IPv4 + IPv6

  • ip → Nur IPv4

  • ip6 → Nur IPv6

  • arp → ARP-Verkehr

  • bridge → Brückenpakete

Zum Beispiel benötigen Sie mit iptables separate Befehle für IPv4- und IPv6-SSH-Regeln. Mit nftables reicht eine Regel aus:

nft add rule inet filter input tcp dport 22 accept

Diese eine Regel gilt sowohl für IPv4 als auch für IPv6 und verringert die Duplizierung erheblich.

Vereinfachte Syntax und bessere Skalierbarkeit

Die Syntax für nftables soll sauber, konsistent und einfach zu skripten sein. Sie können IP-Adressen, Ports oder Bereiche in Mengen und Maps anordnen, anstatt komplexe Befehle immer wieder einzugeben.

Zum Beispiel: Erlaube HTTP/HTTPS und SSH von einem vertrauenswürdigen Subnetz mit nur einer Regel:

table inet filter {
set allowed_ports {
type inet_service;
elements = { 22, 80, 443 }
}
chain input {
type filter hook input priority 0; policy drop;
ip saddr 192.0.2.0/24 tcp dport @allowed_ports accept
}
}

Diese prägnante Syntax macht komplexe Firewalls leichter lesbar, wartbar und überprüfbar.

Skalierbarkeitsverbesserungen umfassen:

  • Atomarer Regelersatz: Ganze Regelsets werden in einem einzigen Vorgang ausgetauscht, wodurch inkonsistente Zustände vermieden werden.

  • Effiziente Suchen: Mengen und Karten ermöglichen es, Tausende von Einträgen schnell abzugleichen.

  • Zähler und Überwachung: Eingebaute Werkzeuge bieten detaillierte Einblicke in Regeltreffer und Verkehrsstatistiken.

Der Linux-Kernel hat seit Version 3.13 nftables. Es ist ein zeitgemäßes, einheitliches Firewall-System. Es erleichtert die Verwaltung von Firewalls, indem es IPv4, IPv6, ARP und Bridging in einem einzigen Tool zusammenführt. Dieses Programm hat eine sauberere Syntax und ist viel skalierbarer als iptables. Heute ist nftables der beste Weg, um Firewalls auf Linux-Systemen zu erstellen, die effizient, einfach zu verwalten und zukunftssicher sind.

Warum wird nftables als Ersatz für iptables betrachtet?

Fast 20 Jahre lang war iptables die gängigste Methode, um eine Linux-Firewall einzurichten. Aber als die Systeme komplizierter wurden und die Netzwerke größer, wurden seine Mängel offensichtlich. Um diese Probleme zu beheben, wurde nftables in den Linux-Kernel 3.13 als neue Methode hinzugefügt. Da es die Verwaltung erleichtert, die Dinge beschleunigt und Funktionen über Protokolle hinweg einheitlich macht, ist nftables jetzt das Standard-Firewall-Framework.

Die Einschränkungen von iptables

iptables hat viele Jahre lang gute Dienste geleistet, leidet aber unter mehreren architektonischen Problemen:

  • Regel-Duplikation: Separate Binaries (iptables für IPv4, ip6tables für IPv6, arptables und ebtables) bedeuteten, dass Administratoren oft die gleiche Logik über mehrere Werkzeuge hinweg duplizieren mussten.

  • Ineffizienz: Regeln werden sequenziell ausgewertet, daher beeinträchtigen große Regelmengen die Leistung erheblich.

  • Komplexität: Die Syntax ist ausführlich, und selbst kleine Fehlkonfigurationen können große Sicherheitslücken verursachen.

  • Wartbarkeit: Große iptables-Konfigurationen sind schwer zu überprüfen, zu debuggen und an sich schnell ändernde Umgebungen wie Cloud oder Container anzupassen.

Beispiel — SSH für sowohl IPv4 als auch IPv6 mit iptables erlauben:

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo ip6tables -A INPUT -p tcp --dport 22 -j ACCEPT

Hier müssen separate Regeln für IPv4 und IPv6 geschrieben werden, was den Wartungsaufwand verdoppelt und Ineffizienz und Komplexität zeigt.

Einheitliches Regelwerk mit nftables

nftables wurde entwickelt, um diese Einschränkungen zu überwinden, indem ein einheitliches Regelwerk eingeführt wurde. Anstelle separater Werkzeuge für jedes Protokoll verwaltet nftables IPv4, IPv6, ARP und Bridging unter einem einzigen Dach.

Beispiel — SSH für sowohl IPv4 als auch IPv6 mit nftables erlauben:

nft add rule inet filter input tcp dport 22 accept

Eine einfache Regel ersetzt zwei oder mehr iptables-Befehle und reduziert sofort Duplikationen und Konfigurationsfehler.

Leistungs- und Wartungs Vorteile

nftables bringt mehrere technische Verbesserungen mit sich:

  • Leistung: Regeln werden effizienter ausgewertet, und Sets/Karten ermöglichen eine Massenübereinstimmung (z.B. Tausende von IPs in einer Regel).

  • Atomare Updates: Sie können das gesamte Regelwerk in einem einzigen Vorgang ersetzen und so halb angewendete Konfigurationen vermeiden.

  • Sauberere Syntax: Regeln sind kürzer, lesbarer und einfacher zu warten.

  • Debugging und Sichtbarkeit: Eingebaute Zähler und Protokollierung erleichtern die Überwachung der Regelverwendung.

Beispiel — mehrere Ports in einer Regel mit nftables erlauben:

nft add rule inet filter input tcp dport {22,80,443} accept

In iptables bräuchten Sie drei separate Regeln für denselben Effekt.

Einführung in moderne Linux-Systeme

Die meisten modernen Distributionen haben nftables zum Standard-Firewall-Backend gemacht:

  • Debian hat von Buster (10) an standardmäßig auf nftables umgestellt.

  • Ubuntu verwendet in neueren Versionen standardmäßig nftables, unterstützt jedoch weiterhin iptables zur Kompatibilität.

  • RHEL 8 und Fedora verwenden ebenfalls nftables als zugrunde liegendes Framework, selbst wenn es über firewalld verwaltet wird.

Diese Übernahme bedeutet, dass nftables kein optionales Upgrade mehr ist; es ist jetzt der Standard für Linux-Firewalls. Da iptables jetzt offiziell im Legacy-Wartungsmodus ist, werden Administratoren aufgefordert, zu wechseln.

Weil es die Probleme von iptables behebt, wird nftables als die beste Lösung angesehen. nftables ist eine moderne, skalierbare und wartbare Firewall-Grundlage für heutige Systeme. Es kombiniert IPv4, IPv6, ARP und Bridging-Regeln, hat eine einfachere Syntax, verbessert die Geschwindigkeit durch die Verwendung von Sets und atomaren Updates und ist in den meisten Linux-Versionen standardmäßig.

Verwendet firewalld iptables oder nftables?

Ja, firewalld verwendet entweder iptables oder nftables, aber nicht beides gleichzeitig. Es ist eine Schicht zur Verwaltung von Firewalls, die auf dem Netfilter-Framework des Linux-Kernels aufsitzt. Es filtert keine Pakete von sich aus. Stattdessen verwandelt es leicht verständliche Regeln in die Backend-Firewall-Engine, die auf dem Host verfügbar ist.

firewalld als Firewall-Verwaltungsschicht

firewalld wurde entwickelt, um die Firewall-Konfiguration zu erleichtern. Anstatt komplexe iptables- oder nftables-Befehle zu schreiben, können Administratoren Firewall-Richtlinien mit Zonen (Vertrauensstufen) und Diensten (vordefinierte Port-/Protokollgruppen) verwalten.

Zum Beispiel ist das Öffnen von SSH in der öffentlichen Zone so einfach wie:

sudo firewall-cmd --zone=public --add-service=ssh --permanent
sudo firewall-cmd --reload

Hinter den Kulissen übersetzt firewalld diese Anfrage in iptables- oder nftables-Regeln, je nachdem, welches Backend im System verwendet wird.

Iptables wird auf relativ älteren Systemen verwendet, während nftables auf neueren Systemen zum Einsatz kommt.

  • Ältere Linux-Distributionen (z.B. CentOS 7, RHEL 7, Ubuntu 18.04) verwendeten iptables als Backend für firewalld.

  • Moderne Distributionen (z.B. Fedora 32+, RHEL 8+, Ubuntu 20.04 und später) haben auf nftables als Backend umgestellt, da iptables jetzt veraltet ist.

Dieser Übergang ermöglicht es firewalld, nahtlos weiterzuarbeiten, während es von der einheitlichen Regelmenge und der verbesserten Skalierbarkeit von nftables profitiert.

Beispiel — HTTP in Fedora öffnen (verwendet nftables im Hintergrund):

sudo firewall-cmd --zone=public --add-service=http

Der Benutzer sieht nur firewalld-Befehle, aber nftables-Regeln werden im Hintergrund angewendet.

Wie man überprüft, welchen Backend firewalld verwendet

Sie können überprüfen, welches Backend Ihr System verwendet.

Zuerst überprüfen, ob firewalld aktiv ist:

sudo firewall-cmd --state

Wenn es running zurückgibt, verwaltet firewalld Ihre Firewall.

Um das Backend zu sehen, überprüfen Sie die Systemprotokolle:

sudo journalctl -u firewalld | grep "Using backend"

Typische Ausgaben umfassen:

  • Verwendung des iptables-Backends → firewalld verwaltet iptables.

  • Verwendung des nftables-Backends → firewalld verwaltet nftables.

Eine der besten Eigenschaften von firewalld ist, dass es sofort mit der Standard-Firewall-Engine des Systems funktioniert. Administratoren müssen sich keine Sorgen machen, ob das zugrunde liegende Framework iptables oder nftables ist; die Befehle sind immer gleich.

Dies macht firewalld in Unternehmen, in denen es viele verschiedene Versionen und Distributionen von Linux gibt, sehr nützlich. Es stellt sicher, dass die Verwaltungsschicht immer gleich ist, auch wenn die Backends unterschiedlich sind.

Firewalld filtert Pakete nicht selbst; es verwaltet die Linux-Firewall über ein Backend. Es verwendete iptables auf älteren Systemen und nftables auf neueren. Sie können das Backend überprüfen, indem Sie die Systemprotokolle einsehen oder firewall-cmd verwenden. Firewalld passt sich automatisch an die jeweils laufende Engine an, was die Wartung von Firewalls erleichtert und sie konsistenter über alle Linux-Distributionen hinweg macht.

Wie funktioniert firewalld auf Linux-Systemen?

firewalld ist ein Daemon, der die Netfilter-Firewall des Linux-Kernels automatisch steuert. Dies macht es einfacher und flexibler, Netzwerkrichtlinien einzurichten. Mit statischen Werkzeugen wie iptables oder nftables erfordert jede Änderung normalerweise das Neuladen des gesamten Regelsets. Aber mit firewalld können Administratoren Richtlinien im laufenden Betrieb ändern, ohne aktive Verbindungen zu unterbrechen.

firewalld als dynamischer Netfilter-Manager

Firewalld ist ein Hintergrunddienst (Daemon), der leicht verständliche Firewall-Ideen in Netfilter-Regeln umsetzt. Es kann sowohl IPv4- als auch IPv6-Verkehr verarbeiten und verwendet je nach System entweder iptables oder nftables als Backend.

Sie können sehen, was es gerade macht mit:

sudo firewall-cmd --state

Wenn es "running" zurückgibt, ist der Daemon aktiv und steuert die Firewall.

Zonen und Dienstleistungen

firewalld führt die Konzepte von Zonen und Diensten ein, um die Verwaltung der Firewall zu vereinfachen:

  • Zonen: Vordefinierte Vertrauensstufen, die beschreiben, wie restriktiv die Firewall sein sollte. Beispiele:

    • öffentlich → für nicht vertrauenswürdige Netzwerke wie WLAN-Hotspots.

    • Zuhause → für private, vertrauenswürdige Umgebungen.

    • dmz → für Server, die dem Internet ausgesetzt sind.

  • Dienste: Vorkonfigurierte Gruppen von Regeln, die gängige Protokolle und Ports repräsentieren (z.B. SSH, HTTP, DNS).

Zum Beispiel, um HTTPS-Verkehr in der öffentlichen Zone zuzulassen:

sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --reload

Dies konfiguriert die Firewall sofort so, dass sie HTTPS-Verbindungen akzeptiert, ohne den genauen Port (443/TCP) zu kennen.

Dynamische Regelanwendung ohne Neustarts

Eine der besten Eigenschaften von firewalld ist, dass es Anpassungen im laufenden Betrieb vornehmen kann. Sie können eine Regel sofort hinzufügen oder entfernen, und das aktive Regelset wird aktualisiert. Es ist nicht notwendig, den Dienst neu zu starten oder Verbindungen zu verlieren.

Zum Beispiel SSH spontan für Tests öffnen:

sudo firewall-cmd --add-service=ssh

Dies gilt sofort. Wenn Sie zufrieden sind, können Sie es dauerhaft machen:

sudo firewall-cmd --add-service=ssh --permanent
sudo firewall-cmd --reload

Integration mit NetworkManager und systemd

firewalld integriert sich eng mit anderen Kern-Linux-Diensten:

  • NetworkManager: firewalld kann automatisch die Firewall-Zonen je nach Netzwerkverbindung wechseln. Zum Beispiel, wenn Sie Ihren Laptop mit einem Heim-Wi-Fi verbinden, kann die Schnittstelle der Heimzone zugewiesen werden, aber wenn Sie sich mit einem öffentlichen Wi-Fi verbinden, wechselt sie automatisch zur öffentlichen Zone.

  • systemd: firewalld läuft als systemd-Dienst, was die Verwaltung, Aktivierung oder Deaktivierung beim Booten erleichtert.

sudo systemctl status firewalld
sudo systemctl enable firewalld
sudo systemctl disable firewalld

Dies stellt sicher, dass die Firewall auch nach einem Neustart aktiv bleibt und mit anderen Systemdiensten zusammenarbeitet.

Als dynamischer Daemon auf Basis von Netfilter verwaltet firewalld Firewall-Regeln in Echtzeit, ohne Verbindungen zu unterbrechen. Es macht komplizierte Einstellungen leichter verständlich, indem es Regeln in Dienste und Zonen gruppiert. Es funktioniert gut mit NetworkManager, sodass Änderungen an Zonen den Netzwerkverbindungen folgen. Systemd sorgt dafür, dass Dienste starten und reibungslos laufen.

Kurz gesagt, firewalld macht Linux-Firewalls flexibler, anpassungsfähiger und einfacher zu warten, insbesondere wenn sich die Netzwerkbedingungen häufig ändern.

Wie filtert iptables den Netzwerkverkehr?

Wenn Pakete über die Netfilter-Hooks des Linux-Kernels fließen, überprüft iptables sie anhand einer Reihe von Regeln und führt dann eine Aktion aus, wie ACCEPT, DROP oder REJECT. Die Eigenschaften jedes Pakets, wie seine Quell-IP, Zielport und Protokoll, werden nacheinander gegen eine Reihe von Regeln in Ketten getestet, bis ein Treffer gefunden wird oder die Standardrichtlinie der Kette entscheidet, was zu tun ist.

Paketinspektionsprozess

The Netfilter framework stops every network packet that comes into or leaves a Linux system. Netfilter uses iptables to figure out what to do with these packets.

Zum Beispiel, wenn ein TCP-Paket eintrifft und für Port 22 (SSH) bestimmt ist, überprüft Netfilter es anhand der Regeln in der INPUT-Kette.

Sie können alle aktiven Paketfilterregeln anzeigen, indem Sie Folgendes verwenden:

sudo iptables -L -v -n

Dies zeigt die Ketten, ihre Richtlinien und wie viele Pakete bisher jeder Regel entsprochen haben.

Bedingungserfüllung: IP, Port, Protokoll

iptables-Regeln legen Bedingungen fest, die Pakete erfüllen müssen, um eine Aktion auszulösen. Häufige Bedingungen umfassen:

  • Protokoll: -p tcp, -p udp, -p icmp

  • Quell-/Ziel-IP: -s 192.0.2.0/24, -d 203.0.113.5

  • Portnummern: --dport 80, --sport 53

Beispiel: Erlauben Sie HTTP-Anfragen nur von einem vertrauenswürdigen Subnetz:

sudo iptables -A INPUT -p tcp -s 192.0.2.0/24 --dport 80 -j ACCEPT

Diese Regel erlaubt Pakete, wenn sie TCP sind, aus dem Subnetz 192.0.2.0/24 stammen und für Port 80 bestimmt sind.

Regelbewertung durch Ketten

Regeln werden in Ketten gruppiert. Pakete reisen je nach ihrer Richtung durch diese Ketten:

  • EINGANG → Für Pakete, die in das lokale System eintreffen.

  • AUSGABE → Für Pakete, die das System verlassen.

  • WEITERLEITEN → Für Pakete, die als Router durch das System geleitet werden.

Regeln innerhalb einer Kette werden sequenziell ausgewertet. Die erste übereinstimmende Regel bestimmt das Schicksal des Pakets.

Beispiel:

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -j DROP
  • If a packet matches port 22 (SSH), it is accepted immediately.

  • Otherwise, it falls to the second rule and is dropped.

Mögliche Ergebnisse: AKZEPTIEREN, FALLEN LASSEN, ABLEHNEN

Sobald eine Regel übereinstimmt, wendet iptables eine Zielaktion an:

  • AKZEPTIEREN → Lass das Paket durch.

  • DROP → Paket stillschweigend verwerfen (keine Antwort gesendet).

  • REJECT → Blockiere das Paket und benachrichtige den Absender mit einem Fehler (z.B. ICMP „Port nicht erreichbar“).

Beispiel: Protokollierung und Ablehnung allen anderen Verkehrs außer SSH:

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -j LOG --log-prefix "IPTABLES-REJECT: "
sudo iptables -A INPUT -j REJECT

Diese Konfiguration erlaubt SSH, protokolliert alle anderen Versuche mit dem Präfix „IPTABLES-REJECT“ und lehnt sie mit einem Fehler ab.

Es ist möglich, dass iptables den Verkehr filtert, indem es Pakete betrachtet, sie mit Regelbedingungen (IP, Port, Protokoll) vergleicht und in Ketten Maßnahmen ergreift. Die erste übereinstimmende Regel oder die Standardrichtlinie der Kette entscheidet, was mit jedem Paket passiert. Die Optionen sind AKZEPTIEREN, VERWERFEN oder ABLEHNEN. Diese Funktion macht iptables zu einem starken, aber ordnungssensiblen Firewall-System, bei dem es sehr wichtig ist, die Regeln sorgfältig zu entwerfen.

Was macht nftables besser als iptables?

nftables ist besser als iptables, weil es ein einheitliches Regelmodell hat, Duplikate reduziert, die Dinge beschleunigt und die Verwaltung von Firewalls erleichtert, indem es eine flexiblere und leichter wartbare Syntax verwendet. Es wurde entwickelt, um die Probleme zu beheben, die iptables in großen, modernen Umgebungen lange Zeit schwer zu bedienen und langsam gemacht haben.

Ein Modell mit nur einem Regelwerk

Iptables benötigt verschiedene Werkzeuge und Regeln für IPv4 (iptables), IPv6 (ip6tables), ARP (arptables) und Bridging (ebtables). Nftables hingegen fasst alles in einem Regelwerk zusammen, das der nft-Befehl verwaltet.

Beispiel: Verwendung von nftables, um SSH sowohl in IPv4 als auch in IPv6 zum Laufen zu bringen:

nft add rule inet filter input tcp dport 22 accept

Diese eine Zeile funktioniert sowohl für IPv4- als auch für IPv6-Verkehr. Mit iptables bräuchten Sie mindestens zwei verschiedene Befehle, um dasselbe zu tun.

Weniger Duplikation und mehr Effizienz

Wenn Sie iptables verwenden, werden einfache Firewall-Einstellungen schnell gleich. Sets und Maps werden von nftables unterstützt, was dieses Problem löst. Diese ermöglichen es Ihnen, mehr als einen Wert in einer einzigen Regel zu vergleichen, wie z.B. Ports, IP-Adressen oder Netzwerke.

Zum Beispiel können Sie mehr als einen Dienst in einer Regel zulassen:

table inet filter {
set allowed_ports {
type inet_service;
elements = { 22, 80, 443 }
}
chain input {
type filter hook input priority 0; policy drop;
tcp dport @allowed_ports accept
}
}

Anstatt drei separate Regeln für SSH, HTTP und HTTPS zu schreiben, erledigt nftables dies in einer einzigen Regel, was das Regelwerk kürzer und leichter wartbar macht.

Leistungsverbesserungen bei der Regelbewertung

Iptables überprüft jede Regel nacheinander, bis es eine findet, die übereinstimmt. In großen Umgebungen mit Tausenden von Regeln verlangsamt dies die Leistung.

nftables hat eine bessere Methode, um Dinge zu bewerten:

  • Verwendet Mengen und Hashtabellen, um Suchen zu beschleunigen.

  • Ermöglicht atomare Änderungen, was bedeutet, dass das gesamte Regelwerk in einer einzigen Aktion geändert werden kann.

  • Reduziert Ausfallzeiten und verhindert inkonsistente Zustände während des Neuladens.

Im wirklichen Leben bedeutet dies, dass nftables für große, komplizierte Firewalls viel besser funktioniert als iptables.

Flexibilitäts- und Wartungsfähigkeitsvorteile

Abgesehen von der Leistung ist nftables deutlich einfacher zu lesen, zu überprüfen und zu warten:

  • Simplified syntax: Rules are shorter and more consistent.

  • Erweiterbarkeit: Unterstützt neue Protokolle ohne Neugestaltung.

  • Better debugging: Built-in counters show exactly how many packets match each rule.

  • Atomare Konfiguration: Regelsätze können in strukturierten Dateien geschrieben und auf einmal geladen werden.

Example — reload a configuration file:

sudo nft -f /etc/nftables.conf

Dies stellt sicher, dass die neue Konfiguration vollständig bereitgestellt wird, damit teilweise Updates die Konnektivität nicht beeinträchtigen.

Es ist überlegen gegenüber iptables, da es ein einheitliches Regelwerk für alle Protokolle verwendet.

  • Beseitigt Duplikate mit Mengen und Karten.

  • Macht die Dinge schneller durch effiziente Auswertung und atomare Updates.

  • Gibt Firewalls mehr Flexibilität und macht sie einfacher im großen Maßstab zu handhaben.

Diese Kombination macht nftables zum besten Firewall-Framework für moderne Linux-Systeme und zum unvermeidlichen nächsten Schritt nach iptables.

Wie überprüft man, ob firewalld iptables oder nftables verwendet?

Je nach Version und Distribution kann firewalld entweder iptables oder nftables als Backend verwenden. Es ist wichtig zu wissen, welches Backend Ihr System gerade verwendet, damit Sie nicht verwirrt werden. So können Sie es überprüfen.

1. Überprüfen Sie, ob firewalld läuft

Bevor Sie das Backend überprüfen, stellen Sie sicher, dass firewalld aktiv ist:

sudo firewall-cmd --state

Erwartete Ausgabe:

  • läuft → firewalld ist aktiv.

  • nicht aktiv → firewalld verwaltet die Firewall nicht.

2. Überprüfen Sie das Backend über die Systemprotokolle

firewalld berichtet, welches Backend es beim Start verwendet. Sie können dies in den Journalprotokollen einsehen:

sudo journalctl -u firewalld | grep "Using backend"

Mögliche Ausgaben:

  • Verwendung des iptables-Backends.

  • Verwendung des nftables-Backends.

Dies ist der direkteste Weg, um zu bestätigen.

3. Mit firewall-cmd inspizieren

Obwohl firewall-cmd das Backend nicht direkt anzeigt, kann es durch die Struktur der Regeln auf das Backend hinweisen. Zum Beispiel, nachdem eine Regel hinzugefügt wurde:

sudo firewall-cmd --zone=public --add-service=ssh
sudo firewall-cmd --list-all
  • Auf iptables-basierten Systemen werden die Regeln im Hintergrund in iptables-Befehle übersetzt.

  • Auf nftables-basierten Systemen erfolgt die Übersetzung über das nftables-Regelsystem.

Um die aktiven Low-Level-Regeln anzuzeigen, führen Sie Folgendes aus:

sudo iptables -L -n
sudo nft list ruleset
  • Wenn iptables -L Regeln anzeigt, aber nft list ruleset leer ist → verwendet firewalld iptables.

  • Wenn die nft list ruleset Regeln anzeigt → verwendet firewalld nftables.

4. Distro- und Versionsstandarde

Verschiedene Distributionen verwenden standardmäßig unterschiedliche Backends:

  • CentOS 7 / RHEL 7 / Ubuntu 18.04 → firewalld verwendet standardmäßig iptables.

  • Fedora 32+, RHEL 8+, Debian 10+, Ubuntu 20.04+ → firewalld verwendet standardmäßig nftables.

Die Überprüfung Ihrer Betriebssystemversion kann Ihnen eine gute Vorstellung geben:

cat /etc/os-release

5. Den Unterschied in den Ausgaben erkennen

  • Mit dem iptables-Backend verwalten Sie Regeln mit:

    sudo iptables -L -v -n
  • Mit dem nftables-Backend sehen Sie Regeln mit:

    sudo nft list ruleset

Wenn Sie nft list ruleset auf einem iptables-Backend-System ausführen, wird die Ausgabe leer sein. Sie werden ein strukturiertes Regelwerk mit Tabellen, Ketten und Zählern auf nftables-Systemen beobachten.

Um herauszufinden, ob firewalld iptables oder nftables verwendet:

  1. Überprüfen Sie, ob firewalld läuft (firewall-cmd --state).

  2. Schau dir die Protokolle an (journalctl -u firewalld | grep "Using backend").

  3. Verwenden Sie iptables -L und nft list ruleset, um sich die Regelsets anzusehen.

  4. Überlegen Sie, welche Version Ihrer Distribution Sie haben (früher → iptables, modern → nftables).

  5. Schau dir die Ausgaben an: nftables-Regelsätze wirken strukturiert und einheitlich, während iptables-Regelsätze flach wirken.

Wie migriert man iptables-Regeln zu nftables?

Der Umstieg von iptables auf nftables ist sehr wichtig, da iptables jetzt als veraltet gilt und nftables das Framework ist, an dem weiterhin gearbeitet wird und das empfohlen wird. Die Migration stellt sicher, dass die Dinge langfristig zusammenarbeiten, erleichtert die Pflege der Regeln und beschleunigt die Firewall.

So ziehen Sie Schritt für Schritt sicher um.

1. Verstehen Sie die Notwendigkeit der Migration

  • iptables ist veraltet: Es befindet sich im Wartungsmodus und wird keine größeren neuen Funktionen erhalten.

  • nftables ist die Standard: Moderne Distributionen (RHEL 8+, Debian 10+, Ubuntu 20.04+, Fedora 32+) verwenden standardmäßig nftables.

  • Einheitliches Regelwerk: nftables verwaltet IPv4, IPv6, ARP und Bridging mit einem Regelwerk, wodurch Duplikate vermieden werden.

2. Exportieren Sie die vorhandenen iptables-Regeln

Bevor Sie migrieren, sichern Sie Ihre aktuelle iptables-Konfiguration in einer Datei.

sudo iptables-save > /root/iptables.backup.v4
sudo ip6tables-save > /root/iptables.backup.v6

Dies stellt sicher, dass Sie eine Kopie Ihrer IPv4- und IPv6-Regeln haben, die bei Bedarf wiederhergestellt werden kann.

3. Verwenden Sie Übersetzungstools

Linux bietet Dienstprogramme an, um iptables-Regeln in nftables-Syntax zu übersetzen:

  • iptables-translate: Konvertiert einen einzelnen iptables-Befehl in einen nftables-Befehl.

  • iptables-restore-translate: Konvertiert eine vollständige iptables-save-Datei in ein nftables-Regelsatz.

Beispiel — übersetze eine einzelne Regel:

sudo iptables-translate -A INPUT -p tcp --dport 22 -j ACCEPT

Ausgabe:

nft add rule ip filter INPUT tcp dport 22 counter accept

Beispiel — übersetze ein vollständiges Regelwerk:

sudo iptables-save > /tmp/iptables.rules
sudo iptables-restore-translate -f /tmp/iptables.rules > /tmp/nftables.rules

Jetzt enthält /tmp/nftables.rules die äquivalente nftables-Konfiguration.

4. Laden Sie das nftables-Regelsatz

Sobald übersetzt, testen Sie die nftables-Regeln, indem Sie sie in den Kernel laden:

sudo nft -f /tmp/nftables.rules

Überprüfen Sie, ob die Regeln angewendet wurden:

sudo nft list ruleset

Wenn alles korrekt aussieht, können Sie die Regeln in die persistente Konfigurationsdatei verschieben:

sudo cp /tmp/nftables.rules /etc/nftables.conf
sudo systemctl enable nftables
sudo systemctl restart nftables

5. Test nach der Migration

Nach der Migration die Konnektivität sorgfältig testen:

  • Überprüfen Sie den SSH-Zugriff (um sicherzustellen, dass Sie nicht ausgesperrt sind).

  • Pingen Sie den Server an, um den ICMP-Verkehr zu überprüfen.

  • Testen Sie Webdienste wie HTTP/HTTPS.

  • Überprüfen Sie die Protokolle auf verworfene Pakete:

sudo journalctl -k -f

Um iptables-Regeln auf nftables zu migrieren:

  1. Wissen, warum Sie iptables-Regeln auf nftables umstellen müssen (iptables ist alt, nftables ist neu).

  2. Verwenden Sie iptables-save und ip6tables-save, um die Regeln, die Sie jetzt haben, zu exportieren.

  3. Verwenden Sie iptables-translate oder iptables-restore-translate zur Übersetzung.

  4. Verwenden Sie nft -f, um das übersetzte Regelwerk zu laden und zu speichern.

  5. Testen Sie alles gründlich, um sicherzustellen, dass die Dienste weiterhin sicher und verfügbar sind.

Sie können problemlos von iptables zu nftables wechseln, während Sie Ihr System sicher halten und die Vorteile eines modernen Firewall-Frameworks nutzen, indem Sie diese Schritte befolgen.

Wie übersetzt man iptables-Regeln in nftables?

Der Umstieg auf nftables ist nicht nur eine Frage des Werkzeugwechsels; es ist auch eine Möglichkeit, Ihre Firewall benutzerfreundlicher, aktueller und sicherer für die Zukunft zu machen. Die Übersetzung ermöglicht es, aktuelle iptables-Regelsätze in nftables mit wenig Aufwand zu nutzen, sodass Sie nicht von vorne anfangen müssen.

1. Setzen Sie das Ziel der Regelübersetzung

Der grundlegende Zweck der Übersetzung besteht darin, iptables-Regeln in die nftables-Syntax zu ändern, damit sie mit dem nftables-Framework verwendet werden können. Dies erleichtert den Umstieg und bewahrt Ihre aktuellen Firewall-Regeln.

2. Verwenden Sie iptables-translate für eine Eins-zu-Eins-Konvertierung

Linux hat das Tool iptables-translate, mit dem Sie einzelne iptables-Befehle in nftables-Äquivalente umwandeln können. Zum Beispiel, nehmen wir an, Sie haben eine iptables-Regel, um SSH zu erlauben:

Ursprüngliche iptables-Regel: eingehende SSH-Verbindungen erlauben

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

Übersetze es mit iptables-translate:

Übersetzen Sie die iptables-Syntax in die nftables-Syntax.

sudo iptables-translate -A INPUT -p tcp --dport 22 -j ACCEPT

Erwartete Ausgabe:

nft add rule ip filter INPUT tcp dport 22 counter accept

Dies ist die nftables-Regel, die dasselbe tut. Beachten Sie, wie nftables automatisch Zähler hinzufügt, um die Paketübereinstimmung zu verfolgen.

3. Ändern Sie nicht unterstützte Konstrukte manuell

Nicht alle Funktionen von iptables funktionieren einwandfrei. Einige Erweiterungen oder Module erfordern manuelle Anpassungen in nftables.

Zum Beispiel eine iptables-Regel, die Multiport verwendet: # Erlaube mehrere Ports in iptables

sudo iptables -A INPUT -p tcp -m multiport --dports 22,80,443 -j ACCEPT

Das direkte Übersetzen könnte nicht die optimale nftables-Syntax ergeben. Stattdessen können Sie es manuell mit Sets umschreiben:

# nftables equivalent: using sets to group ports
nft add rule inet filter input tcp dport {22,80,443} accept

Dieser Ansatz ist sauberer und einfacher zu warten.

4. Validierung der übersetzten Regeln

Sobald sie übersetzt sind, sollten Sie die Regeln in nftables laden und überprüfen, ob sie wie erwartet funktionieren.

Zuerst speichern Sie Ihre übersetzten Regeln in einer Datei:

Speichern Sie die übersetzten nftables-Regeln in einer Datei.

sudo iptables-save | sudo iptables-restore-translate > /tmp/nftables.rules

Laden Sie dann die Regeln in nftables:

Lade übersetzte Regeln in nftables

sudo nft -f /tmp/nftables.rules

Schließlich, listen Sie die Regeln auf, um sie zu bestätigen:

Überprüfen Sie, ob die Regeln erfolgreich angewendet wurden.

sudo nft list ruleset

Um iptables-Regeln in nftables zu übersetzen:

  1. Definieren Sie den Zweck: Bewahren Sie Ihre Firewall-Logik, aber machen Sie sie aktueller.

  2. Verwenden Sie iptables-translate, um eine Regel nach der anderen zu ändern.

  3. Verwenden Sie nftables-Sets und -Maps, um nicht unterstützte Strukturen wie Multiport zu ändern.

  4. Überprüfen Sie, ob das Regelwerk korrekt ist, indem Sie es exportieren, laden und in nftables auflisten.

Indem Sie diese Schritte befolgen, können Sie sicherstellen, dass die Migration gut verläuft und dass Sie die zeitgemäßen Fähigkeiten von nftables optimal nutzen.

Wie konfiguriere ich nftables auf Ubuntu?

Die Einrichtung von nftables auf Ubuntu ist einfach, aber Sie müssen sich im Voraus vorbereiten, damit Sie sich nicht versehentlich aussperren. Hier ist eine Schritt-für-Schritt-Anleitung, wie man nftables auf einem Ubuntu-System installiert, einrichtet, aktiviert und testet.

1. Dinge, die Sie wissen müssen

Bevor Sie beginnen, stellen Sie sicher:

  • Sie verwenden Ubuntu 20.04 LTS oder eine neuere Version (nftables ist standardmäßig enthalten).

  • Du kannst Programme installieren und Systemeinstellungen ändern, weil du sudo-Rechte hast.

  • Wenn Ihr Server Dienste wie Webhosting oder SSH anbietet, hat er eine statische IP.

  • Wenn eine Fehlkonfiguration Sie aussperrt, können Sie weiterhin über die Konsole oder Out-of-Band auf das System zugreifen.

2. nftables einrichten

Die meisten Versionen von Ubuntu kommen mit nftables, aber wenn Sie es nicht haben, können Sie es mit folgendem Befehl installieren: # Aktualisieren Sie die Paketlisten und installieren Sie nftables

sudo apt update
sudo apt install -y nftables

Nach der Installation die Version bestätigen:

sudo nft --version

3. Speicherort der Konfigurationsdatei

Auf Ubuntu befindet sich die Hauptkonfigurationsdatei für nftables unter:

/etc/nftables.conf

Diese Datei wird beim Booten automatisch geladen, wenn der nftables-Dienst aktiviert ist. Sie können es mit Ihrem bevorzugten Texteditor (z.B. nano, vim) bearbeiten.

4. Erstellen Sie ein grundlegendes Regelwerk

Öffne die Konfigurationsdatei:

sudo nano /etc/nftables.conf

Fügen Sie das folgende minimale, aber funktionale Regelwerk ein:

#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain input {
type filter hook input priority 0; policy drop;
# Allow loopback
iif lo accept
# Allow established/related connections
ct state established,related accept
# Allow SSH
tcp dport 22 accept
# Allow HTTP/HTTPS
tcp dport {80,443} accept
# Drop everything else (default policy already drop)
}
chain forward {
type filter hook forward priority 0; policy drop;
}
chain output {
type filter hook output priority 0; policy accept;
}
}

Diese Konfiguration:

  • Verweigert standardmäßig allen eingehenden Verkehr.

  • Ermöglicht SSH, HTTP und HTTPS.

  • Akzeptiert Loopback-Verkehr und etablierte Verbindungen.

  • Leitet gesamten weitergeleiteten Verkehr ab (kein Router).

5. Aktivieren Sie den nftables-Dienst

Sobald Ihr Regelwerk bereit ist, aktivieren und starten Sie nftables, damit die Regeln beim Booten geladen werden:

sudo systemctl enable nftables
sudo systemctl start nftables
sudo systemctl status nftables

6. Teste deine Regeln

Nach dem Laden der Regeln die Konnektivität testen:

# Check that SSH is open
nc -zv <your_server_ip> 22
# Test HTTP and HTTPS
nc -zv <your_server_ip> 80
nc -zv <your_server_ip> 443

Sie können auch Zähler überprüfen, um zu sehen, welche Regeln den Datenverkehr erfassen:

sudo nft list ruleset

Suchen Sie nach Zähler-Einträgen, die sich erhöhen, wenn Pakete einer Regel entsprechen.

Um nftables auf Ubuntu zu konfigurieren:

  1. Erfüllen Sie die Voraussetzungen (Ubuntu 20.04+, sudo-Zugriff, statische IP).

  2. Installieren Sie nftables mit apt install nftables.

  3. Bearbeiten Sie /etc/nftables.conf, um Ihr Regelwerk zu definieren.

  4. Aktivieren und starten Sie den nftables-Dienst.

  5. Testen Sie SSH, HTTP und andere Dienste von einem Remote-Host aus.

Indem Sie diese Schritte befolgen, stellen Sie sicher, dass nftables installiert, richtig konfiguriert, nach Neustarts persistent und aktiv schützend für Ihr Ubuntu-System ist.

Wie verwendet man die iptables-nft-Kompatibilitätsschicht?

Die iptables-nft-Kompatibilitätsschicht ermöglicht es Administratoren, weiterhin traditionelle iptables-Befehle zu verwenden, während die tatsächlichen Firewall-Regeln im nftables-Backend implementiert werden. Dies erleichtert den Übergang von iptables zu nftables, ohne sofort bestehende Skripte oder Konfigurationen neu schreiben zu müssen.

Zweck der Kompatibilitätsschicht

Als nftables eingeführt wurde, hatten viele Organisationen bereits Jahre an Automatisierung, Skripten und Dokumentation rund um iptables aufgebaut. Um die Kompatibilität nicht zu brechen, stellt Linux iptables-nft-Binärdateien zur Verfügung, die iptables-Befehle im Hintergrund in nftables-Regeln übersetzen.

Das bedeutet, dass Sie weiterhin vertraute iptables-Befehle verwenden können, aber die zugrunde liegende Firewall von nftables verwaltet wird.

Ausführen von iptables-Befehlen auf dem nftables-Backend

Sie können überprüfen, welche Version von iptables aktiv ist (legacy oder nftables), indem Sie:

sudo update-alternatives --display iptables

Wenn iptables-nft ausgewählt ist, werden alle iptables-Befehle in nftables-Regeln übersetzt.

Beispiel — Hinzufügen einer SSH-Erlaubensregel mit iptables:

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

Obwohl dies wie ein iptables-Befehl aussieht, erzeugt es auf einem System mit aktivierten iptables-nft tatsächlich eine nftables-Regel. Sie können dies bestätigen mit:

sudo nft list ruleset

Sie werden die übersetzte Regel in der nftables-Konfiguration sehen.

Die Einschränkungen der Kompatibilitätsschicht

Die iptables-nft-Schicht ist nützlich, hat jedoch einige Probleme:

  • Nicht vollständig abgedeckt: Nicht alle fortgeschrittenen iptables-Module und -Erweiterungen funktionieren gut mit nftables.

  • Gemischte Umgebungen: Die gleichzeitige Verwendung von iptables-legacy und nftables-Regeln kann zu Problemen und Missverständnissen führen.

  • Keine modernen Funktionen: Wenn Sie ausschließlich die iptables-Syntax verwenden, können Sie die fortschrittlichen Funktionen von nftables wie Sets, Maps und atomare Updates nicht nutzen.

  • Komplexität beim Debuggen: Die Übersetzung erschwert das Verständnis von Fehlern, da sie die echten nftables-Regeln verbirgt.

Wann stattdessen direkt nftables verwenden

Die Kompatibilitätsschicht ist großartig, um die Migration zu erleichtern, aber die direkte Verwendung von nftables ist besser, wenn:

  • Einrichtung neuer Server (es gibt keine alten Skripte zu unterstützen).

  • Du möchtest weniger verwirrende Syntax und weniger Regeln, die gleich sind.

  • Du musst in der Lage sein, mit vielen IPs oder Ports zu skalieren.

  • Du brauchst atomare Updates, um partielle Neuladungen zu stoppen.

Zum Beispiel eine direkte nftables-Regel für mehr als einen Dienst:

nft add rule inet filter input tcp dport {22,80,443} accept

Diese eine Regel ersetzt drei iptables-Zeilen, was zeigt, dass die nftables-Syntax besser ist.

Die iptables-nft-Kompatibilitätsschicht ermöglicht es normalen iptables-Befehlen, auf einem nftables-Backend zu funktionieren, was den Umstieg einfach und problemlos macht. Es kann für alte Skripte und langsame Übergänge nützlich sein, aber es kann die neuen Funktionen von nftables nicht vollständig nutzen. Der beste Weg, nftables langfristig zu nutzen, ist der Wechsel zur nativen Syntax.

Wie richtet man eine Firewall mit iptables ein?

Die Einrichtung einer Firewall mit iptables beinhaltet die Festlegung klarer Regeln dafür, wie eingehender, ausgehender und weitergeleiteter Datenverkehr behandelt werden soll. Die folgende Schritt-für-Schritt-Anleitung hilft Ihnen, eine grundlegende, aber sichere iptables-Firewall auf einem Linux-System zu konfigurieren.

1. Überprüfen Sie die iptables-Installation

Die meisten Distributionen enthalten iptables standardmäßig. Um zu bestätigen, dass es verfügbar ist:

sudo iptables --version

Wenn es fehlt, installieren Sie es:

sudo apt install iptables # Ubuntu/Debian
sudo yum install iptables # CentOS/RHEL

2. Bestehende Regeln löschen

Bevor Sie ein neues Regelset erstellen, löschen Sie alle bestehenden Regeln, um Konflikte zu vermeiden:

sudo iptables -F
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X

Dies setzt alle Regeln und Ketten in den Filter- und NAT-Tabellen zurück.

3. Standardrichtlinien festlegen

Beginnen Sie immer damit, das Standardverhalten für den Datenverkehr festzulegen:

sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
  • Eingehender Verkehr wird standardmäßig blockiert.

  • Weitergeleiteter Verkehr wird blockiert, es sei denn, er wird ausdrücklich erlaubt.

  • Ausgehender Verkehr ist erlaubt.

4. Loopback-Verkehr zulassen

Die Loopback-Schnittstelle (lo) wird benötigt, damit lokale Anwendungen miteinander kommunizieren können.

sudo iptables -A INPUT -i lo -j ACCEPT

5. Erlauben Sie etablierte und verwandte Verbindungen

Um legitime Verbindungen nicht zu unterbrechen, erlauben Sie den Verkehr, der Teil einer bestehenden Sitzung ist:

sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

6. Erlauben Sie wesentliche Dienstleistungen

Entscheiden Sie, welche Dienste erreichbar sein sollen. Zum Beispiel:

  • SSH (Port 22):

    sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  • HTTP/HTTPS (Ports 80, 443):

    sudo iptables -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT

7. Aktivieren Sie das Protokollieren von verworfenen Paketen

Für die Prüfung, protokollieren Sie die verworfenen Pakete:

sudo iptables -A INPUT -j LOG --log-prefix "IPTABLES-DROP: " --log-level 4

Dies hilft, verdächtige Aktivitäten in den Systemprotokollen zu verfolgen.

8. Regeln speichern und dauerhaft machen

iptables-Regeln werden nach einem Neustart zurückgesetzt, es sei denn, sie werden gespeichert. Verwenden Sie eine der folgenden Methoden:

  • Auf Ubuntu/Debian (mit iptables-persistent):

    sudo apt install iptables-persistent
    sudo netfilter-persistent save
  • Auf CentOS/RHEL:

    sudo service iptables save

9. Überprüfen Sie das Regelwerk

Listen Sie die aktuellen Firewall-Regeln mit:

sudo iptables -L -v -n

Überprüfen Sie das:

  • SSH und HTTP(S) sind erlaubt.

  • Anderer Verkehr wird verworfen.

  • Protokollierungsregeln sind aktiv.

Zusammenfassung der Beispiel-Firewall-Regeln

Hier ist eine kompakte Version eines grundlegenden sicheren Regelwerks:

sudo iptables -F
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT
sudo iptables -A INPUT -j LOG --log-prefix "IPTABLES-DROP: "

Dies stellt sicher:

  • Nur SSH, HTTP und HTTPS sind erlaubt.

  • Alle anderen eingehenden Datenverkehr wird abgelehnt und protokolliert.

  • Der ausgehende Datenverkehr ist standardmäßig kostenlos.

Wie schreibt man eine nftables-Regelsatz?

Ein nftables-Regelsatz ist eine Menge von Regeln, die dem Netfilter-Framework des Linux-Kernels mitteilt, wie Pakete gefiltert, übersetzt oder protokolliert werden sollen. Es gibt Tabellen, die Ketten enthalten, und jede Kette hat Regeln. Eine Regel überprüft die Bedingungen eines Pakets (IP, Port, Protokoll) und führt dann eine Aktion aus (akzeptieren, verwerfen, ablehnen, protokollieren).

1. Struktur eines nftables-Regelsatzes

Die Hierarchie ist:

  • Tabelle → Gruppiert verwandte Ketten (z.B. inet-Filter).

  • Kette → Definiert einen Haken (z.B. input, forward, output), an dem Pakete inspiziert werden.

  • Regel → Entspricht Bedingungen und wendet Aktionen an.

Diese schichtartige Struktur gewährleistet Klarheit und Modularität.

2. Schreiben eines grundlegenden Regelwerks

Um eine saubere Konfiguration zu starten, löschen Sie zuerst alle vorhandenen Regeln:

sudo nft flush ruleset

Erstellen Sie nun ein minimales Regelset in /etc/nftables.conf:

#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain input {
type filter hook input priority 0; policy drop;
# Allow loopback
iif lo accept
# Allow established connections
ct state established,related accept
# Allow SSH
tcp dport 22 accept
# Allow HTTP/HTTPS
tcp dport {80,443} accept
# Log and drop everything else
limit rate 10/second log prefix "NFT-DROP: " group 0
drop
}
chain forward {
type filter hook forward priority 0; policy drop;
}
chain output {
type filter hook output priority 0; policy accept;
}
}

Dieses Regelwerk:

  • Verwirft standardmäßig gesamten eingehenden Datenverkehr.

  • Ermöglicht Loopback- und etablierte Verbindungen.

  • Öffnet SSH, HTTP und HTTPS.

  • Protokolliert und verwirft alle anderen eingehenden Pakete.

  • Akzeptiert allen ausgehenden Verkehr.

Sie können es laden mit:

sudo nft -f /etc/nftables.conf

Und überprüfen mit:

sudo nft list ruleset

3. Verwendung von Mengen zur Effizienz

Anstatt Regeln für mehrere Ports oder IP-Adressen zu wiederholen, ermöglicht nftables, sie in Gruppen zusammenzufassen:

table inet filter {
set allowed_ports {
type inet_service;
elements = {22, 80, 443}
}
chain input {
type filter hook input priority 0; policy drop;
tcp dport @allowed_ports accept
}
}

Hier sind SSH, HTTP und HTTPS mit einer einzigen Regel erlaubt. Dies reduziert die Duplizierung und verbessert die Skalierbarkeit.

4. Persistieren des Regelsets

Um sicherzustellen, dass Ihre Regeln beim Neustart geladen werden:

sudo systemctl enable nftables
sudo systemctl start nftables

nftables wird beim Booten automatisch den Inhalt von /etc/nftables.conf laden.

tipp

Testen Sie neue Regeln immer mit einer aktiven SSH-Sitzung und halten Sie eine Konsole offen. Wenn Sie versehentlich den SSH-Verkehr unterbrechen, könnten Sie sich aussperren.

Um ein nftables-Regelsatz zu schreiben, müssen Sie eine organisierte Konfigurationsdatei erstellen, die Tabellen, Ketten und Regeln definiert. Eine einfache sichere Konfiguration umfasst:

  • Festlegen von Standardrichtlinien (typischerweise DROP für Eingaben).

  • Zugelassenen Verkehr und Loopback-Verkehr durchlassen.

  • Notwendige Dienste wie SSH und HTTP/HTTPS öffnen.

  • Protokollierung und das Loswerden von allem anderen.

Administratoren können mit nftables effizientere, skalierbarere und leichter zu verwaltende Firewall-Regelsätze erstellen als mit iptables. Dies ist möglich, weil nftables Sets, atomare Updates und eine konsistente Syntax hat.

Wie konfiguriert man firewalld in Linux?

In Linux wird das Tool firewall-cmd verwendet, um firewalld einzurichten. Dies ermöglicht es Administratoren, Firewall-Zonen zu steuern, Dienste oder Ports hinzuzufügen und komplexe Regeln im laufenden Betrieb festzulegen, ohne den Firewall-Dienst neu starten zu müssen. Sie können Konfigurationen einrichten, die vorübergehend für Tests oder dauerhaft sind, damit sie nach einem Neustart gleich bleiben.

1. Einrichtung mit firewall-cmd

Der Befehl firewall-cmd ist die Hauptschnittstelle zu firewalld. Stellen Sie zunächst sicher, dass der Dienst läuft:

sudo systemctl start firewalld
sudo systemctl enable firewalld
sudo firewall-cmd --state
  • starten → startet firewalld.

  • enable → stellt sicher, dass firewalld beim Booten startet.

  • --state → bestätigt, ob firewalld aktiv (laufend) ist.

2. Auswählen und Konfigurieren von Zonen

Zonen sind vordefinierte Vertrauensstufen, die bestimmen, wie restriktiv die Firewall-Regeln sind. Beispiele: öffentlich, zu Hause, Arbeit, intern, DMZ.

Liste aller verfügbaren Zonen:

sudo firewall-cmd --get-zones

Überprüfen Sie die standardmäßig aktive Zone:

sudo firewall-cmd --get-default-zone

Weisen Sie eine Netzwerkschnittstelle einer bestimmten Zone zu (z.B. eth0 zu public):

sudo firewall-cmd --zone=public --change-interface=eth0

3. Hinzufügen von Diensten, Ports oder erweiterten Regeln

Hier finden Sie, wie Sie Dienste, Ports und erweiterte Regeln hinzufügen können:

Fügen Sie einen vordefinierten Dienst hinzu (z.B. SSH):

sudo firewall-cmd --zone=public --add-service=ssh

Fügen Sie einen Port manuell hinzu (z.B. HTTP-Port 8080):

sudo firewall-cmd --zone=public --add-port=8080/tcp

Fügen Sie eine erweiterte Regel hinzu (erlauben Sie SSH nur von einem Subnetz):

sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.0.2.0/24" service name="ssh" accept'

Diese Befehle treten sofort in Kraft, sind jedoch vorübergehend, es sei denn, sie werden dauerhaft gemacht.

4. Konfiguration dauerhaft machen

Um Ihre Änderungen nach einem Neustart beizubehalten, fügen Sie das --permanent-Flag hinzu und laden Sie firewalld neu.

Beispiel — HTTPS dauerhaft erlauben:

sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --reload
  • --permanent speichert die Regel in der Konfiguration von firewalld.

  • --reload wendet alle permanenten Regeln an, ohne den Dienst neu zu starten.

Um firewalld in Linux einzurichten,

  1. Verwenden Sie systemctl, um den Dienst zu starten und zu aktivieren.

  2. Richten Sie Zonen ein, die dem Vertrauensniveau entsprechen, das Sie in Ihr Netzwerk haben.

  3. Verwenden Sie firewall-cmd, um Dienste, Ports oder erweiterte Regeln im laufenden Betrieb hinzuzufügen.

  4. Um Anpassungen dauerhaft zu machen, verwenden Sie die Option --permanent und dann die Option --reload.

Diese Methode stellt sicher, dass die Firewall vielseitig und anpassungsfähig ist, sodass sie sowohl in einfachen als auch in komplexen Netzwerkumgebungen ohne Ausfallzeiten funktioniert.

Was sind die Vorteile der Verwendung von iptables?

iptables ist das altmodische Werkzeug zum Skripten von Netfilter direkt aus dem Benutzerspeicher. Seine Stärken sind, dass es ausgereift, weit verbreitet und bietet Ihnen eine niedrige Kontrolle.

  • Allgegenwart und Vertrautheit: Es ist auf fast jeder Linux-Distribution und in Rettungsumgebungen verfügbar, und es gibt viele Beispiele und Dokumentationen.
  • Feinkörnige Kontrolle: Sie können Regeln direkt und klar für jedes Protokoll, jeden Port und jede IP-Adresse erstellen, mit Übereinstimmungen und Zielen, die leicht zu verstehen sind.
  • Vorhersehbares Verhalten: Es ist einfacher, das Verhalten zu verstehen, weil die Regeln der Reihe nach bewertet werden und Standardrichtlinien festgelegt sind.
  • Reife Erweiterungen: Dies sind bewährte Übereinstimmungen wie conntrack, multiport, recent, hashlimit und NAT-Primitiven.
  • Kompatibilität mit alten Systemen: Funktioniert mit alter Automatisierung (Bash-Skripte, Konfigurationsausschnitte) mit wenigen oder keinen Anpassungen.
  • Wenige Abhängigkeiten: Es hat einen kleinen Fußabdruck und kann in begrenzten, chrooted oder initramfs-Umgebungen ausgeführt werden.
  • Einfach Probleme zu beheben—Paketzähler auf Ketten, einfache -L -v -n Auflistungen und Protokolle, die leicht zu lesen sind.

Was sind die Vorteile der Verwendung von nftables?

nftables ist das neue Firewall-Framework (Kernel 3.13+) und das nft-Tool, das iptables durch ein einziges, skalierbares Regelwerk ersetzt.

  • Einzelnes Regelset-Modell: Es gibt nur eine Konfiguration für IPv4/IPv6 (über family inet), ARP und Bridge. Es gibt keine doppelten v4/v6-Regeln.
  • Weniger Duplikation: Mengen und Maps ermöglichen es Ihnen, mehrere IPs und Ports in einer Regel auszudrücken, was die Richtlinien klarer und kürzer macht.
  • Leistung: schnelle Suchen (Sets/Hash-Strukturen), weniger lineare Scans und atomisches Laden des gesamten Regelsets.
  • Wartbarkeit: Standardmäßig sind die Dateien strukturiert (/etc/nftables.conf), die Syntax ist leicht verständlich, Objekte haben Namen und es gibt Regelzähler.
  • Transaktionssicherheit: Sie können das gesamte Regelwerk in einem Schritt anwenden oder zurücksetzen, ohne "halbangewendete" Fenster.
  • Zukunftssicherheit: Die Semantik ist erweiterbar, und der Kernel wird aktiv weiterentwickelt. Es gibt eine Kompatibilitätsschicht für alte iptables-Aufrufe.
  • Dual-Stack Einfachheit: In inet deckt eine Allow-Regel (wie tcp dport 22) sofort sowohl IPv4 als auch IPv6 ab.

Was sind die Vorteile von firewalld?

firewalld ist ein Daemon, der Netfilter in Echtzeit steuert (unter Verwendung von nftables oder iptables) und Zonen und Dienste für die Benutzer einfacher macht.

  • Abstraktion und Benutzerfreundlichkeit: Anstelle von Low-Level-Matches und Zielen verwalten Sie Absichten, wie "SSH im öffentlichen Bereich erlauben."
  • Zonen nach Kontext: Sie können die Vertrauensstufen für jede Schnittstelle oder Quelle (zum Beispiel öffentlich, Zuhause, intern oder DMZ) jederzeit ändern.
  • Vordefinierte Dienste: Das Gruppieren von Ports und Protokollen (wie SSH, HTTP und DNS) im Voraus macht Änderungen schneller und weniger fehleranfällig.
  • Laufzeit vs. Permanent: Testen Sie die Regeln sofort, und verwenden Sie dann weiterhin --permanent + --reload; keine Verbindungsabbrüche.
  • Dynamischer Daemon: Änderungen treten sofort in Kraft, ohne bestehende Verbindungen zu schließen.
  • Systemintegration: Network Manager (für automatisches Zonenwechseln) und systemd (für den Lebenszyklus von Diensten) arbeiten sehr gut zusammen.
  • Reiche Regeln nach Bedarf —Erweiterte Zuordnung (pro IP, pro Dienst) ohne Verlust des höherstufigen Modells.
  • Teamfreundlich—D-Bus bietet eine konsistente CLI und API über alle Distributionen hinweg, was es Teams mit unterschiedlichen Erfahrungsstufen und für die Automatisierung erleichtert.

Welche Linux-Firewall ist die beste für Server?

"Best" hängt von der Lebensdauer, den Fähigkeiten des Teams, den Anforderungen der Leistung und den Mängeln der Verteilung ab. Wählen Sie das Werkzeug, das am besten für Ihr Unternehmen funktioniert, und bleiben Sie dann dabei.

  • Neue Builds auf modernen Distributionen (RHEL 8+, Debian 10+, und Ubuntu 20.04+)

    Vorschlag: nftables (nativ). Mit einheitlichen v4/v6-Regeln und transaktionalen Ladevorgängen ist dies der moderne Weg des Kernels.

  • Teams mit unterschiedlichen Fähigkeiten und häufigen Veränderungen

    Empfehlung: Verwenden Sie firewalld mit nftables. Sichere Updates für Zonen und Dienste beschleunigen; Laufzeit vs. permanent senkt das Risiko.

  • Alte oder vom Anbieter skriptbasierte Hosts

    Empfehlung: Beginnen Sie mit der iptables-nft-Kompatibilität, damit die aktuellen Skripte funktionieren. Dann planen Sie eine schrittweise Umstellung auf nftables.

  • Hohe Durchsatzrate und große Regelmengen

    Empfehlung: Für Leistung und Skalierbarkeit empfehlen wir nftables (native Sets/Maps, atomare Updates).

  • Strikte Einhaltung und Prüfungsfähigkeit

    Empfehlung: Verwenden Sie nftables (klare, versionierbare Konfiguration) oder firewalld (Richtlinienabsicht + Protokolle). Mischen Sie keine Backends.

  • Router und NAT-Gateways

    Empfehlung: Verwenden Sie nftables für eine saubere NAT- und Filtertrennung sowie mögliche Leistungsverbesserungen wie ein flussorientiertes Design.

  • Geräte-, Rettungs- und Minimalumgebungen

    Vorschlag: iptables können immer noch nützlich sein, weil sie überall sind und sehr wenig Platz einnehmen—verwenden Sie sie als vorübergehende Lösung.

Welche Linux-Firewall ist am besten für Anfänger?

Firewalld ist die beste Linux-Firewall für Anfänger, da sie eine einfache, zonenbasierte Schnittstelle auf dem ausgeklügelten Netfilter-Framework bietet. Nftables ist das modernste Backend, während iptables für viele Menschen immer noch erkennbar ist. Allerdings ist firewalld der einfachste Weg für neue Benutzer, ihre Systeme zu schützen, ohne komplizierte Syntax lernen zu müssen.

Funktionen, die für Anfänger leicht zu bedienen sind

Eine Firewall, die für Anfänger einfach zu bedienen ist, sollte:

  • Grundlegende Befehle geben, die kein umfangreiches Netzwerkverständnis erfordern.

  • Den Benutzern vordefinierte Regeln und Dienste geben, damit sie sich keine Ports merken müssen.

  • Nehmen Sie Anpassungen im laufenden Betrieb vor, ohne neu starten zu müssen, was die Gefahr von Sperrungen verringert.

  • Gut mit den Netzwerkverwaltungstools des Systems zusammenarbeiten.

Firewalld erfüllt all diese Anforderungen, was es für neue Administratoren weniger einschüchternd macht.

Die einfache Schnittstelle von firewalld

Firewalld lässt die Benutzer keine rohen iptables- oder nftables-Regeln schreiben. Stattdessen gibt es ihnen bequeme Anweisungen über firewall-cmd. Zum Beispiel ist es einfach, den SSH-Zugriff zu aktivieren:

sudo firewall-cmd --zone=public --add-service=ssh

Es ist nicht nötig, sich daran zu erinnern, dass SSH Port 22/TCP verwendet—die Dienstdefinition ist eingebaut.

Einfachheit der Regelverwaltung mit Zonen

Firewalld fügt Zonen hinzu, die zeigen, wie sehr Sie verschiedenen Netzwerken vertrauen.

Zum Beispiel:

  • Heimzone: vertrauensvoll, offener.

  • Öffentliche Zone: nicht vertrauenswürdig, strenger.

  • DMZ-Zone: Server, die für die Öffentlichkeit zugänglich sind, aber eingeschränkten Zugriff haben.

Es ist einfach, einer Zone eine Netzwerkschnittstelle bereitzustellen:

sudo firewall-cmd --zone=home --change-interface=eth0

Dies ermöglicht es Anfängern, das Verhalten der Firewall kontextabhängig zu steuern („Ich bin zu Hause“ vs. „Ich bin im öffentlichen WLAN“), anstatt Regeln manuell zu erstellen.

Warum nftables anfangs schwieriger sein könnte

Nftables ist das aktuelle, skalierbare Firewall-Backend, obwohl seine Syntax komplexer ist und Kenntnisse über Tabellen, Ketten und Mengen erfordert. Zum Beispiel, so öffnet man SSH in nftables:

nft add rule inet filter input tcp dport 22 accept

Das ist kurz und prägnant, aber für Anfänger können Wörter wie "Tisch," "Kette" und "Haken" schwer zu verstehen sein.

iptables hingegen ist älter und hat eine Menge Dokumentation, aber seine lange und wiederholte Syntax (getrennte IPv4- und IPv6-Regeln) macht es neuen Benutzern schwerer, Schritt zu halten.

Firewalld ist die ideale Wahl für Anfänger, da es eine einfache Benutzeroberfläche und leicht zu merkende Befehle hat.

  • Verwendet Zonen und Dienste, um das Schreiben von Regeln weniger kompliziert zu machen.

  • Nimmt Anpassungen im laufenden Betrieb vor, ohne Verbindungen neu starten zu müssen.

  • Funktioniert auf nftables, sodass selbst neue Benutzer das moderne Backend nutzen können.

Sie müssen mehr über Netzwerke wissen, um nftables und iptables angemessen nutzen zu können. Firewalld ist die beste Wahl für Anfänger, da es einfach zu bedienen ist und ihnen Vertrauen gibt. Wenn sie besser werden, können sie zu nftables wechseln.

Was sind häufige Fehler, die bei der Konfiguration von iptables oder nftables vermieden werden sollten?

Das Einrichten von Firewalls in Linux ist mächtig, kann aber zu Fehlern führen. Wenn Regeln nicht korrekt angewendet werden, können sowohl iptables als auch nftables Ausfälle oder Sicherheitslücken verursachen. Die folgenden sind die häufigsten Fehler und wie man sie vermeidet.

Vergessen von Standardrichtlinien:

  • Definition: Wenn Sie die Standardrichtlinien auf ACCEPT belassen, wird der gesamte nicht übereinstimmende Verkehr akzeptiert, was das System gefährdet.

  • Lösung: Setzen Sie immer starke Standardwerte (wie DROP für INPUT und FORWARD und ACCEPT für OUTPUT) und lassen Sie dann die von Ihnen benötigten Dienste arbeiten.

Sich selbst aus SSH aussperren

  • Definition: Wenn Sie eine DROP-Richtlinie verwenden, ohne zuerst SSH zu erlauben, könnten Sie den Zugriff auf einen Remote-Server verlieren.

  • Lösung: Bevor Sie eine Drop-Policy aktivieren, fügen Sie SSH-Regeln hinzu. Beim Testen eine zweite Konsolensitzung offen halten.

Missmanagement der Regelreihenfolge

  • Definition: In iptables werden die Regeln nacheinander überprüft. Bei nftables spielt die Priorität immer noch eine Rolle. Wenn die Reihenfolge nicht korrekt ist, könnten Pakete mit der falschen Regel übereinstimmen.

  • Lösung: Stellen Sie spezifische Regeln über allgemeine und überprüfen Sie gründlich die Logik der Kette.

Kopieren von IPv4- und IPv6-Regeln (iptables)

  • Definition: Administratoren schützen oft IPv4 mit iptables, vergessen aber ip6tables, wodurch IPv6 ungeschützt bleibt.

  • Lösung: Verwenden Sie immer dieselben Regeln für sowohl IPv4 als auch IPv6, oder wechseln Sie zur inet-Familie von nftables, um beide in einem Regelwerk abzudecken.

Zu häufiges Verwenden von DROP ohne Protokollierung

  • Definition: Den Datenverkehr ohne Benachrichtigung zu blockieren, macht es unmöglich, Angriffe oder Fehlkonfigurationen zu erkennen.

  • Lösung: Bevor Pakete verworfen werden, verwenden Sie Protokollierungsregeln (LOG in iptables, log in nftables) und setzen Sie, wenn möglich, eine Ratenbegrenzung.

Regeln lange nicht gespeichert

  • Definition: Regeln, die interaktiv hinzugefügt werden, verschwinden nach einem Neustart, wenn sie nicht gespeichert werden.

  • Lösung: Verwenden Sie iptables-save und iptables-persistent mit iptables.

    nftables: /etc/nftables.conf einrichten und den nftables-Dienst aktivieren.

Kombination von alten und neuen Backends

  • Definition: Die gleichzeitige Verwendung von iptables-legacy und nftables führt zu Regelsets, die nicht zusammenarbeiten.

  • Lösung: Wählen Sie während der Migration entweder ein Backend oder nutzen Sie die iptables-nft-Kompatibilitätsschicht, aber nicht beides.

Keine Beachtung der etablierten oder verwandten Verbindungen

  • Definition: Legitime Antworten (wie Webantworten) sind verboten, wenn es keine Regel gibt, die ETABLIERTEN, VERBUNDENEN Verkehr erlaubt.

  • Fix: Setzen Sie immer eine Regel zum Verfolgen von Verbindungen an den Anfang Ihrer INPUT-Kette.

Regeln, die zu kompliziert sind

  • Definition: Regelungen zu erstellen, die zu lang oder zu komplex sind, erhöht die Wahrscheinlichkeit von Fehlern und verlangsamt die Abläufe.

  • Lösung: Verwenden Sie Sets/Maps in nftables oder iptables' Multiport/IPSet, um Regeln auf eine Weise zu kombinieren, die gut funktioniert.

Nicht auf externen Hosts testen

  • Definition: Das Testen nur von localhost aus bricht die INPUT-Regeln, was Ihnen ein falsches Sicherheitsgefühl geben kann.

  • Lösung: Testen Sie immer Änderungen an der Firewall von einem Computer aus, der nicht im Netzwerk ist.

Wie testen Sie, ob Ihre Linux-Firewall-Regeln korrekt funktionieren?

Es ist ebenso wichtig, Firewall-Regeln zu testen, wie sie zu schreiben. Ohne Validierung können Sie nicht sicher sein, dass Ihre Richtlinien die richtige Balance zwischen Sicherheit und Zugänglichkeit finden. Hier ist eine nützliche Liste von Dingen, die Sie überprüfen sollten, um sicherzustellen, dass Ihre Firewall ordnungsgemäß funktioniert.

1. Stelle sicher, dass du Bestätigung brauchst

Firewalls könnten versehentlich wichtige Dienste (wie SSH) blockieren oder schadhafte Ports offen lassen.

  • Die Validierung stellt sicher, dass Ihre Firewall-Regeln mit Ihrer Sicherheitsrichtlinie übereinstimmen.

  • Testen Sie immer nach Änderungen an den Regeln, nach einem Update des Betriebssystems oder nach einem Umstieg (zum Beispiel von iptables auf nftables).

2. Testen der grundlegenden Konnektivität (ping, curl, netcat)

Beginnen Sie mit einfachen Netzwerk-Tools, um zu bestätigen, welche Ports offen und welche blockiert sind.

# Ping a host to test ICMP
ping -c 4 <server_ip>
# Use curl to test HTTP/HTTPS access
curl -I http://<server_ip>
curl -I https://<server_ip>
# Use netcat to probe open ports (example: SSH, HTTP)
nc -zv <server_ip> 22
nc -zv <server_ip> 80
  • Erwartet: Erlaubte Dienste antworten, blockierte Dienste laufen ab oder verweigern Verbindungen.

3. Verwenden Sie Protokollierung und Überwachung

Nutzen Sie Protokollierungsregeln, um zu sehen, wie Pakete verarbeitet werden.

  • iptables-Beispiel:

    sudo iptables -A INPUT -j LOG --log-prefix "IPTABLES-TEST: "
  • nftables-Beispiel:

    sudo nft add rule inet filter input log prefix "NFT-TEST: " counter

Überprüfen Sie die Protokolle in Echtzeit:

sudo journalctl -k -f
  • Protokolle zeigen, ob Pakete gemäß Ihren Regeln akzeptiert oder verworfen werden.

4. Simulation im Staging vor der Produktion

  • Bevor Sie Firewall-Regeln in die Produktion übernehmen, verwenden Sie sie zuerst in einer Staging- oder Testumgebung.

  • Um zu sehen, wie die Regeln funktionieren, verwenden Sie dasselbe Betriebssystem und dieselbe Netzwerkkonfiguration.

  • Verwenden Sie sowohl automatische Testskripte als auch menschliche Inspektionen (SSH, HTTP, DNS).

Wie vergleichen sich Leistung und Ressourcennutzung zwischen iptables und nftables?

Wenn es darum geht, große Regelsets zu verwalten, ist nftables in Bezug auf Skalierbarkeit, Speichereffizienz und Regelbewertungs-Geschwindigkeit besser als iptables. Beide Frameworks verwenden das Netfilter-Kernel-Subsystem, aber nftables bringt Verbesserungen mit sich, die die Anzahl der benötigten CPU-Zyklen pro Paket verringern, weniger Speicher für große Regelkollektionen verwenden und Regeln schneller überprüfen.

Zu berücksichtigende Leistungskennzahlen

Beim Vergleich von iptables und nftables sind die wichtigsten Metriken:

  • CPU-Auslastung → Wie viele Zyklen werden pro Paketinspektion verbraucht.

  • Speicherverbrauch → Wie viel RAM benötigt wird, um aktive Regelsets zu speichern.

  • Regelbewertungszeit → Wie schnell Pakete mit den Regeln abgeglichen werden.

  • Skalierbarkeit → Wie die Leistung ausfällt, wenn die Anzahl der Regeln in die Tausende steigt.

Vergleichende Benchmarks

Benchmarks zeigen, dass in realen Systemen:

  • iptables: Regeln werden für jedes Paket einzeln überprüft. Wenn es Hunderte oder Tausende von Regeln gibt, dauert die Auswertung länger. Die Menge des verwendeten Speichers steigt ebenfalls linear mit der Anzahl der Regeln.

  • nftables: Verwendet Hash-Tabellen, Maps und Sets, um Dinge nachzuschlagen. Eine einzelne Regel kann viele IPs oder Ports abdecken, was die Wiederholung erheblich reduziert. Selbst bei großen Datensätzen wird die Regelbewertung fast immer in konstanter Zeit durchgeführt.

Zum Beispiel, wenn Sie 1.000 IP-Blockregeln mit iptables haben, benötigen Sie 1.000 verschiedene Regeln und die CPU-Auslastung steigt, wenn viel Verkehr herrscht.

1.000 IP-Blockregeln mit nftables → in einem Set-Objekt angezeigt, das weniger Speicherplatz benötigt und schneller ausgewertet wird.

Beispiel: nftables-Set mit mehreren blockierten IPs

table inet filter {
set blacklist {
type ipv4_addr;
elements = { 203.0.113.5, 198.51.100.10, 192.0.2.50 }
}
chain input {
type filter hook input priority 0; policy accept;
ip saddr @blacklist drop
}
}

Hier verarbeitet nftables mehrere IPs mit einer kompakten Regel, während iptables drei separate Regeln benötigen würde.

Wie nftables den Overhead reduziert

  • Das einheitliche Regelwerk beseitigt die Redundanz zwischen IPv4 und IPv6.
  • Sets/Maps kombinieren mehrere Bedingungen in einer Regel.
  • Atomare Updates stellen sicher, dass es während des Neuladens keine Probleme gibt.
  • Eingebaute Zähler erleichtern die Überwachung, ohne zusätzliche Regeln hinzuzufügen.

Im Vergleich zu ähnlichen iptables-Regeln verbrauchen all diese weniger CPU-Zyklen und weniger RAM pro Paket.

Skalierbarkeit für viele Regeln

  • iptables: Die Leistung sinkt, wenn es mehr als ein paar hundert Regeln gibt. Das Überprüfen der Regeln in der Reihenfolge fügt viel Latenz hinzu.
  • nftables: Seine Datenstrukturen erleichtern die Verwaltung von Tausenden von Einträgen. Große Blacklists (IPs, Ports) sind erheblich einfacher zu handhaben und schneller.

Wie verwaltet firewalld Zonen und Dienste?

Firewalld gruppiert Firewall-Regeln in "Zonen" (Vertrauensstufen) und "Dienste" (vordefinierte Regelgruppen). Zonen steuern, wie streng die Firewall ist, und Dienste verbinden gängige Anwendungen (wie SSH oder HTTP) mit den richtigen Ports und Protokollen. Administratoren können die den Zonen zugewiesenen Schnittstellen ändern, ohne die Firewall neu starten zu müssen.

Verfügbar Vordefinierte Zonen auf firewalld

firewalld wird mit mehreren vordefinierten Zonen geliefert, die jeweils ein unterschiedliches Vertrauensniveau repräsentieren:

  • drop → sämtlicher eingehender Verkehr wird verworfen, nur ausgehender ist erlaubt.
  • block → ähnlich wie drop, aber mit einer ICMP-Nachricht abgelehnt.
  • öffentlich → untrusted Netzwerke, erlauben nur ausdrücklich aktivierte Dienste.
  • extern → verwendet für NAT oder Maskierung.
  • dmz → für öffentlich zugängliche Server mit eingeschränktem Zugang.
  • Arbeit → vertrauenswürdiger, erlaubt einige Dienste.
  • Zuhause → vertrauenswürdige häusliche Umgebung, nachsichtiger.
  • intern → voll vertrauenswürdige interne Netzwerke.
  • vertrauenswürdig → sämtlicher Verkehr wird akzeptiert.

Listen Sie die Zonen auf Ihrem System auf:

sudo firewall-cmd --get-zones

Wie Dienste auf Regeln abgebildet werden

Dienste in firewalld sind vordefinierte Sammlungen von Ports und Protokollen, sodass Sie sich keine spezifischen Portnummern merken müssen.

Zum Beispiel:

  • ssh → TCP-Port 22
  • http → TCP-Port 80
  • https → TCP-Port 443

SSH in der öffentlichen Zone erlauben:

sudo firewall-cmd --zone=public --add-service=ssh

Dieser Befehl erstellt automatisch die zugrunde liegenden nftables/iptables-Regeln für Port 22/TCP.

Liste aller verfügbaren Dienstleistungen:

sudo firewall-cmd --get-services

Zuweisen von Schnittstellen zu Zonen

Schnittstellen sind an Zonen gebunden, damit die Firewall weiß, welche Regeln je nach Verbindung des Systems anzuwenden sind.

Überprüfen Sie die Standardzone:

sudo firewall-cmd --get-default-zone

Weisen Sie eine bestimmte Schnittstelle (z.B. eth0) der Heimatzone zu:

sudo firewall-cmd --zone=home --change-interface=eth0

Überprüfen Sie die Schnittstellenzuweisungen:

sudo firewall-cmd --get-active-zones

Dynamische Neuzuweisung

firewalld ist dynamisch, was bedeutet, dass Sie Schnittstellen oder Dienste neu zuweisen können, ohne die Firewall neu zu starten oder Verbindungen zu verlieren.

Beispiel — Verschieben von eth0 von der öffentlichen Zone in die interne Zone im laufenden Betrieb:

sudo firewall-cmd --zone=internal --change-interface=eth0

Diese Änderung ist sofort und unterbricht keine bestehenden Sitzungen.

Ist nftables schneller als iptables?

Ja, nftables ist schneller als iptables, insbesondere bei der Arbeit mit großen oder komplizierten Regelsets. Beide verwenden das Netfilter-Framework im Linux-Kernel, aber nftables fügt Optimierungen und Datenstrukturen auf Kernel-Ebene hinzu, die es schneller und skalierbarer machen.

  • Leistungsbenchmarks von iptables überprüft Regeln einzeln, was bedeutet, dass jedes Paket nacheinander mit jeder Regel verglichen wird. Wenn es Hunderte oder Tausende von Regeln gibt, steigt die CPU-Auslastung erheblich.

    • nftables verwendet Hash-Tabellen, Mengen und Maps, um Suchen zu beschleunigen, was die Leistung fast unabhängig von der Anzahl der Regeln konstant hält.
  • Wie gut funktionieren Regeln in der realen Welt?

    • Um 1.000 IP-Adressen mit iptables zu blockieren, benötigt man 1.000 Regeln.
    • Wie gut funktionieren Regeln in der realen Welt? Mit nftables gilt eine Regel für eine einzige Sammlung von Blocklisten.
    • Dies reduziert sowohl den Speicherbedarf als auch die Zeit, die zur Auswertung der Pakete benötigt wird. Dies reduziert sowohl die Menge des verwendeten Speichers als auch die Zeit, die benötigt wird, um Pakete auszuwerten.

    Beispiel: nftables setzen, um mehrere IPs zu blockieren

    table inet filter {
    set blacklist {
    type ipv4_addr;
    elements = { 203.0.113.5, 198.51.100.10, 192.0.2.50 }
    }
    chain input {
    type filter hook input priority 0; policy accept;
    ip saddr @blacklist drop
    }
    }
  • Verbesserung großer Mengen

    • nftables kombiniert viele Kriterien (Ports, IPs, Netzwerke) in kleine Mengen.
    • iptables benötigt separate Regeln für jede Instanz, was bedeutet, dass Regeln wiederholt werden und länger zur Auswertung benötigen.
  • Änderungen auf Kernel-Ebene

    • nftables wurde so entwickelt, dass atomare Regelaktualisierungen ermöglicht werden, was inkonsistente Zustände beim Neuladen verhindert.
    • Echtzeit-Transparenz mit reduziertem Overhead ist dank integrierter Zähler und Überwachung möglich.
    • Sein Motor ist auf moderne Aufgaben wie Cloud-Firewalls, Container und die Filterung mehrerer Protokolle abgestimmt.

Kurz gesagt, nftables ist schneller und effizienter als iptables, weil es die Duplizierung reduziert, Regeln klüger nutzt und Tausende von Regeln besser verarbeiten kann, alles dank Fortschritten auf Kernel-Ebene.

Ersetzt firewalld vollständig iptables?

Nein, firewalld ersetzt nicht vollständig iptables (oder nftables). Das tut es nicht; stattdessen funktioniert es als Verwaltungsschicht auf der Netfilter-Architektur des Linux-Kernels. Firewalld nimmt Befehle, die für Menschen leicht verständlich sind, und wandelt sie in Low-Level-Regeln um, denen iptables (für ältere Systeme) oder nftables (für neuere Systeme) tatsächlich folgen.

  • Was firewalld als Verwaltungsschicht tut:

    • firewalld ist ein Daemon, der die Verwaltung von Firewalls erleichtert.
    • Administratoren verwenden Zonen (Vertrauensstufen) und Dienste (übliche Protokolle), um mit ihm zu kommunizieren.
    • Es filtert keine Pakete von sich aus; es richtet die Backend-Engine (iptables oder nftables) ein.
  • Verlassen auf iptables oder nftables

    • Firewalld verwendet iptables, um Regeln auf älteren Linux-Versionen wie CentOS 7 und Ubuntu 18.04 zu verwalten.
    • Firewalld verwendet nftables als Rückgrat auf neueren Distributionen, einschließlich RHEL 8+, Fedora 32+ und Ubuntu 20.04+.
    • Die Benutzererfahrung (firewall-cmd) ändert sich nicht, egal welcher Backend läuft.

    Überprüfen Sie den Status von firewalld

    sudo firewall-cmd --state

    Überprüfen Sie das Backend in den Protokollen

    sudo journalctl -u firewalld | grep "Using backend"
  • Übergang von iptables zu nftables

    • Die Entwicklung des Linux-Kernels hat seit Kernel 3.13 von iptables auf nftables umgestellt.
    • Die meisten Distributionen haben nftables bereits als Standard übernommen, aber firewalld sorgt für Kompatibilität, indem es diesen Übergang vor dem Benutzer verbirgt.
  • Fortdauernde Relevanz beider

    • iptables ist nach wie vor in Legacy-Systemen und älteren Automatisierungsskripten relevant.
    • nftables ist die Gegenwart und Zukunft, bietet bessere Leistung und Skalierbarkeit.
    • firewalld überbrückt die Lücke und stellt sicher, dass Administratoren nicht sofort beide Low-Level-Syntaxe lernen müssen.

Kurz gesagt, firewalld ersetzt nicht iptables oder nftables; es steuert sie. Es verwendet iptables auf älteren Systemen und nftables auf neueren. Beide sind immer noch nützlich, aber firewalld erleichtert die Verwaltung, indem es Ihnen eine konsistente, hochgradige Schnittstelle bietet.

Ist firewalld einfacher zu bedienen als nftables?

Ja, firewalld ist einfacher zu bedienen als nftables, weil es Low-Level-Firewall-Regeln in ein einfacheres Modell auf Basis von Zonen und Diensten abstrahiert. Während nftables mehr Flexibilität und Leistung bietet, erfordert seine Syntax ein tieferes Verständnis von Tabellen, Ketten und Hooks.

  • Benutzerfreundlichkeitskriterien

    • firewalld: Konzentriert sich auf Abstraktion → Administratoren denken in Begriffen von „Zonen“ (Vertrauensstufen) und „Diensten“ (vordefinierte Protokolle/Ports).
    • nftables: Erfordert das Schreiben expliziter Regelsets → Administratoren müssen den Paketfluss, die Familien (ip, ip6, inet) und die manuelle Regelkonstruktion verstehen.
  • firewalld-Zonen- und Dienstemodell

    Beispiel — SSH in der öffentlichen Zone erlauben:

    sudo firewall-cmd --zone=public --add-service=ssh

    Dieser einzelne Befehl aktiviert SSH, indem er auf seinen vordefinierten Dienst (Port 22/TCP) verweist. Es ist nicht nötig, sich an genaue Ports zu erinnern oder komplexe Bedingungen zu schreiben.

    Weisen Sie eine Schnittstelle einer Zone zu:

    sudo firewall-cmd --zone=home --change-interface=eth0

    Zones like home, public, or dmz represent trust levels, making configuration context-driven instead of rule-driven.

  • Komplexität von nftables-Skripten

    Die gleiche SSH-Regel in nftables erfordert eine explizite Syntax:

    nft add rule inet filter input tcp dport 22 accept

    Das Erstellen von Tabellen, Ketten und Richtlinien von Hand ist Teil eines gesamten Regelwerks. Das ist stark, aber du musst mehr über Netzwerke wissen und auf Details achten.

  • Use Cases for Each Approach o firewalld: Best for those who are new to computers or system administrators who need to make quick, safe modifications.

  • Am besten für Orte mit unterschiedlichen Vertrauensstufen (Zonen).

  • Nützlich, wenn es wichtig ist, dass alle Distributionen gleich sind.

    nftables: Am besten für fortgeschrittene Administratoren, die viel Kontrolle haben wollen.

  • Am besten für Regelsets, die groß sind und wachsen können (unter Verwendung von Mengen/Karten).

Dies ist eine gute Wahl, wenn Automatisierung und versionskontrollierte Konfiguration wichtig sind.

Das Zonen-/Service-Konzept und die einfacheren Anweisungen machen firewalld einfacher zu bedienen als nftables. nftables ist komplizierter, aber es bietet Ihnen mehr Optionen und kann größere oder fortgeschrittenere Bereitstellungen bewältigen.

Brauchen Sie noch iptables, wenn Sie nftables haben?

Nein, du brauchst iptables nicht, wenn du nftables hast. Nftables soll iptables ersetzen und hat alle grundlegenden Funktionen zur Paketfilterung, NAT und Protokollierung. Allerdings kann iptables in Bereichen, in denen alte Skripte, Automatisierung oder Drittanbieter-Software davon abhängen, weiterhin nützlich sein.

  • nftables als Ersatz

    • Eingeführt im Linux-Kernel 3.13, vereinheitlicht nftables IPv4, IPv6, ARP und Bridging unter einem Regelwerk.
    • Es ist jetzt das Standard-Firewall-Framework in den meisten modernen Linux-Distributionen.
    • iptables befindet sich im Wartungsmodus und wird keine größeren neuen Funktionen mehr erhalten.
  • Alte Skripte und Kompatibilität

    • Viele ältere Automatisierungsskripte und -tools wurden für die iptables-Syntax geschrieben.
    • Um zu vermeiden, dass sie kaputtgehen, bietet Linux die iptables-nft-Kompatibilitätsschicht an, die iptables-Befehle in nftables-Regeln übersetzt.
    • Dies ermöglicht es Administratoren, bestehende Skripte weiter zu verwenden, während das System tatsächlich nftables durchsetzt.

Beispiel: iptables-Befehl, der auf dem nftables-Backend läuft

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

Überprüfen Sie die Übersetzung in nftables.

sudo nft list ruleset
  • Koexistenz durch Kompatibilitätsschichten

    • Auf neueren Systemen ruft das Ausführen von iptables wahrscheinlich iptables-nft auf, das die Kompatibilitäts-Binärdatei ist.
    • Mischen Sie iptables-legacy und native nftables nicht direkt, da sie unterschiedliche Regeln haben, die nicht immer zusammenarbeiten.
  • Das langfristige Ziel ist die Migration

    • Das Ziel ist es, langfristig alle Firewalls auf nftables umzustellen.
    • Administratoren sollten die iptables-Regeln schrittweise durch nftables-Regeln ersetzen. Sie können Übersetzungstools wie iptables-translate oder iptables-restore-translate verwenden, um dies zu tun.
    • Dies stellt sicher, dass die Syntax auf dem neuesten Stand ist, dass sie wachsen kann und dass sie in Zukunft funktionieren wird.

Kurz gesagt, Sie benötigen iptables nicht, wenn Sie bereits nftables haben. Ältere Skripte verwenden es möglicherweise noch, obwohl neuere Linux-Systeme nftables als Backend verwenden, häufig mit Kompatibilitätsschichten. Das Beste ist, einen Plan zu erstellen, wie man zu nftables wechselt, damit man die iptables-Syntax nicht mehr verwenden muss.

Firewalls sind im Linux-Umfeld keine optionalen Extras; sie sind wesentliche Sicherheitswerkzeuge, die Systeme vor unbefugtem Zugriff und Angriffen schützen. Administratoren haben im Laufe der Zeit vom alten iptables-Framework auf das neue nftables-Framework umgestellt. Werkzeuge wie firewalld sind ebenfalls erschienen, um die Verwaltung durch die Verwendung von Zonen und Diensten zu erleichtern. Jede Option hat ihre Vor- und Nachteile: iptables gibt es schon lange und es funktioniert mit vielen verschiedenen Systemen; nftables ist schnell und leicht skalierbar; und firewalld ist einfach zu bedienen und erleichtert routinemäßige Firewall-Aufgaben.

Ihre Umgebung und Ihr Wissensstand werden Ihnen helfen, das richtige Firewall-Tool auszuwählen. Firewalld ist der einfachste Weg für Anfänger und Teams mit Personen unterschiedlicher Fähigkeitsstufen, um zu beginnen. nftables ist die beste Wahl für fortgeschrittene Administratoren und großangelegte Installationen, da es zeitgemäß ist und gut funktioniert. Iptables ist für ältere Systeme immer noch wichtig, aber der langfristige Plan sollte sein, langsam auf nftables umzusteigen. Das Wichtigste in jedem Szenario ist, konsequent zu sein: Setzen Sie explizite Sicherheitsprinzipien, testen Sie die Regeln, um sicherzustellen, dass sie funktionieren, und halten Sie Ihre mehrschichtige Verteidigung auf dem neuesten Stand, während sich die Anforderungen Ihres Netzwerks ändern.

Starten Sie noch heute kostenlos mit Zenarmor