iptables

Ubuntu Iptables So steuern Sie den Netzwerkverkehr mit iptables?

Ubuntu Iptables So steuern Sie den Netzwerkverkehr mit iptables?
"… EIN User-Space Unix-Dienstprogramm, das Systemadministratoren die Möglichkeit gibt, IP-Paketfilterregeln zu konfigurieren, die vom Netzfiltermodul des Kernels implementiert werden.” Iptables fungieren als Firewall mit Paketfilterregeln basierend auf verschiedenen Kriterien wie IP-Adresse, Port und Protokollen.

In diesem Handbuch wird erläutert, wie Sie iptables-Regeln auf einem Ubuntu-System konfigurieren und verwenden, um Ihr Netzwerk zu sichern. Egal, ob Sie ein Linux-Anfänger oder ein erfahrener Systemadministrator sind, in diesem Handbuch erfahren Sie auf die eine oder andere Weise etwas Nützliches über iptables.

Iptables sind auf Ubuntu und den meisten Debian-basierten Distributionen vorinstalliert. Ubuntu enthält auch die GUFW-Firewall, eine grafische Alternative, die Sie verwenden können, um mit iptables zu arbeiten.

HINWEIS: Um iptables zu verwenden und zu konfigurieren, benötigen Sie sudo-Berechtigungen auf Ihrem System. Sie können mehr über sudo aus dem folgenden Tutorial erfahren.

Jetzt, da Sie wissen, was Iptables ist, tauchen wir gleich ein!

So verwenden Sie iptables zum Verwalten des IPv4-Datenverkehrs?

Um Iptables für das IPv4-Netzwerk- und Datenverkehrsmanagement zu verwenden, müssen Sie Folgendes verstehen:

Der Iptables-Befehl

Iptables bietet eine Auswahl an Optionen, mit denen Sie Ihre Iptables-Regeln anpassen und optimieren können. Lassen Sie uns einige dieser Parameter besprechen und sehen, was sie bewirken.

HINWEIS: Sie können eine Reihe von Regeln konfigurieren, die eine bestimmte Teilmenge verwalten, bekannt als iptables-Ketten.

Iptables-Parameter

Bevor wir mit dem Erstellen und Konfigurieren von iptables-Regeln beginnen, lassen Sie uns zunächst die Grundlagen von iptables verstehen, wie die allgemeine Syntax und Standardargumente.

Betrachten Sie den folgenden Befehl:

sudo iptables -I INPUT -s 192.168.0.24 -j DROP

Der obige Befehl weist die iptables an, eine Regel in der Kette zu erstellen. Die Regel verwirft alle Pakete von der IP-Adresse 192.168.0.24.

Lassen Sie uns den Befehl Zeile für Zeile untersuchen, um ihn besser zu verstehen.

Iptables bietet eine Auswahl an Parametern, mit denen Sie verschiedene Regeln konfigurieren können. Zu den verschiedenen Parametern, die Sie zum Konfigurieren von iptables-Regeln verwenden können, gehören:

Iptables-Regelparameter Beschreibung
-s -Quelle Geben Sie die Quelle an, die eine Adresse, ein Hostname oder ein Netzwerkname sein kann.
-p-Protokoll Gibt das Verbindungsprotokoll an; zum Beispiel TCP, UDP usw.
-d -Ziel Gibt das Ziel an, das eine Adresse, ein Netzwerkname oder ein Hostname sein kann.
-j -springen Legt die Aktion fest, die iptables ausführen soll, nachdem ein Paket gefunden wurde.
-o -out-Schnittstelle Legt die Schnittstelle fest, über die iptable das Paket sendet.
-ich -in-schnittstelle Legt die Schnittstelle fest, die zum Erstellen von Netzwerkpaketen verwendet wird.
-c -Zähler setzen Ermöglicht dem Administrator, die Byte- und Paketzähler für eine bestimmte Regel festzulegen.
-g -goto-Kette Der Parameter gibt an, dass die Verarbeitung bei der Rückkehr in der benutzerdefinierten Kette fortgesetzt werden soll.
-f -Fragment Weist iptables an, die Regel nur auf das zweite und die folgenden Fragmente der fragmentierten Pakete anzuwenden.

Iptables-Optionen

Der Befehl iptables unterstützt eine Vielzahl von Optionen. Einige gängige sind:

Möglichkeit Beschreibung
-A -anhängen Fügt eine Regel am Ende einer angegebenen Kette hinzu
-D -löschen Entfernt eine Regel aus der angegebenen Kette
-F -bündig Entfernt alle Regeln, eine nach der anderen
-L-Liste Zeigt alle Regeln in der angegebenen Kette an
-ich -einfügen Fügt eine Regel in die angegebene Kette ein (als Zahl übergeben, wenn keine Zahl angegeben ist; Regel wird oben hinzugefügt)
-C -check Abfragen nach einem Regelabgleich; Anforderung in einer bestimmten Regel
-v -ausführlich Zeigt mehr Details an, wenn es mit dem Parameter -L verwendet wird
-N -neue-Kette Fügt eine neue benutzerdefinierte Kette hinzu
-X -Kette löschen Entfernt eine bestimmte benutzerdefinierte Kette

Iptables-Tabellen

Der Linux-Kernel verfügt über Standardtabellen, die eine Reihe verwandter Regeln enthalten. Diese Standardtabellen haben eine Reihe von Standardketten, aber Benutzer können die Regeln anpassen, indem sie benutzerdefinierte Regeln hinzufügen adding.

HINWEIS: Die Standardtabellen hängen stark von Ihrer Kernel-Konfiguration und den installierten Modulen ab.

Hier sind die standardmäßigen iptables-Tabellen:

1: Die Filtertabellen

Die Filtertabelle ist eine Standardtabelle, die Ketten enthält, die für die Netzwerkpaketfilterung verwendet werden. Einige der Standardketten in dieser Tabelle umfassen:

Kette Beschreibung
Eingang Iptables verwenden diese Kette für alle eingehenden Pakete zum System, d.h.e., Pakete, die an lokale Netzwerk-Sockets gehen.
Ausgabe Iptables verwenden die Ausgabekette für lokal generierte Pakete, d. h.e., Pakete, die das System verlassen.
Nach vorne Diese Kette verwenden die Iptables für Pakete, die über das System geroutet oder weitergeleitet werden.

2: Die NAT-Tabellen

NAT oder Network Address Table ist ein Routing-Gerät, das verwendet wird, um die Quell- und Ziel-IP-Adressen in einem Netzwerkpaket zu ändern. Die Hauptanwendung der NAT-Tabelle ist die Verbindung zweier Netze in einem privaten Adressbereich mit dem öffentlichen Netz.

NAT wurde entwickelt, um das Maskieren echter IP-Adressen zu unterstützen, sodass private IP-Adressbereiche das externe Netzwerk erreichen können. Dies trägt dazu bei, Details über interne Netzwerke davor zu schützen, in öffentlichen Netzwerken preisgegeben zu werden.

Die NAT-Tabelle wird verwendet, wenn ein Paket eine neue Verbindung initiiert.

Iptables haben eine Standardtabelle für die NAT-Adressierung. Diese Tabelle hat drei Hauptketten:

Kette Beschreibung
VORBEREITUNG Ermöglicht die Änderung von Paketinformationen vor dem Eintreffen in der INPUT-Kette, die für eingehende Pakete verwendet wird
AUSGABE Reserviert für lokal erstellte Pakete, d. h.e., bevor das Netzwerk-Routing auftritt
POSTROUTING Ermöglicht die Änderung ausgehender Pakete – Pakete, die die OUTPUT-Kette verlassen

Das folgende Diagramm zeigt einen groben Überblick über diesen Prozess.

Verwenden Sie den folgenden Befehl, um Ihre NAT-Routing-Tabellen anzuzeigen.

iptables -t nat -n -v -L

3: Die Mangle-Tabellen

Die Mangeltabelle wird hauptsächlich zur speziellen Modifikation von Paketen verwendet. Einfach ausgedrückt wird es verwendet, um die IP-Header eines Netzwerkpakets zu ändern modify. Die Änderung von Paketen kann das Ändern eines TTL-Werts eines Pakets, das Ändern gültiger Netzwerk-Hops für ein Paket usw. umfassen.

Die Tabelle enthält die folgenden Standardketten:

Kette Beschreibung
VORBEREITUNG Reserviert für eingehende Pakete
POSTROUTING Wird für ausgehende Pakete verwendet
EINGANG Wird für Pakete verwendet, die direkt in den Server eingehen
AUSGABE Wird für lokale Pakete verwendet
Nach vorne Reserviert für Pakete, die durch das System geleitet werden

