Site Overlay

Der Leitfaden für Anfänger zu iptables, the Linux Firewall

  • Korbin Brown
  • Aktualisiert August 27, 2020, 2:25pm EDT

Iptables ist ein äußerst flexibles Firewall-Dienstprogramm für Linux-Betriebssysteme. Egal, ob Sie ein Anfänger Linux Geek oder ein Systemadministrator sind, gibt es wahrscheinlich eine Möglichkeit, dass iptables eine große Verwendung für Sie sein kann. Lesen Sie weiter, wie wir Ihnen zeigen, wie Sie die vielseitigste Linux-Firewall konfigurieren.

Foto von ezioman.

Über iptables

iptables ist ein Befehlszeilen-Firewall-Dienstprogramm, das Richtlinienketten verwendet, um Datenverkehr zuzulassen oder zu blockieren., Wenn eine Verbindung versucht, sich auf Ihrem System zu etablieren, sucht iptables in seiner Liste nach einer Regel, die mit ihr übereinstimmt. Wenn es keine findet, greift es auf die Standardaktion zurück.

iptables kommt fast immer auf jeder Linux-Distribution vorinstalliert. Um es zu aktualisieren / installieren, rufen Sie einfach das iptables-Paket ab:

sudo apt-get install iptables

<

Es gibt GUI-Alternativen zu iptables wie Firestarter, aber iptables ist nicht wirklich so schwer, wenn Sie einige Befehle deaktiviert haben., Sie möchten bei der Konfiguration von iptables-Regeln äußerst vorsichtig sein, insbesondere wenn Sie SSH auf einem Server ausführen, da ein falscher Befehl Sie dauerhaft aussperren kann, bis er manuell auf dem physischen Computer behoben wird.

Arten von Ketten

iptables verwendet drei verschiedene Ketten: input, forward und output.

Input-Diese Kette wird verwendet, um das Verhalten für eingehende Verbindungen zu steuern. Wenn ein Benutzer beispielsweise versucht, SSH in Ihren PC/Server einzufügen, versucht iptables, die IP-Adresse und den Port mit einer Regel in der Eingabekette abzugleichen.,

Forward – Diese Kette wird für eingehende Verbindungen verwendet, die nicht tatsächlich lokal bereitgestellt werden. Denken Sie an einen Router – Daten werden immer an ihn gesendet, aber selten tatsächlich für den Router selbst bestimmt; Die Daten werden nur an sein Ziel weitergeleitet. Wenn Sie nicht eine Art Routing, NATing oder etwas anderes auf Ihrem System ausführen, das eine Weiterleitung erfordert, verwenden Sie diese Kette nicht einmal.

Es gibt eine sichere Möglichkeit zu überprüfen, ob Ihr System die Vorwärtskette verwendet/benötigt.,

iptables -L -v

<

Der Screenshot oben ist von einem Server, der seit einigen Wochen läuft und keine Einschränkungen für eingehende oder ausgehende Verbindungen hat. Wie Sie sehen, hat die Eingabekette 11 GB Pakete verarbeitet und die Ausgabekette 17 GB. Die Vorwärtskette hingegen musste kein einziges Paket verarbeiten. Dies liegt daran, dass der Server keine Weiterleitung durchführt oder als Pass-Through-Gerät verwendet wird.,

Ausgabe-Diese Kette wird für ausgehende Verbindungen verwendet. Zum Beispiel, wenn Sie versuchen, ping howtogeek.com, iptables wird seine Ausgabekette überprüfen, um zu sehen, was die Regeln in Bezug auf Ping und howtogeek.com bevor Sie eine Entscheidung treffen, den Verbindungsversuch zuzulassen oder abzulehnen.

Der Vorbehalt

