Zurück zum Blog

Konfigurieren einer Iptables-Firewall: Grundlegende Regeln und Befehle

Konfigurieren einer Iptables-Firewall: Grundlegende Regeln und Befehle

Einführung

Iptables​ ist ein Befehlszeilen-​Firewall ​-Dienstprogramm. Das bedeutet, dass es sich um eine Software handelt, mit der Sie eine Firewall auf Ihrem System konfigurieren können. Es ist standardmäßig in der Regel auf ​Linux​-Systemen verfügbar. In dieser Anleitung werden wir ​einige der gängigen Regeln und Befehle besprechen, die mit der iptables​-Firewall einhergehen. Wann immer eine Verbindung versucht, sich mit Ihrem System aufzubauen, greift die Firewall auf diese Regeln zurück, um zu bestimmen, was der nächste Schritt sein soll.

Iptables-Befehle

Diese Anleitung stellt einige der wichtigsten iptables-Befehle vor. Um der Anleitung zu folgen, müssen Sie ein grundlegendes Verständnis davon haben, was iptables ist und wie es funktioniert. Dies wird Ihnen helfen, die Regeln, die Sie mit den folgenden Befehlen implementieren, besser zu verstehen. Denken Sie daran, dass jeder der unten angegebenen Befehle einzeln verwendet werden kann. Andererseits können Sie sie auch nach Ihren spezifischen Bedürfnissen kombinieren.

Dinge, die Sie beachten sollten

Bevor Sie weiterlesen, hier sind einige Dinge, die Sie beachten sollten:

  • Die Reihenfolge der Regeln in iptables ist wichtig.
  • Um eine neue Regel am Ende einer Kette anzuhängen, muss Ihr ​iptables-Befehl die Option ​-A verwenden.​​
  • Wenn Sie die Regel an einer anderen Position einfügen möchten, müssen Sie die Option ​-I verwenden. Diese Option ermöglicht es Ihnen, den genauen Ort der Regel anzugeben. Wenn Sie die Regel am Anfang der Kette platzieren möchten, geben Sie einfach keine Regelnummer an.
  • Um einen konsistenten Zugriff auf Ihren Server zu gewährleisten, blockieren Sie standardmäßig den SSH-Verkehr auf Port 22.
  • Falls Sie dies nicht tun und den Zugriff auf Ihren Server verlieren, können Sie sich über die Konsole wieder verbinden. Erlauben Sie den SSH-Verkehr, um die Firewall-Einstellungen zu ändern.
  • Wenn Sie jemals das aktuell aktive Regelwerk überprüfen möchten, verwenden Sie die Befehle sudo iptables -S​ und ​ ​sudo iptables -L.

Darüber hinaus haben wir eine ​detaillierte Anleitung zum Auflisten und Löschen von iptables-Firewall-Regeln​, die Ihnen helfen wird, Ihre iptables-Firewall optimal zu nutzen.

Nachdem wir die Voraussetzungen geklärt haben, lassen Sie uns in einige der ​gängigen iptables-Befehle eintauchen​:

So speichern Sie Ihre Regeln

Wir beginnen damit, wie Sie Ihre Regeln speichern können. Es ist wichtig zu beachten, dass iptables-Regeln flüchtig sind. Das bedeutet, dass sie nach einem Neustart Ihres Systems verloren gehen – es sei denn, Sie speichern sie. Hier erfahren Sie, wie Sie Ihre neuen Regeln manuell auf einem ​Ubuntu​- bzw. ​CentOS​-Server speichern können:

  • Ubuntu

Der einfachste Weg, Ihre neuen Regeln auf einem Ubuntu-Server zu speichern, ist die Verwendung des Pakets iptables-persistent​. Sie können ganz einfach ​einen Ubuntu-Server erstellen, indem Sie dieser Anleitung folgen​.

Der erste Schritt zum Speichern Ihrer neuen iptables-Regeln ist die Installation des Pakets iptables-persistent ​mit apt-get. So können Sie es installieren:

