GNU/Linux >> LINUX-Kenntnisse >  >> Linux

iptables vs. nftables:Was ist der Unterschied?

Jeder Linux-Administrator hat sicherlich mit iptables gearbeitet, der langjährigen Linux-Firewall, die uns seit vielen Jahren gute Dienste leistet. Aber Sie sind vielleicht noch nicht mit nftables vertraut, einem Neuling, der uns einige dringend benötigte Upgrades bieten und letztendlich die alternden iptables ersetzen soll.

Warum nftables statt iptables?

Die nftables werden von Netfilter entwickelt, derselben Organisation, die derzeit iptables verwaltet. Es wurde als Abhilfe für die Probleme mit iptables geschaffen, nämlich Skalierbarkeit und Leistung.

Abgesehen von einer neuen Syntax und einigen Upgrades werden Sie feststellen, dass es seinem Vorgänger sehr ähnlich funktioniert.

Eine weitere Rechtfertigung für ein neues Dienstprogramm ist, dass das iptables-Framework mit iptables, ip6tables, arptables und ebtables, die alle unterschiedliche, aber ähnliche Funktionen bieten, ein wenig verworren ist.

Beispielsweise ist es einfach ineffizient, IPv4-Regeln in iptables und IPv6-Regeln in ip6tables zu erstellen und die beiden synchron zu halten. Nftables zielt darauf ab, all diese zu ersetzen und eine zentralisierte Lösung zu sein.

Obwohl nftables seit 2014 im Linux-Kernel enthalten ist, gewinnt es in letzter Zeit mit zunehmender Verbreitung an Bedeutung. Die Linux-Welt verändert sich nur langsam, und veraltete Dienstprogramme brauchen oft ein paar Jahre oder länger, bis sie zugunsten ihrer aktualisierten Gegenstücke auslaufen.

Nftables entwickelt sich zur empfohlenen Firewall der Wahl, und es obliegt Linux-Administratoren, ihr Repertoire zu aktualisieren. Jetzt ist ein guter Zeitpunkt, um sich mit nftables vertraut zu machen und Ihre vorhandene iptables-Konfiguration zu aktualisieren.

Wenn Sie iptables seit Jahren verwenden und nicht allzu begeistert von der Idee sind, ein brandneues Dienstprogramm lernen zu müssen, machen Sie sich keine Sorgen, wir haben Sie in diesem Handbuch behandelt. In diesem Artikel behandeln wir die Unterschiede zwischen nftables und iptables und zeigen Beispiele für die Konfiguration Ihrer Firewall-Regeln in der neuen nftables-Syntax.

Ketten und Regeln in nftables

In iptables gibt es drei Standardketten:Eingabe, Ausgabe und Weiterleitung. Diese drei „Ketten“ (und andere Ketten, falls Sie welche konfiguriert haben) enthalten „Regeln“ und iptables funktioniert, indem es den Netzwerkverkehr mit der Liste der Regeln in einer Kette abgleicht. Wenn der untersuchte Datenverkehr mit keiner Regel übereinstimmt, wird die Standardrichtlinie der Kette für den Datenverkehr verwendet (d. h. ACCEPT, DROP).

Nftables funktioniert ähnlich, auch mit „Ketten“ und „Regeln“. Es beginnt jedoch nicht mit irgendwelchen Basisketten, was die Konfiguration etwas flexibler macht.

Ein Bereich der Ineffizienz für iptables ist das alles Netzwerkdaten mussten eine oder mehrere dieser oben genannten Ketten durchlaufen, selbst wenn der Datenverkehr keinen Regeln entsprach. Unabhängig davon, ob Sie die Chains konfiguriert hatten oder nicht, iptables gleicht Ihre Netzwerkdaten trotzdem mit ihnen ab.

Installieren von nftables unter Linux

Nftables ist in allen wichtigen Linux-Distributionen verfügbar und Sie können es einfach über den Paketmanager Ihrer Distributionen installieren.

Auf einer Ubuntu- oder Debian-basierten Distribution können Sie diesen Befehl verwenden:

sudo apt install nftables

So stellen Sie sicher, dass nftables beim Neustart Ihres Systems automatisch gestartet wird:

sudo systemctl enable nftables.service

Syntaxunterschied zwischen iptables und nftables

Nftables hat eine andere und viel einfachere Syntax als iptables. Seien wir ehrlich, die iptables-Syntax war immer unklar und erforderte einige zusätzliche Anstrengungen, um sie zu lernen. Zum Glück für diejenigen, die von iptables migrieren, akzeptiert nftables immer noch die alte Syntax.