Obwohl das Pingen eines externen Hosts etwas zu sein scheint, das nur die Ausgabekette durchlaufen müsste, denken Sie daran, dass zum Zurückgeben der Daten auch die Eingabekette verwendet wird., Denken Sie bei der Verwendung von iptables zum Sperren Ihres Systems daran, dass für viele Protokolle eine bidirektionale Kommunikation erforderlich ist, sodass sowohl die Eingabe-als auch die Ausgabekette ordnungsgemäß konfiguriert werden müssen. SSH ist ein gängiges Protokoll, das die Leute vergessen, auf beiden Ketten zuzulassen.

Standardverhalten der Richtlinienkette

Bevor Sie bestimmte Regeln konfigurieren, sollten Sie entscheiden, wie das Standardverhalten der drei Ketten aussehen soll. Mit anderen Worten, was sollen iptables tun, wenn die Verbindung nicht mit vorhandenen Regeln übereinstimmt?,

>

Führen Sie den Befehl iptables -L aus, um zu sehen, wofür Ihre Richtlinienketten derzeit mit nicht übereinstimmendem Datenverkehr konfiguriert sind.

Wie Sie sehen, haben wir auch den Befehl grep verwendet, um eine sauberere Ausgabe zu erhalten. In diesem Screenshot wird derzeit angenommen, dass unsere Ketten den Verkehr akzeptieren.

Mehrmals möchten Sie, dass Ihr System standardmäßig Verbindungen akzeptiert. Sofern Sie die Richtlinienkettenregeln nicht zuvor geändert haben, sollte diese Einstellung bereits konfiguriert sein., So oder so, hier ist der Befehl, um Verbindungen standardmäßig zu akzeptieren:

iptables --policy INPUT ACCEPT
iptables --policy OUTPUT ACCEPT
iptables --policy FORWARD ACCEPT

Standardmäßig auf die akzeptieren Regel, können Sie dann iptables verwenden, um bestimmte IP-Adressen oder Portnummern zu verweigern, während weiterhin alle anderen Verbindungen zu akzeptieren. Wir kommen gleich zu den Befehlen.,

Werbung

Wenn Sie lieber alle Verbindungen verweigern und manuell angeben möchten, welche Verbindungen Sie verbinden möchten, sollten Sie die Standardrichtlinie Ihrer Ketten ändern, um sie zu löschen. Dies wäre wahrscheinlich nur für Server nützlich, die vertrauliche Informationen enthalten und immer nur die gleichen IP-Adressen mit ihnen verbinden.,

iptables --policy INPUT DROP
iptables --policy OUTPUT DROP
iptables --policy FORWARD DROP

Verbindungsspezifische Antworten

Wenn Ihre Standardkettenrichtlinien konfiguriert sind, können Sie mit dem Hinzufügen von regeln für iptables, damit es weiß, was zu tun ist, wenn eine Verbindung von oder zu einer bestimmten IP-Adresse oder einem bestimmten Port hergestellt wird. In diesem Handbuch gehen wir auf die drei grundlegendsten und am häufigsten verwendeten „Antworten“ ein.

Accept-Erlauben Sie die Verbindung.

Drop – Drop die Verbindung, handeln, wie es nie passiert ist., Dies ist am besten, wenn Sie nicht möchten, dass die Quelle erkennt, dass Ihr System existiert.

Ablehnen-Die Verbindung nicht zulassen, aber einen Fehler zurücksenden. Dies ist am besten, wenn Sie nicht möchten, dass eine bestimmte Quelle eine Verbindung zu Ihrem System herstellt, diese jedoch wissen soll, dass Ihre Firewall sie blockiert hat.

Werbung

Der beste Weg, um den Unterschied zwischen diesen drei Regeln anzuzeigen, besteht darin, anzuzeigen, wie es aussieht, wenn ein PC versucht, einen Linux-Computer mit iptables zu pingen, die für jede dieser Einstellungen konfiguriert sind.,

Zulassen der Verbindung:

Löschen der Verbindung:

Ablehnen der Verbindung:

Zulassen oder Blockieren bestimmter Verbindungen