Iptables Firewall 1

Während des Installationsprozesses müssen Sie entscheiden, ob Sie die aktuell aktiven Firewall-Regeln speichern möchten. Um stattdessen die Regeln zu aktualisieren und die Änderungen zu speichern, verwenden Sie diesen Befehl:

Iptables Firewall 2

Der obige Befehl funktioniert in der Regel für Ubuntu-Versionen nach 16.04. Wenn Sie eine ältere Version verwenden, nutzen Sie stattdessen diesen Befehl:

  • CentOS

Sie können Ihre Firewall mit iptables auf CentOS 6 oder älteren Versionen konfigurieren. CentOS 7 verwendet stattdessen FirewallD. Folgen Sie dieser Anleitung, um zu erfahren, wie Sie FirewallD auf CentOS 7 einrichten.

Sie können Ihre neuen Regeln auf CentOS mit dem ​iptables-Init-Skript speichern. Siehe folgenden Befehl:

Dieser Befehl speichert Ihre neuen Regeln für die iptables-Firewall. Die aktuell aktiven iptables-Regeln finden Sie in der /etc/sysconfig/iptables​ -Datei.

Nützliche iptables-Befehle

Kommen wir nun zu einigen sehr nützlichen iptables-Firewall-Befehlen, die Sie möglicherweise auf Ihrem Server verwenden müssen.

  • Loopback-Verbindungen

Zuerst werden wir untersuchen, wie Sie Loopback-Verbindungen zulassen können. Ihr System verwendet eine Loopback-Schnittstelle, um Verbindungen an sich selbst zu senden. Stellen Sie sich beispielsweise vor, Sie haben diesen Befehl ausgeführt: ​ping localhost​ oder ​ping 127.0.0.1​. Ihr Server verwendet eine Loopback-Schnittstelle oder ein lo​, um sich im Wesentlichen selbst anzupingen. In anderen Fällen verwendet der Server sie, wenn Ihr Anwendungsserver so konfiguriert ist, dass er eine Verbindung zur „localhost“-Adresse herstellt.

Unabhängig von der Situation müssen Sie sicherstellen, dass Ihre iptables-Firewall diese Verbindungen nicht blockiert. Daher müssen Sie Loopback-Verbindungen zulassen, damit diese Funktionen ausgeführt werden können.

Hier sind die Befehle, die Sie ausführen müssen, um den gesamten Datenverkehr auf der Loopback-Schnittstelle zuzulassen:

Iptables Firewall 3

  • Bestehende und verwandte eingehende Verbindungen

Eine andere Art von Verbindung, die Sie möglicherweise zulassen müssen, ist die ausgehende Verbindung. Um sicherzustellen, dass Ihr Server eingehenden bzw. ausgehenden Datenverkehr empfängt und sendet, müssen Sie bestehende und verwandte eingehende Verbindungen zulassen. Dies ermöglicht es dem Server, Antwortdatenverkehr an ausgehende Verbindungen zu senden. Verwenden Sie diesen Befehl, um sowohl bestehende als auch verwandte eingehende Verbindungen zuzulassen:

Established and Related Incoming Connections

  • Bestehende ausgehende Verbindungen

Der Server sendet in der Regel Antworten auf eingehende Verbindungen in Form von ausgehendem Datenverkehr bestehender Verbindungen. Um diese zuzulassen, verwenden Sie den folgenden Befehl:

Established Outgoing Connections

  • Intern zu Extern

Manchmal müssen Sie Ihre Firewall sogar so konfigurieren, dass sie dem internen Netzwerk Zugriff auf das externe gewährt. Standardmäßig sollte Ihr externes Netzwerk ​eth0​ und ​eth1 Ihr internes Netzwerk sein. Wenn dies der Fall ist, verwenden Sie diesen Befehl, um den Zugriff zu aktivieren:

Internal to External

  • Verwerfen ungültiger Pakete