Sie können auch iptables-translate verwenden Dienstprogramm, das iptables-Befehle akzeptiert und sie in das nftables-Äquivalent konvertiert. Dies ist ein einfacher Weg, um zu sehen, wie sich die beiden Syntaxen unterscheiden.

Installieren Sie iptables-translate auf einer Ubuntu- und Debian-basierten Distribution mit diesem Befehl:

sudo apt install iptables-nftables-compat

Sobald es installiert ist, können Sie Ihre iptables-Syntax an den Befehl iptables-translate übergeben, der den entsprechenden Befehl von nftables zurückgibt.

Sehen wir uns einige Beispiele an, damit Sie sehen können, wie sich diese Befehle voneinander unterscheiden.

Eingehende Verbindungen blockieren

Dieser Befehl blockiert eingehende Verbindungen von der IP-Adresse 192.168.2.1:

[email protected]:~$ iptables-translate -A INPUT -s 192.168.2.1 -j DROP
nft add rule ip filter INPUT ip saddr 192.168.2.1 counter drop

Eingehende SSH-Verbindungen zulassen

Sehen wir uns einige weitere Beispiele an – gängige Dinge, die Sie normalerweise beim Härten eines Linux-Servers in iptables eingeben würden.

[email protected]:~$ iptables-translate -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
nft add rule ip filter INPUT tcp dport 22 ct state new,established counter accept

Eingehende SSH-Verbindungen aus einem bestimmten IP-Bereich zulassen

Wenn Sie eingehende SSH-Verbindungen von 192.168.1.0/24 zulassen möchten:

[email protected]:~$ iptables-translate -A INPUT -p tcp -s 192.168.1.0/24 --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
nft add rule ip filter INPUT ip saddr 192.168.1.0/24 tcp dport 22 ct state new,established counter accept

Mysql-Verbindungen zur eth0-Netzwerkschnittstelle zulassen

Hier ist die Syntax für iptables und nftables:

[email protected]:~$ iptables-translate -A INPUT -i eth0 -p tcp --dport 3306 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
nft add rule ip filter INPUT iifname eth0 tcp dport 3306 ct state new,established counter accept

Eingehenden HTTP- und HTTPS-Traffic zulassen

Um einen bestimmten Datenverkehr vom Typ f zuzulassen, ist hier die Syntax für beide Befehle:

[email protected]:~$ iptables-translate -A INPUT -p tcp -m multiport --dports 80,443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
nft add rule ip filter INPUT ip protocol tcp tcp dport { 80,443} ct state new,established counter accept

Wie Sie an diesen Beispielen sehen können, ist die Syntax immer noch ziemlich ähnlich zu iptables, aber die Befehle sind etwas intuitiver.

Protokollierung mit nftables

Die „counter“-Option, die in den obigen nft-Befehlsbeispielen vorhanden ist, weist nftables an, zu zählen, wie oft eine Regel berührt wird, wie es iptables standardmäßig tat.

In nftables sind sie optional und müssen angegeben werden.

nft add rule ip filter INPUT ip saddr 192.168.2.1 counter accept

Nftables verfügt über integrierte Optionen zum Exportieren Ihrer Konfiguration. Es unterstützt derzeit XML und JSON.

nft export xml

Fazit

In diesem Artikel habe ich erklärt, warum nftables die neue empfohlene Wahl ist, wenn es um Linux-Firewalls geht. Ich habe auch viele Unterschiede zwischen den alten iptables und den neueren nftables aufgelistet, einschließlich ihrer Funktionalität und Syntax.

Dieser Leitfaden hat Ihnen gezeigt, warum Sie ein Upgrade auf nftables in Betracht ziehen sollten und wie Sie mit der neuen Syntax beginnen können, mit der Sie sich vertraut machen müssen, um Ihre alten iptables-Regeln erfolgreich zu aktualisieren.

Wenn Sie Fragen oder Anregungen haben, lassen Sie es mich bitte in den Kommentaren wissen.


Linux
  1. Linux vs. Unix:Was ist der Unterschied?

  2. Was ist der Unterschied zwischen strtok_r und strtok_s in C?

  3. Was ist der Unterschied zwischen fsck und e2fsck?

  4. Was ist der Unterschied zwischen adduser und useradd?

  5. Was ist der Unterschied zwischen unlink und rm?

SIGTERM vs. SIGKILL:Was ist der Unterschied?

DevOps vs. Software Engineer:Was ist der Unterschied?

Was ist ein Hypervisor? Was ist der Unterschied zwischen Typ 1 und 2?

Was ist der Unterschied zwischen Curl und Wget?

HTTP vs. HTTPS:Was ist der Unterschied?

Was ist der Unterschied zwischen OUTPUT- und FORWARD-Ketten in iptables?