4: Die Rohtabellen

Der Hauptzweck der Rohtabelle besteht darin, Ausnahmen für Pakete zu konfigurieren, die nicht vom Tracking-System verarbeitet werden sollen. Die Rohtabelle setzt eine NOTRACK-Markierung auf Paketen und fordert die Conntrack-Funktion auf, das Paket zu ignorieren.

Conntrack ist eine Linux-Kernel-Netzwerkfunktion, die es dem Linux-Kernel ermöglicht, alle Netzwerkverbindungen zu verfolgen, sodass der Kernel Pakete identifizieren kann, die einen Netzwerkfluss bilden.

Die Rohtabelle hat zwei Hauptketten:

Kette Beschreibung
VORBEREITUNG Reserviert für Pakete, die von Netzwerkschnittstellen empfangen werden
AUSGABE Reserviert für Pakete, die von lokalen Prozessen initiiert werden

5: Die Sicherheitstabelle

Der Hauptzweck dieser Tabelle besteht darin, den internen Sicherheitsmechanismus der Sicherheitsverbesserung für Linux (SELinux) festzulegen, der Pakete markiert. Das Sicherheitszeichen kann pro Verbindung oder Paket angewendet werden.

Sie wird für obligatorische Zugriffskontrollregeln verwendet und ist die zweite Tabelle, auf die nach der Filtertabelle zugegriffen wird. Es bietet die folgenden Standardketten:

Kette Beschreibung
EINGANG Reserviert für eingehende Pakete zum System
AUSGABE Wird für lokal erstellte Pakete verwendet
NACH VORNE Wird für Pakete verwendet, die durch das System geleitet werden

Nachdem wir uns die Standard-IPtables angesehen haben, gehen wir einen Schritt weiter und besprechen, wie man mit iptables-Regeln arbeitet.

So arbeiten Sie mit iptables-Regeln?

Iptables-Regeln werden in aufsteigender Reihenfolge angewendet. Dies bedeutet, dass die erste Regel in einem bestimmten Satz zuerst angewendet wird, gefolgt von der zweiten, dann der dritten usw.

Aufgrund dieser Funktion hindern iptables Sie daran, Regeln mit dem Parameter -A zu einem Satz hinzuzufügen; Sie müssen das -I verwenden, gefolgt von der Zahl oder indem Sie es leeren, um es an den Anfang der Liste zu setzen.

Iptables anzeigen

Um Ihre iptables anzuzeigen, verwenden Sie den Befehl iptables -L -v für IPv4 und ip6tables -L -v für IPv6.

Einfügen von Regeln

Um Regeln in einen Satz einzufügen, müssen Sie sie in der genauen Reihenfolge positionieren und dabei die Regeln berücksichtigen, die von derselben Kette verwendet werden. Sie können die Liste Ihrer iptables-Regeln mit dem oben beschriebenen Befehl anzeigen:

sudo iptables -L -v

Um beispielsweise eine Regel einzufügen, die eingehende Verbindungen zu Port 9001 über TCP erlaubt, müssen wir die Regelnummer in der INPUT-Kette angeben, die den Verkehrsregeln für das Web entspricht.

sudo iptables -I INPUT 1 -p TCP --dport 9001 -m state --state NEW -j ACCEPT

Sobald Sie die aktuellen iptables anzeigen, sollten Sie die neue Regel im Set sehen.

sudo iptables -L -v

Regeln ersetzen

Die Ersetzungsfunktionalität funktioniert ähnlich wie das Einfügen, verwendet jedoch den Befehl iptables -R. Um beispielsweise die obige Regel zu ändern und Port 9001 auf deny zu setzen, gehen wir wie folgt vor:

sudo iptables -R INPUT 1 -p TCP --dport 9001 -m state --state NEW -j REJECT

Löschen einer Regel

Um eine Regel zu löschen, übergeben wir die Regelnummer. Um beispielsweise die obige Regel zu löschen, können wir Folgendes angeben:

sudo iptables -D INPUT 1

In den meisten Linux-Distributionen sind iptables entweder für IPv4 und IPv6 leer. Wenn Sie also keine neue Regel hinzugefügt haben, erhalten Sie eine Ausgabe ähnlich der unten gezeigten. Das ist riskant, weil es bedeutet, dass das System den gesamten eingehenden, ausgehenden und weitergeleiteten Datenverkehr zulässt.