Manchmal werden einige Netzwerkdatenpakete als ungültig gekennzeichnet. Meistens können Sie diese ungültigen Pakete einfach verwerfen. Verwenden Sie dazu den folgenden Befehl:

Dropping Invalid Packets

Regeln zum Blockieren von IP-Adressen

Als Nächstes sehen wir uns einige Befehle an, mit denen Sie Verbindungen von bestimmten IP-Adressen blockieren können. Um die Sache zu vereinfachen, verwenden wir die ​15.15.15.51 IP-Adresse als Beispiel in unseren Befehlen. Sie können diesen Wert durch Ihre spezifische IP-Adresse ersetzen.

In ​-s 15.15.15.51, ​​steht das ​-s​ für Source (Quelle). Der Befehl gibt also die Quell-IP-Adresse „15.15.15.51“ an. Auf ähnliche Weise können Sie die Quell-IP-Adresse in jeder Firewall-Regel angeben. Dies schließt die Erlaubnis- und die Ablehnungsregel ein.

Wenn Sie die Verbindung ablehnen möchten, verwenden Sie im Befehl REJECT anstelle von DROP, und zwar so:

Infolgedessen gibt Ihr Server die Fehlermeldung „Verbindung verweigert“ (connection refused) aus, wann immer diese bestimmte IP-Adresse eine Verbindungsanfrage sendet.

  • Blockieren von Verbindungen zu einer bestimmten Schnittstelle

Es ist möglich, alle Verbindungsanfragen von einer bestimmten IP-Adresse an eine bestimmte Netzwerkschnittstelle zu blockieren. In unserem Beispiel ist die IP-Adresse 15.15.15.51​ und die Netzwerkschnittstelle ist ​eth0​. Verwenden Sie diesen Befehl, um die Verbindungen zu blockieren:

Das Tolle daran ist, dass Sie die Netzwerkschnittstelle in jeder Regel angeben können. Dies bedeutet, dass jede Regel angewendet und auf ein bestimmtes Netzwerk beschränkt werden kann.

Regeln für den Dienst: SSH

SSH ​wird relevant, wenn Sie einen Cloud-Server verwenden. In diesem Fall müssen Sie eingehende SSH-Verbindungen auf Port 22 zulassen. Durch das Aktivieren dieser Verbindungen können Sie eine Verbindung zu Ihrem Server herstellen und diesen verwalten. Hier werden wir eine Reihe gängiger Regeln für SSH besprechen.

  • Zulassen aller eingehenden SSH-Verbindungen

Die folgenden Befehle aktivieren alle eingehenden SSH-Verbindungen:

In der obigen Gruppe müssen Sie den zweiten Befehl nur verwenden, wenn die ​OUTPUT​-Richtlinie nicht auf ​ACCEPT​ eingestellt ist. Er erlaubt den ausgehenden Datenverkehr von hergestellten SSH-Verbindungen.

  • Eingehende SSH-Verbindungen aus einem Subnetz zulassen

Der vorherige Befehl erlaubt alle eingehenden Verbindungen. Sie können die folgenden Befehle verwenden, um nur eingehende Verbindungen von einer bestimmten IP-Adresse oder einem bestimmten Subnetz zuzulassen. Nehmen wir an, Sie möchten nur eingehende Verbindungen aus dem ​15.15.15.0/24​ Subnetz:

Wie zuvor müssen Sie den zweiten Befehl nur verwenden, wenn die ​OUTPUT​-Richtlinie nicht auf ​ACCEPT​ eingestellt ist. Er erlaubt den ausgehenden Datenverkehr von hergestellten SSH-Verbindungen.

  • Ausgehende SSH-Verbindungen zulassen

Verwenden Sie diese Befehle, wenn die Firewall-​OUTPUT​-Richtlinie nicht auf ​ACCEPT​ eingestellt ist und Sie SSH-Verbindungen aktivieren möchten. Dies ermöglicht es Ihrem Server, SSH-Verbindungen zu anderen Servern zu initiieren:

Um SSH auf Ihren Cloud-Servern weiter zu nutzen, werfen Sie einen Blick auf unsere Tutorials über ​ wie Sie SSH verwenden, um eine Verbindung zu einem Remote-Server in Ubuntu herzustellen ​und wie Sie Ihren Linux-Server für die Verwendung der SSH-schlüsselbasierten Authentifizierung konfigurieren​.

  • Eingehende Rsync-Verbindungen aus einem Subnetz zulassen

Rsync​ ist eine Funktion, mit der Sie Dateien von einem System auf ein anderes übertragen können. Sie läuft auf Port 873. Wenn Sie also eingehende Rsync-Verbindungen auf Port 873 von einer bestimmten IP-Adresse oder einem bestimmten Subnetz zulassen möchten, verwenden Sie die folgenden Befehle:

Wie Sie sehen können, haben wir die Quell-IP-Adresse zusammen mit dem Zielport angegeben. Sie verwenden den zweiten Befehl nur, wenn die Firewall-​OUTPUT​-Richtlinie nicht auf ​ACCEPT​ eingestellt ist. Er erlaubt den ausgehenden Datenverkehr von hergestellten Rsync-Verbindungen. Darüber hinaus können Sie einen Blick auf unser ​Tutorial zur Nutzung von Rsync zur Synchronisierung lokaler und entfernter Verzeichnisse auf einem VPS werfen​.

Regeln für den Dienst: Webserver

HTTP-Verbindungen werden typischerweise auf Port 80 empfangen. Ebenso erfolgt HTTPS normalerweise auf Port 443. Webserver wie ​Apache​ und ​Nginx​ lauschen auf diesen Ports, um Verbindungsanfragen abzufangen. Manchmal führen die Standardeinstellungen dazu, dass Ihr Server diese eingehenden Anfragen ablehnt oder verwirft. Aus diesem Grund müssen Sie neue Regeln festlegen, um den Datenverkehr dennoch zuzulassen.

  • Alle eingehenden HTTP-Verbindungen zulassen

Sie können alle eingehenden HTTP-Verbindungen auf Port 80 mit diesen Befehlen zulassen:

Sie verwenden den zweiten Befehl nur, wenn die Firewall-​OUTPUT​ -Richtlinie nicht auf ACCEPT​ eingestellt ist. Er erlaubt den ausgehenden Datenverkehr von hergestellten HTTP-Verbindungen.

  • Zulassen aller eingehenden HTTPS-Verbindungen

Verwenden Sie diese Befehle, um alle eingehenden HTTPS-Verbindungsanfragen auf Port 443 zuzulassen:

Sie verwenden den zweiten Befehl nur, wenn die iptables-Firewall-​OUTPUT​-Richtlinie nicht auf ACCEPT​ festgelegt ist. Sie lässt den ausgehenden Datenverkehr etablierter HTTP-Verbindungen zu.

  • Zulassen aller eingehenden Verbindungen von HTTP und HTTPS

Sie können das Multiport-Modul verwenden, wenn Sie Datenverkehr sowohl von HTTP- als auch von HTTPS-Ports zulassen möchten. Verwenden Sie in diesem Fall diese Befehle:

Sie verwenden den zweiten Befehl nur, wenn die Firewall-​OUTPUT​-Richtlinie nicht auf ACCEPT​ festgelegt ist. Sie lässt den ausgehenden Datenverkehr etablierter HTTP- und HTTPS-Verbindungen zu.

Regeln für den Dienst: MySQL

Manchmal verwendet ein Client einen Remote-Server, um auf Ihren ​MySQL​-Datenbankserver zuzugreifen. In diesem Fall müssen Sie den eingehenden Datenverkehr vom entsprechenden Port manuell zulassen. MySQL lauscht auf Verbindungsanfragen von Port 3306.

  • Zulassen eingehender MySQL-Verbindungen aus einem Subnetz

