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 DROPDer 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.
- Der erste Befehl iptables ruft das Befehlszeilendienstprogramm iptables auf.
- Als nächstes kommt das Argument -I zum Einfügen. Das Einfügungsargument fügt eine Regel am Anfang der iptables-Kette hinzu und erhält dadurch eine höhere Priorität. Um eine Regel an einer bestimmten Nummer in der Kette hinzuzufügen, verwenden Sie das Argument -I gefolgt von der Nummer, der die Regel zugewiesen werden soll.
- Das Argument -s hilft bei der Angabe der Quelle. Daher verwenden wir das Argument -s gefolgt von der IP-Adresse.
- Der Parameter -j bei iptables spezifiziert den Sprung zu einem bestimmten Ziel. Diese Option legt die Aktion fest, die die Iptables ausführen sollen, sobald ein passendes Paket vorhanden ist. Iptables bietet standardmäßig vier Hauptziele, darunter: ACCEPT, DROP, LOG und REJECT.
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 -L3: 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 -vUm 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 ACCEPTSobald 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 REJECTLö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 1In 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 wlan0Die 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 wlan0Dieser 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:
- Das erste Argument (-A) fügt eine neue Regel am Ende der Tabellenkette hinzu.
- Das Argument INPUT fügt die angegebene Regel der Tabelle hinzu.
- Das Argument DROP legt die auszuführende Aktion als ACCEPT bzw. DROP fest. Dies bedeutet, dass ein Paket, sobald es übereinstimmt, verworfen wird.
- -p spezifiziert das Protokoll wie TCP und lässt Datenverkehr auf anderen Protokollen passieren.
- -destination-port legt die Regel fest, um den gesamten für Port 1001 bestimmten Datenverkehr zu akzeptieren oder zu verwerfen.
- -ich
weist iptables an, die Regel auf den Datenverkehr anzuwenden, der über die wlan0-Schnittstelle kommt.
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.24Whitelisting 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 ACCEPTiptables -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 AKZEPTIERENiptables -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 REJECT3: SSH-Verbindungen zulassen
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPTDies 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 -vEine 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.