Iptables Tutorial

Iptables Tutorial

Iptables ist eine Befehlszeilenfeuerwall, die Pakete gemäß den definierten Regeln filtert. Mit Iptables können Benutzer Verbindungen akzeptieren, ablehnen oder weiterentwickeln. Es ist unglaublich vielseitig und weit verbreitet, obwohl es durch Nftables ersetzt wird.

Nachdem Sie dieses Tutorial gelesen haben, werden Sie Iptables -Richtlinien verstehen und Iptables -Regeln definieren, um Ihr Heimnetzwerk zu schützen.

Notiz: SUDO-Befehl wurde für Leser hinzugefügt, die die in diesem Iptables-Tutorial genannten Regeln kopieren müssen.

Iptables Glossar:

ZIEL: Bei der Verwendung von Iptables ist ein Ziel eine Aktion, die Iptables anwenden soll, wenn ein Paket mit einer Regel übereinstimmt.

KETTE: Eine Kette ist eine Liste von Regeln; Verfügbare integrierte Ketten sind: Eingabe, Ausgabe, Vorwärts, Voranlagen und Nachstürmer.

TISCH: Tabellen sind Iptables -Funktionen für jeden Zweck. Beispielsweise gibt es eine Tabelle für Routing -Aufgaben und eine andere Tabelle zum Filtern von Aufgaben. Jede Tabelle enthält Regelketten.

Verfügbare Tabellen sind Filter, NAT, Raw, Sicherheit und Mangle. Jede Tabelle enthält integrierte (Regel-) Ketten. Die folgende Liste zeigt, welche Ketten jede Tabelle enthalten:

FILTER EINGANG AUSGANG NACH VORNE
Nat Vorränge Postrouting AUSGANG
ROH Vorränge AUSGANG
MANGEL Vorränge Postrouting AUSGANG EINGANG NACH VORNE
SICHERHEIT EINGANG AUSGANG NACH VORNE

Abhängig von der Aktion, die Iptables ausführen soll. In diesem Tutorial wird die Option -t nicht verwendet. Dieses Tutorial konzentriert sich auf Filterzwecke anhand der Filtertabelle, die standardmäßig angewendet wird, wenn die Option -t nicht übergeben wird. Während Sie dieses Tutorial lesen, lernen Sie einige der oben genannten Konzepte kennen.

Wie installiert man:

So installieren Sie Iptables auf Debian und seine basierten Linux -Verteilungen:

sudo apt installieren iptables -y

Vor der Installation von Iptables auf Redhat -basierten Linux -Verteilungen müssen Sie Firewall durch Ausführen deaktivieren:

sudo systemctl stop Firewall
sudo systemctl deaktivieren Firewalld
sudo systemctl mask -nun firewalld

Installieren Sie dann Iptables, indem Sie ausführen:

sudo yum install iptables services
sudo systemctl starten iptables
sudo systemctl starten ip6tables
sudo systemctl aktiviert iptables
sudo systemctl aktivieren ip6tables
sudo systemctl starten ip6tables

Erste Schritte mit iptables:

Überprüfen Sie vor dem Start nach früheren Regeln, indem Sie Iptables anweisen, vorhandene Richtlinien und Regeln mit dem Parameter -l (-List) aufzulisten.

sudo iptables -l

Die obige Ausgabe zeigt 3 Zeilen: Ketteneingang, Kette vorwärts und Kettenausgang. Wo EINGANG bezieht sich auf Richtlinien bezüglich eingehender Verkehr, AUSGANG bezieht sich auf Richtlinien, die auf ausgehenden Verkehr angewendet werden, und NACH VORNE bezieht sich auf Routing -Richtlinien.

Die Ausgabe zeigt auch, dass es keine definierten Regeln gibt, und alle definierten Richtlinien werden akzeptiert.

Es gibt 3 Arten von Richtlinien: Akzeptieren, ablehnen und fallen lassen.

Die Richtlinie AKZEPTIEREN erlaubt Verbindungen; die Richtlinie ABLEHNEN verweigert Verbindungen, die einen Fehler zurückgeben; die Richtlinie TROPFEN verweigert Verbindungen, ohne Fehler zu erzeugen.
Beim Benutzen TROPFEN, UDP Pakete werden fallen gelassen und das Verhalten ist das gleiche wie die Verbindung zu einem Port ohne Dienst. TCP Pakete geben eine zurück ACK/RST, Dies ist die gleiche Antwort wie ein offener Port ohne Dienst darauf reagieren. Beim Benutzen ABLEHNEN, Ein ICMP-Paket gibt Ziel-Nicht-reachbar an den Quellhost zurück.

Wenn Sie sich mit Iptables befassen, müssen Sie zuerst die drei Richtlinien für jede Kette definieren. Danach können Sie Ausnahmen und Spezifikationen hinzufügen. Das Hinzufügen von Richtlinien sieht so aus:

sudo iptables -p Eingabe
sudo iptables -p Ausgabe
sudo iptables -p vorwärts

Iptables zulässige und restriktive Richtlinien:

Sie können Iptables mit einer zulässigen Richtlinie anwenden, indem Sie alle eingehenden Verbindungen akzeptieren, mit Ausnahme dieser, die Sie speziell fallen oder ablehnen. In diesem Fall ist jede Verbindung zulässig, es sei denn, Sie definieren eine Regel, um sie speziell abzulehnen.

Im Gegenteil verweigern die restriktiven Richtlinien alle Verbindungen mit Ausnahme dieser, die Sie ausdrücklich akzeptieren. In diesem Fall wird jede Verbindung abgelehnt, es sei denn, Sie definieren eine Regel, um sie zu akzeptieren.

Anwendung einer restriktiven Richtlinie mit Iptables:

Das folgende Beispiel zeigt, wie eine restriktive Richtlinie mit Iptables angewendet wird, indem alle eingehenden Verkehr abgelegt werden, mit Ausnahme der zulässigen.

Blockieren eingehender Verkehr.

WICHTIG: Die Anwendung der folgenden 3 Regeln kann Sie ohne Internetverbindung verlassen. Verwenden der in „iptables angehängten Regeln und Iptables -Staaten“ genannten Regeln fügen Sie die erforderlichen Ausnahmen hinzu, um Ihren Zugriff auf das Internet wiederherzustellen. Sie können sudo iptables -f konsequent auf Flush -Regeln ausführen.

Sie können den gesamten eingehenden Verkehr blockieren, sodass nur der ausgehende Datenverkehr im Internet stöbert und für Anwendungen Sie benötigen.

sudo iptables -p Eingangsabfall
sudo iptables -p Ausgabe akzeptieren
sudo iptables -p vorne Drop

Wo:

-P = Politik

sudo iptables -p Eingangsabfall: Legen Sie Iptables an, den gesamten eingehenden Verkehr zu verweigern, ohne auf die Quelle zu antworten.

sudo iptables -p Ausgabe akzeptieren: Definiert eine Akzeptanzrichtlinie für den ausgehenden Verkehr.

sudo iptables -p vorne Drop: weist Iptables an, keine Routing -Aufgaben auszuführen, die alle Pakete fallen lassen, die auf einen anderen Host bestimmt sind (versuchen, das Feuerwehrgerät zu durchlaufen) ohne Antwort.

Das obige Beispiel ermöglicht das Durchsuchen des Webs und der Verbindungen, die vom lokalen Gerät gestartet werden (-P Ausgang akzeptieren) aber verhindern Verbindungen, die von einem anderen Host initiiert werden (-P Eingangsabfall) Wie SSH -Versuche, auf Ihr Gerät zuzugreifen, gibt Fehlermeldungen nicht zurück.

Wenn Sie Iptables mit einer restriktiven Richtlinie wie im vorherigen Beispiel aktivieren, müssen Sie Regeln anhängen, um Ihre Konfiguration anzupassen. Wenn Sie beispielsweise die oben genannte Konfiguration ohne Hinzufügen einer angemessenen Ausnahme für die LOOPBACK -Schnittstelle (LO) beibehalten, funktionieren einige Anwendungen möglicherweise nicht korrekt. Sie müssen auch eingehender Verkehr zulassen, der zu einer von Ihrem Gerät gestarteten Verbindung gehört oder mit einer Verbindung in Verbindung steht.

Iptables Anhang Regeln und Iptables -Staaten

Es ist wichtig zu verstehen, dass Iptables Regeln auf Bestellung anwendet. Wenn Sie nach einer vorherigen Regel eine Regel definieren, schreibt die zweite Regel die letzte um, wenn ein Paket derselben Regel entspricht.

Ich mag das vorherige Beispiel; Sie haben alle eingehenden Verkehr blockiert, Sie müssen Ausnahmen für die Loopback -Schnittstelle anhängen. Dies kann erreicht werden, indem der Parameter -a (Append) hinzugefügt wird.

sudo iptables -a Eingabe -m ConnTrack -CTTState etabliert, verwandte -J Akzeptieren
sudo iptables -a output -m connTrack -CTTState etabliert -j Akzeptieren

Das Modul (-m) connTrack -ctstate Etabliert, verwandt weist Iptables an, zu bestätigen, ob sich der Verbindungszustand befindet Etabliert oder verwandt zu einer vorhandenen Verbindung, bevor die definierte Regelrichtlinie angewendet wird.

Es gibt 4 mögliche Zustände, die Iptables überprüfen können:

Iptables gibt neu an: Das Paket oder Verkehr, das Sie zulassen oder Block versuchen, eine neue Verbindung zu starten.

Iptables State etabliert: Das Paket oder Verkehr, das Sie zulassen oder Block blockieren.

Iptables staatlich verwandt: Das Paket oder der Verkehr startet eine neue Verbindung, bezieht sich jedoch mit einer vorhandenen Verbindung.