Sehen wir uns an, wie man iptables konfiguriert:

So konfigurieren Sie iptables?

Es gibt zahlreiche Möglichkeiten, iptables-Regeln zu konfigurieren. In diesem Abschnitt werden Beispiele verwendet, um Ihnen zu zeigen, wie Sie Regeln mithilfe von IP-Adressen und Ports festlegen.

Blockieren und Zulassen von Datenverkehr nach Ports

Sie können einen bestimmten Port verwenden, um den gesamten Datenverkehr auf einer Netzwerkschnittstelle zu blockieren oder zuzulassen. Betrachten Sie die folgenden Beispiele:

sudo iptables -A INPUT -j ACCEPT -p TCP --destination-port 1001 -i wlan0

Die obigen Befehle erlauben den Verkehr auf Port 1001 TCP auf der wlan0-Schnittstelle.

sudo iptables -A INPUT -j DROP -p TCP --destination-port 1001 -i wlan0

Dieser Befehl führt das Gegenteil des obigen Befehls aus, da er den gesamten Datenverkehr auf Port 1001 auf wlan0 blockiert.

Hier ist eine genaue Überprüfung des Befehls:

HINWEIS: Iptables verstehen keine Netzwerkschnittstellen-Aliasse. Daher müssen Sie in einem System mit mehr als einer virtuellen Schnittstelle die Zieladresse manuell und explizit definieren.

Beispielsweise:

sudo iptables -A INPUT -j DROP -p TCP --destination-port 1001 -i wlan0 -d 192.168.0.24

Whitelisting und Blacklisting von IP-Adressen

Sie können Firewall-Regeln mit iptables erstellen. Ein Beispiel ist das Stoppen des gesamten Datenverkehrs und das Zulassen von Netzwerkverkehr nur von expliziten IP-Adressen.

Beispiel:

iptables -A INPUT -m state --state ESTABLISHED, RELATED -j ACCEPT
iptables -A INPUT -i lo -m Kommentar --comment "Loopback-Verbindungen zulassen" -j ACCEPT
iptables -A INPUT -p icmp -m Kommentar --comment „Zulassen, dass Ping wie erwartet funktioniert“ -j

AKZEPTIEREN

iptables -A EINGANG -s 192.168.0.1/24 -j AKZEPTIEREN
iptables -A EINGANG -s 192.168.0.0 -j AKZEPTIEREN
iptables -P INPUT DROP
iptables -P FORWARD DROP

Die erste Zeile legt eine Regel fest, um alle Quell-IP-Adressen im 192 . zuzulassen.168.0.1/24 Subnetz. Sie können auch CIDR oder einzelne IP-Adressen verwenden. Im folgenden Befehl legen wir die Regel fest, um den gesamten Verkehr zuzulassen, der mit bestehenden Verbindungen verbunden ist. In den letzten Befehlen legen wir eine Richtlinie für INPUT und FORWARD fest, um alle zu löschen.

Verwenden von iptables auf IPv6

Der Befehl Iptables funktioniert nur auf IPv4. Um iptables auf IPv6 zu verwenden, müssen Sie den Befehl ip6tables verwenden. Ip6tables verwendet Raw-, Filter-, Sicherheits- und Mangle-Tabellen. Die allgemeine Syntax für ip6tables ähnelt iptables und unterstützt auch passende iptables-Optionen wie append, delete usw.

Ziehen Sie in Betracht, die ip6tables-Handbuchseiten für weitere Informationen zu verwenden.

Beispiel für iptables-Regelsätze für die Netzwerksicherheit

Das Erstellen geeigneter Firewall-Regeln hängt hauptsächlich von dem auf einem System ausgeführten Dienst und den verwendeten Ports ab. Hier sind jedoch einige grundlegende Netzwerkkonfigurationsregeln, die Sie verwenden können, um Ihr System zu sichern:

1: Loopback-Schnittstellenverkehr zulassen und alle Loopbacks ablehnen, die von anderen Schnittstellen kommen

iptables -A INPUT -i lo -j ACCEPT (Sie können auch ip6tables verwenden)
iptables -A INPUT ! -ich lo -s 127.0.0.0 -j REJECT (ip6tables gilt auch)