Sie müssen die Quelle angeben, wenn Sie MySQL-Verbindungen aus einem bestimmten Subnetz zulassen möchten. In unserem Beispiel lassen wir eingehenden Datenverkehr aus dem 15.15.15.0/24​-Subnetz mit diesen Befehlen zu:

Sie verwenden den zweiten Befehl nur, wenn die Firewall-​OUTPUT​-Richtlinie nicht auf ACCEPT​ festgelegt ist. Sie lässt den ausgehenden Datenverkehr etablierter MySQL-Verbindungen zu.

  • Aktivieren von MySQL-Verbindungen zu einer Schnittstelle

Wenn Sie auch angeben möchten, welche Netzwerkschnittstelle die MySQL-Verbindungen empfangen soll, können Sie diese Befehle verwenden:

In diesem Fall lassen wir die Verbindungen zu einer privaten Netzwerkschnittstelle namens eth1​.

zu. Sie verwenden den zweiten Befehl nur, wenn die Firewall ​OUTPUT​-Richtlinie nicht auf ACCEPT​ festgelegt ist. Sie lässt den ausgehenden Datenverkehr etablierter MySQL-Verbindungen zu.

Sie können unserer ​Anleitung für eine einfache Einrichtung von MySQL auf Ihrem Server folgen​.

Regeln für den Dienst: PostgreSQL

Ihr Client verwendet möglicherweise einen Remote-Server, um auf Ihren ​PostgreSQL​-Datenbankserver zuzugreifen. In diesem Fall müssen Sie diese eingehenden Verbindungen zulassen. Diese Verbindungen erfolgen über Port 5432.

  • Zulassen eingehender PostgreSQL-Verbindungen aus einem Subnetz

Sie können die folgenden Befehle verwenden, um eingehende PostgreSQL-Verbindungen aus einem bestimmten Subnetz oder einer bestimmten IP-Adresse zuzulassen. Wie Sie sehen können, haben wir die Quelle angegeben, bei der es sich um das ​15.15.15.0/24​ -Subnetz handelt.

Sie verwenden den zweiten Befehl nur, wenn die Firewall ​OUTPUT​-Richtlinie nicht auf ACCEPT​ festgelegt ist.. Es erlaubt den ausgehenden Datenverkehr von hergestellten PostgreSQL-Verbindungen.

  • PostgreSQL-Verbindungen für eine bestimmte Schnittstelle aktivieren

Wenn Sie PostgreSQL-Verbindungen nur für eine bestimmte Netzwerkschnittstelle zulassen möchten, verwenden Sie diese Befehle:

In diesem Fall erlauben wir die Verbindungen zu einer privaten Netzwerkschnittstelle namens eth1​. Sie verwenden den zweiten Befehl nur, wenn die Firewall-Richtlinie für ​OUTPUT​ nicht auf ​ACCEPT​ festgelegt ist. Es erlaubt den ausgehenden Datenverkehr von hergestellten PostgreSQL-Verbindungen.

Folgen Sie dieser ​Anleitung, um PostgreSQL auf Ihrem Ubuntu-Server zu installieren​.

Regeln für den Dienst: Mail

Möglicherweise müssen Sie Ihre Firewall auch entsprechend dem von Ihnen verwendeten Mailserver konfigurieren. Beispielsweise können ​Sendmail​ und ​Postfix​ Verbindungen auf einer Reihe verschiedener Ports empfangen. Dies hängt von dem Protokoll ab, das Sie für die E-Mail-Zustellung verwenden. Um bestimmte E-Mail-Verbindungen zu blockieren und zuzulassen, müssen Sie wissen, welches Protokoll Sie verwenden.

  • Eingehende SMTP-Verbindungen zulassen

SMTP-Verbindungen gehen normalerweise über Port 25 ein. Obwohl SMTP üblicherweise auch Port 587 für ausgehende E-Mails verwendet. Verwenden Sie die folgenden Befehle, um Ihrem Server zu erlauben, auf diese Verbindungen zu antworten:

Sie verwenden den zweiten Befehl nur, wenn die Firewall-Richtlinie für ​OUTPUT​ nicht auf ACCEPT​ festgelegt ist. Es erlaubt den ausgehenden Datenverkehr von hergestellten SMTP-Verbindungen.

  • Alle eingehenden IMAP-Verbindungen zulassen

Um Ihrem Server zu erlauben, auf alle eingehenden IMAP-Verbindungen auf Port 143 zu antworten, geben Sie einfach Folgendes ein und führen Sie es aus:​

Sie verwenden den zweiten Befehl nur, wenn die Firewall ​OUTPUT​ Richtlinie nicht auf ACCEPT​ festgelegt ist. Es erlaubt den ausgehenden Datenverkehr von hergestellten IMAP-Verbindungen.

  • Alle eingehenden IMAPS-Verbindungen zulassen

Verwenden Sie diese Befehle, um Ihrem Server zu erlauben, auf IMAPS-Verbindungen auf Port 993 zu antworten:

Sie verwenden den zweiten Befehl nur, wenn die Firewall-Richtlinie für ​OUTPUT​ nicht auf ACCEPT​ festgelegt ist. Es erlaubt den ausgehenden Datenverkehr von hergestellten IMAPS-Verbindungen.

  • Alle eingehenden POP3-Verbindungen zulassen

Diese Verbindungen gehen über Port 993 ein. Wenn Sie möchten, dass Ihr Server auf IMAPS-Verbindungsanfragen antwortet, verwenden Sie die folgenden Befehle:

Sie verwenden den zweiten Befehl nur, wenn die Firewall-Richtlinie für ​OUTPUT​ nicht auf ACCEPT​ festgelegt ist. Es erlaubt den ausgehenden Datenverkehr von hergestellten POP3-Verbindungen.

  • Alle eingehenden POP3S-Verbindungen zulassen

Verwenden Sie diese Befehle, um Ihrem Server zu erlauben, Verbindungen mit POP3S-Anfragen herzustellen, die auf Port 995 eingehen:

Sie verwenden den zweiten Befehl nur, wenn die Firewall-​OUTPUT -Richtlinie nicht auf ACCEPT​ eingestellt ist. Er erlaubt den ausgehenden Datenverkehr von aufgebauten POP3S-Verbindungen.

  • So blockieren Sie ausgehende SMTP-E-Mails

Anstatt eingehende Verbindungen zuzulassen und die Serverantwort zu aktivieren, möchten Sie ausgehende E-Mails möglicherweise komplett blockieren. Sie können alle ausgehenden SMTP-E-Mails auf Port 25 mit diesem Befehl blockieren:

Infolgedessen wird der gesamte ausgehende Datenverkehr auf Port 25 von der iptables-Firewall abgewiesen. Sie können dieselbe Befehlsstruktur verwenden, wenn Sie einen anderen Dienst abweisen möchten. Sie müssen lediglich Port 25 durch die entsprechende Portnummer ersetzen.

Fazit

Diese Anleitung deckt die wichtigsten iptables-Firewall-Befehle ab. Sie bietet Ihnen die grundlegenden Werkzeuge, die Sie benötigen, um Ihre iptables-Firewall effektiv zu konfigurieren. Denken Sie daran, dass es keine Universallösung gibt. Diese Befehle sind äußerst flexibel. Das bedeutet, dass Sie sie so verwenden können, wie es für Sie und Ihre Anforderungen am besten passt.

Viel Spaß beim Computing!

author

Manpreet Singh

Autor · CloudSigma

Preslav Dobrev ist ein kreativer Designer bei CloudSigma und konzentriert sich auf eine konsistente Unternehmensidentität durch traditionelle und innovative Marketingkanäle. Er versteht es meisterhaft, künstlerische Vision mit strategischem Marketing zu verbinden, um wirkungsvolle Markengeschichten zu schaffen.

Kommentare

Noch keine Kommentare. Schreiben Sie den ersten.