Iptables staatlich ungültig: Das Paket oder der Verkehr ist ohne den Staat unbekannt.

Die erste Zeile des obigen Beispiels weist Iptables an, eingehende Pakete aus dem von Ihrem Gerät gestarteten Datenverkehr zu akzeptieren oder mit Verbindungen in Verbindung zu stehen. Die zweite Linie weist Iptables an, nur ausgehende Verkehr von bereits festgelegten Verbindungen zu akzeptieren.

Iptables hängen an, um den Loopback -Verkehr zu akzeptieren und Schnittstellen zu definieren:

Die Loopback -Schnittstelle wird von Programmen verwendet, die mit dem Localhost interagieren müssen. Wenn Sie den Loopback -Verkehr nicht zulassen, funktionieren einige Anwendungen möglicherweise nicht.

Der folgende Befehl ermöglicht Loopback -Verbindungen:

sudo iptables -a Eingabe -i lo -j akzeptieren
sudo iptables -a output -o lo -j akzeptieren

Wobei -i und -o verwendet werden, um das Netzwerkgerät für eingehende Verkehr (-i) und den ausgehenden Verkehr (-o) anzugeben.

Anwendung einer zulässigen Richtlinie mit Iptables:

Sie können auch eine zulässige Richtlinie definieren, die den gesamten Datenverkehr zulässt, mit Ausnahme der angegebenen gesenkten oder abgelehnten. Sie können alles außer einem bestimmten IP- oder IP -Bereich aktivieren, oder Sie können Pakete basierend auf ihren Headern verweigern, unter mehr Möglichkeiten.

Das folgende Beispiel zeigt, wie eine zulässige Richtlinie angewendet wird, die den gesamten Datenverkehr ermöglicht, mit Ausnahme eines IP -Bereichs, der für den SSH -Dienst blockiert ist.

sudo iptables -p Eingabe akzeptieren
sudo iptables -p Ausgabe akzeptieren
sudo iptables -p vorne Drop
sudo iptables -a Eingabe -p tcp - -dort 22 -m iprange - -src -Reiche 192.168.1.100-192.168.1.110 -J Ablehnung

Das obige Beispiel wendet eine zulässige Richtlinie an, blockiert jedoch den SSH -Zugriff auf alle IPs, die zum Bereich 192 gehören.168.1.100 und 192.168.1.110.

Wob. Die Option -j (-spring) weist Iptables an, was mit dem Paket zu tun ist; In diesem Fall repräsentieren wir Ablehnung.

Blockieren von Anschlüssen mit iptables

Das folgende Beispiel zeigt, wie Sie einen bestimmten Port für alle Verbindungen blockieren, den SSH -Port.

sudo iptables -a Eingabe -p tcp -Destination -Port 22 -J Drop

Veränderungen von iptables speichern

Iptables -Regeln sind nicht anhaltend; Nach dem Neustart werden die Regeln nicht wiederhergestellt. Führen Sie die folgenden Befehle aus, in denen die erste Zeile die Regeln in der Datei /etc /iptables speichert.hoch.Regeln und die zweite Zeile besteht darin, die Datei für Iptables zu erstellen, die nach dem Neustart beginnen können.

sudo iptables-save> /etc /iptables.hoch.Regeln
Nano/etc/network/if-Pre-up.D/iptables

Fügen Sie Folgendes zur Datei hinzu und schließen Sie Speichernänderungen (Strg+x).

#!/bin/sh
/sbin/iptables-restore < /etc/iptables.up.rules

Geben Sie schließlich die Berechtigungen der Dateiausführung, indem Sie ausführen:

CHMOD +X/ETC/NETWORK/IF-PRE-up.D/iptables

Spülen oder Entfernen von Iptables -Regeln:

Sie können alle Ihre Iptables -Regeln entfernen, indem Sie den folgenden Befehl ausführen:

sudo iptables -f

Um eine bestimmte Kette wie Eingabe zu entfernen, können Sie ausführen:

sudo iptables -f

Abschluss:

Iptables gehören zu den anspruchsvollsten und flexiblen Firewalls auf dem Markt. Obwohl es ersetzt wird, bleibt es eine der verteilten Defensiv- und Routing -Software.

Die Implementierung kann von neuen Linux -Benutzern mit grundlegendem Wissen über TCP/IP schnell gelernt werden. Sobald Benutzer die Syntax verstehen, wird das Definieren von Regeln zu einer leichten Aufgabe.

Es gibt viel mehr zusätzliche Module und Optionen, die nicht durch dieses Einführungs -Tutorial behandelt wurden. Sie können mehr iptables Beispiele bei Iptables für Anfänger sehen.

Ich hoffe, dass dieses Iptables -Tutorial hilfreich war. Verfolgen Sie den Hinweis für weitere Linux -Tipps und Tutorials weiterhin Linux -Hinweis.