Wenn Ihre Richtlinienketten konfiguriert sind, können Sie jetzt iptables konfigurieren, um bestimmte Adressen, Adressbereiche und Ports zuzulassen oder zu blockieren. In diesen Beispielen setzen wir die Verbindungen auf DROP, aber Sie können sie auf ACCEPT oder REJECT, abhängig von Ihren Anforderungen und der Konfiguration Ihrer Richtlinienketten.,

Hinweis: In diesen Beispielen verwenden wiriptables -A, um Regeln an die vorhandene Kette anzuhängen. iptables beginnt am Anfang seiner Liste und durchläuft jede Regel, bis sie eine findet, mit der sie übereinstimmt. Wenn Sie eine Regel über einer anderen einfügen müssen, können Sie mit iptables -I die Nummer angeben, die in der Liste enthalten sein soll.

Verbindungen von einer einzigen IP-Adresse

Dieses Beispiel zeigt, wie alle Verbindungen von der IP-Adresse blockiert werden 10.10.10.10.,

iptables -A INPUT -s 10.10.10.10 -j DROP

Verbindungen aus einem Bereich von IP-Adressen

<

Dieses Beispiel zeigt, wie alle IP-Adressen im Netzwerkbereich 10.10.10.0/24 blockiert werden. Sie können eine Netzmaske oder eine Standard-Schrägstrichnotation verwenden, um den Bereich der IP-Adressen anzugeben.,

iptables -A INPUT -s 10.10.10.0/24 -j DROP

or

iptables -A INPUT -s 10.10.10.0/255.255.255.0 -j DROP

Connections to a specific port

This example shows how to block SSH connections from 10.10.10.10.

iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -j DROP

You can replace „ssh” with any protocol or port number. The -p tcp part of the code tells iptables what kind of connection the protocol uses., Wenn Sie ein Protokoll blockieren, das UDP anstelle von TCP verwendet, ist stattdessen erforderlich.

Dieses Beispiel zeigt, wie SSH-Verbindungen von einer beliebigen IP-Adresse blockiert werden.

iptables -A INPUT -p tcp --dport ssh -j DROP

Verbindungszustände

Wie bereits erwähnt, erfordern viele Protokolle eine bidirektionale Kommunikation. Wenn Sie beispielsweise SSH-Verbindungen zu Ihrem System zulassen möchten, müssen den Eingabe-und Ausgabeketten eine Regel hinzugefügt werden., Aber was ist, wenn Sie nur wollen, dass SSH in Ihr System kommt? Erlaubt das Hinzufügen einer Regel zur Ausgabekette nicht auch ausgehende SSH-Versuche?

<

Hier kommen Verbindungszustände ins Spiel, die Ihnen die Möglichkeit geben, die Zweiwegkommunikation zuzulassen, aber nur Einwegverbindungen herzustellen. Schauen Sie sich dieses Beispiel an, in dem SSH-Verbindungen AB 10.10.10.10 zulässig sind, SSH-Verbindungen BIS 10.10.10.10 jedoch nicht., Das System darf jedoch Informationen über SSH zurücksenden, solange die Sitzung bereits eingerichtet ist, was eine SSH-Kommunikation zwischen diesen beiden Hosts ermöglicht.

Änderungen speichern

Die Änderungen, die Sie an Ihren iptables-Regeln vornehmen, werden beim nächsten Neustart des iptables-Dienstes verworfen, es sei denn, Sie führen einen Befehl zum Speichern der Änderungen aus.,div id=“02f11c1957″>

Red Hat / CentOS:

/sbin/service iptables save

Or

/etc/init.d/iptables save

Other Commands

List the currently configured iptables rules:

iptables -L

Adding the -v option will give you packet and byte information, and adding -n will list everything numerically., Mit anderen Worten – Hostnamen, Protokolle und Netzwerke werden als Nummern aufgeführt.

>

Um alle aktuell konfigurierten Regeln zu löschen, können Sie den Flush-Befehl ausgeben.

iptables -F

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.