2: Alle Ping-Anfragen ablehnen

iptables -A INPUT -p icmp -m state --state NEW --icmp-type 8 -j REJECT

3: SSH-Verbindungen zulassen

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT

Dies sind Beispielbefehle, mit denen Sie Ihr System sichern können. Die Konfiguration hängt jedoch stark davon ab, auf was oder wen Sie auf verschiedene Dienste zugreifen möchten.

VORSICHT: Wenn Sie IPv6 lieber vollständig deaktivieren möchten, entkommentieren Sie die Zeile, da dies den Aktualisierungsvorgang verlangsamt:

Vorrang ::ffff:0:0/96 100 gefunden in /etc/gai.conf .

Das liegt daran, dass der APT-Paketmanager die Spiegeldomäne in IPv6 aufgrund des apt-get-Updates auflöst.

So stellen Sie iptables-Regeln bereit?

Um Ihre iptables auf Ubuntu oder anderen Debian-basierten Systemen bereitzustellen, erstellen Sie zunächst zwei Dateien, ip4 und ip6, für ihre jeweiligen IP-Adressen.

Fügen Sie in beiden Dateien die Regeln hinzu, die Sie in den entsprechenden Dateien durchsetzen möchten – IPv4-Regeln zur IP4-Datei und IPv6-Regeln zur IP6-Datei.

Als nächstes müssen wir die Regeln mit dem Befehl importieren:

sudo iptables-wiederherstellung < /tmp/ip4 (replace filename for IPv6)

Anschließend können Sie mit dem folgenden Befehl überprüfen, ob die Regeln angewendet wurden:

sudo iptables -L -v

Eine schnelle iptables-persistente Anleitung

Ubuntu und gängige Debian-basierte Distributionen werden mit einem iptables-persistent-Paket geliefert, mit dem Sie Ihre Firewall-Regeln beim Neustart einfach anwenden können. Das Paket enthält Dateien, mit denen Sie Regeln für IPv4 oder IPv6 festlegen können und die beim Booten automatisch angewendet werden können.

Sie können auch Firewall-Regeln mit UFW oder GUFW verwenden. Betrachten Sie das folgende Tutorial, um zu erfahren, wie Sie UFW verwenden.

So installieren Sie iptables-persistent?

Stellen Sie sicher, dass iptables-persistent auf Ihrem System installiert ist. Verwenden Sie dpkg, um zu überprüfen, ob das Paket installiert ist.

Wenn nicht, verwenden Sie den folgenden Befehl:

sudo apt-get install iptables-persistent

Sie werden zweimal aufgefordert, Ihre aktuellen IPv4- und IPv6-Regeln zu speichern. Klicken Sie auf Ja, um beide Regeln zu speichern.

Klicken Sie auf Ja, um IPv6 zu speichern.

Stellen Sie nach Abschluss der Installation sicher, dass Sie über das Unterverzeichnis iptables verfügen, wie in der Abbildung unten gezeigt.

Jetzt können Sie die Regeln verwenden.v4 und regeln.v6, um iptables-Regeln hinzuzufügen, und sie werden automatisch von iptables-persistent angewendet. Die Dateien sind einfache Textdateien, die Sie leicht mit einem beliebigen Texteditor Ihrer Wahl bearbeiten können.

Fazit

In diesem Tutorial haben wir die Grundlagen von iptables behandelt. Beginnen Sie mit der Arbeit mit iptables, grundlegenden Befehlen, standardmäßigen iptables-Tabellen und Parametern.

Nach dem, was Sie gelernt haben, sollten Sie in der Lage sein, mit iptables Firewall-Regeln zu erstellen, die Ihr System schützen.

So installieren und spielen Sie Doom unter Linux
Einführung in Doom Die Doom-Serie entstand in den 90er Jahren nach der Veröffentlichung des ursprünglichen Doom. Es war sofort ein Hit und seitdem hat...
Vulkan für Linux-Benutzer
Mit jeder neuen Grafikkartengeneration stoßen Spieleentwickler an die Grenzen der grafischen Wiedergabetreue und kommen dem Fotorealismus einen Schrit...
OpenTTD vs. Simutrans
Das Erstellen einer eigenen Transportsimulation kann Spaß machen, entspannend und äußerst verlockend sein. Deshalb sollten Sie so viele Spiele wie mög...