Linux Bibel online ~ Iptables-Firewall

Creative Commons Lizenzvertrag
Dieses Werk ist lizenziert unter einer Creative Commons Namensnennung - Nicht-kommerziell - Weitergabe unter gleichen Bedingungen 3.0 Österreich Lizenz.

Change language by Google translator: ...

Auf dieser Seite geht es um die professionelle Art die Linux-Firewall zu konfigurieren - ehrlich gesagt muss man dazu einiges lernen, verstehen und auch darüber nachdenken was man auch wirklich will. Die professionelle Art die Firewall zu konfigurieren ist jedoch auch nicht für jeden Nutzer nötig - interessant wird dies erst wenn man einen Server im Internet betreibt oder zu Hause oder in der Firma ein professionelles Netzwerk erstellen möchte. Ansonsten möchte ich dem Nutzer eher die einfache Variante mittels UFW und GUFW an das Herz legen.

Grundlagen

Um zu verstehen wie man mit der Firewall arbeiten kann und das System oder das ganze Netzwerk professionell abzusichern muss man erst einmal einige Dinge um das ganze Herum verstehen, ansonsten erreicht man gleich einmal gar nichts.

Nun, wie funktioniert das Internet / Netzwerk eigentlich? Wenn man sich mit dem Internet oder einfach nur einem lokalen Netzwerk verbindet - um etwa mit dem Webbrowser eine Webseite zu öffnen oder mit dem Mail-Klient die Emails abzurufen passiert so einiges. Nehmen wir einmal an Sie wollen die Linux Bibel im Webbrowser öffnen, Sie geben im Webbrowser die Adresse ein oder klicken auf das Lesezeichen - der Webbrowser sendet die Anfrage (auch über gewisse Umwege) an den Webserver der Linux Bibel, der Webserver der Linux Bibel sendet die Seite an Ihren Webbrowser. Dies mag einfach klingen, ganz so einfach ist dies nun auch wieder nicht.

Der Server sendet also die gewünschten Daten an Ihren Webbrowser und die Seite öffnet sich darin damit Sie diese sehen können. Je nach Geschwindigkeit der Internet-Verbindung merkt man das sich eine Webseite nur nach und nach aufbaut, also ein Stücken nach dem Anderen. Die Webseite die sich in Ihrem Webbrowser öffnet kommt nämlich nicht in einem einzigen ganzen Teil über das Netz in Ihren Browser - sondern in vielen kleinen Teilen, dies sehen Sie schon daran wenn die Internet-Verbindung sehr langsam ist das sich selbst Bilder nur langsam Schritt für Schritt aufbauen - selbst ein einziges Bild wird in vielen kleinen Teilen über das Netz gesendet. Solche Teile nennt man nun "Daten-Pakete".

Jedes Dieser Daten-Pakete beinhaltet nun nicht nur einen kleinen Teil der eigentlichen Datei die übertragen werden soll sondern noch viele andere Informationen in einem Bereich des Paketes den man "Header" nennt. Diese dienen dazu das alles was im Netzwerk geschieht auch geregelt abläuft. Man muss dabei denken das man nicht alleine im Netzwerk ist - das Internet ist ja eigentlich nichts anderes als ein riesiges Netzwerk, in diesem Netzwerk gibt es unendlich viele Server die viele verschiedene Dienste anbieten und viele Nutzer wollen an diese Dienste ran kommen. Damit sich beispielsweise die richtige Webseite im richtigen Webbrowser öffnet - also die richtigen Daten-Pakete an die richtige Stelle gelangen sind so einige Informationen in diesem Header gespeichert. Als erstes gleich einmal die "IP-Adresse" des Systems an das die Daten gesendet werden sollen, das "Protokoll" über das die Daten gesendet werden, der "Port" von dem das Paket gesendet wurde - über diesen gelangt das Paket am Ziel auch in das System, eine "fortlaufende Nummer" damit die Daten dann wieder in der richtigen Reihenfolge zusammen gesetzt werden können und noch so einige weitere Daten die aber für unsere Zwecke nicht sonderlich interessant sind.

Die IP-Adresse ist grob gesagt die Wichtigste dieser Informationen, die IP-Adresse kann man etwa so verstehen wie Ihre Wohn-Adresse mit allen Informationen die dazu gehören - Hausnummer, Postleitzahl, Staat, Bundesland und die Nummer der Tür - damit etwa die Post Ihre Sendungen richtig zustellen kann - Ihre Adresse gibt es nur ein einziges Mal auf dieser Welt. Genau so ist es mit den IP-Adressen, jede Adresse gibt es nur ein einziges Mal - auch wenn Ihre IP-Adresse etwa alle 24 Stunden (möglicherweise) von Ihrem Provider gewechselt wird. Diese IP-Adresse dient also dazu damit Daten-Pakete an die richtige Stelle gelangen. Ihre lokale IP-Adresse erfragen Sie etwa durch den Befehl:

ifconfig

Je nach System benötigen Sie dazu Administrator-Rechte oder auch nicht:

Unter Linux die lokale IP-Adresse abfragen

Unter Linux die lokale IP-Adresse abfragen

Die IP-Adresse die Ihnen Ihr Provider gibt - und damit die tatsächlich wichtige ist - also die Adresse an die Daten an Sie gesendet werden erfragen Sie am einfachsten indem Sie das Paket "curl" über die Paket-Verwaltung installieren und (als normaler Nutzer) den Befehl:

curl ifconfig.co

ausführen:

Unter Linux die öffentliche IP-Adresse abfragen

Unter Linux die öffentliche IP-Adresse abfragen

Egal ob Sie über einen Router in das Internet gehen oder nicht - hiermit erhalten Sie Ihre öffentliche IP-Adresse die Ihnen Ihr Provider zu teilt. Dies ist aber nur eine Hintergrund-Information - für Ihre Firewall ist nur Ihre lokale relevant.

Das Protokoll ist eine weitere "relativ" wichtige Information für diese Daten-Pakete. Hier gibt es zwei unterschiedliche, das Protokoll "TCP" ist das wichtigste darunter, darüber laufen die meisten Dienste. Über TCP werden Internet-Webseiten, FTP-Transporte, Streaming und dergleichen verteilt. Dann kommt noch "UDP", über dieses laufen weniger wichtige Dienste wie etwa das Abfragen der genauen Uhrzeit und ähnliches.

Extrem wichtig ist nun der so genannte "Port". Ports kann man sich so vorstellen wie viele Straßen die aus einer Stadt hinaus oder in eine solche hinein führen, jede Straße führt im Grunde genommen zu einem anderen Ziel. Nehmen wir Ihre Netzwerk-Karte - egal ob Sie nun Ethernet, WLAN, UMTS oder sonst etwas nutzen, jede Kommunikation führt über diese jeweils gerade genutzte Karte. Unter anderem gibt es viele Anwendungen die das Netzwerk / Internet nutzen. Der Webbrowser, der Mail-Klient, die Software die die Zeit von einem Zeit-Server abfragt, der FTP-Klient und so weiter und so fort. Viele Anwendungen nutzen den selben Port, manche wieder spezielle, so nutzt der Webbrowser und der Webserver etwa den Port 80 oder HTTP wie auch 443 oder HTTPS für die sichere Kommunikation, der Mail-Klient Port 25 oder SMTP und so weiter und so fort. Es gibt tausende von verschiedenen Ports - Sie finden alle möglichen Ports im System-Verzeichnis "/etc/services". Diese Ports dienen nun einerseits dazu das jedes Daten-Paket auch zur richtigen Anwendung kommt und andererseits zur Sicherheit damit sich eine Anwendung nicht durch eine andere angreifen lässt.

Grundlagen der Linux-Firewall

Nun kennen wir die grundlegenden Teile der Kommunikation im Netzwerk - mehr müssen wir für die Konfiguration der Firewall nicht wirklich verstehen, jetzt wollen wir uns in die Tiefen der Firewall unter Linux beschäftigen. Wenn wir uns diese Homepage schon etwas genauer angesehen haben finden wir dort schon GUFW un UFW, wenn man sich dann auch noch ein wenig in die Paket-Verwaltung vertieft findet man zum Thema Firewall noch viel mehr, etwa IPtables, Nftables, Shoerwall, FW-Builder und so weiter und so fort. Dies mag verwirrend sein - aber unter Linux gibt es nur eine einzige Firewall - diese nennt sich "Netfilter" und ist bereits in den Kernel integriert. Alles was man zum Thema Firewall unter Linux findet ist nicht selbst die Firewall sondern dient dazu die Firewall - also den Netfilter zu konfigurieren.

Der Aufbau: Als erstes wollen wir uns den Aufbau der Firewall ansehen, der Netfilter besteht aus drei Schichten. Als oberste Ebene bestehen die so genannten "Tables" - also Tabellen, jede Tabelle hat seine eigene Aufgabe. In diesen Tabellen liegen wiederum die "Chains" - Ketten - auch hier haben diese wieder jede ihre eigene Aufgabe und dann kommen die eigentlichen "Rules" - Regeln.

Die Tabellen - also Tables bilden die oberste Schicht der Firewall, jede dieser Tabellen hat nun verschiedene Aufgaben:

filter Hier stehen die eigentlichen Regeln die die Sicherheit gewährleisten
nat Hier finden sich Regeln zur Weiterleitung, also etwa wenn das System als Router dient
mangle Regeln zur Manipulation von Paketen
raw Diese Tabelle dient dazu diverse Ausnahmen bei Verbindungen zu setzen

In der Regel wird der Standard-Nutzer nur die erste Tabelle - also "filter" Tatsächlich nutzen, hier fügt man seine Regeln ein die die Firewall dann umsetzen soll.

In diesen Tabellen liegen nun die so genannten Ketten - Chains - diese haben wieder jede ihre eigene Aufgabe (dies ist im Moment alles zusammen etwas kompliziert sich vor zu stellen - doch später werden Sie schnell begreifen wie alles zusammen hängt):

Kette in Tabelle Beschreibung
INPUT filter | mangle Pakete die vom Netzwerk in unser System gelangen
OUTPUT filter | nat | mangle | raw Pakete die von unserem System in das Netzwerk gelangen
FORWARD filter | mangle Pakete die von unserem System weiter geleitet werden
PREROUTING nat | mangle | raw Bearbeitung von Paketen vor der Weiterleitung
POSTROUTING nat | mangle Bearbeitung von Paketen nach der Weiterleitung

Auch hier - in der Regel wird der Standard-Nutzer nur die Kette "INPUT" nutzen, also Daten-Pakete prüfen die vom Netzwerk in unser System gelangen wollen - denn diese könnten unsere Sicherheit gefährden.

Regeln / Ziele / Targets: In diesen Ketten befinden sich nun die eigentlichen Regeln - man nennt diese "Targets" oder Ziele. Diese definieren was mit jedem Daten-Paket das in unser System gelangen will passieren soll, hier nun einmal die Ziele:

Ziel Beschreibung
ACCEPT Das Paket darf in unser System, wird angenommen
DROP Das Paket darf nicht in unser System, wird verworfen
REJECT Das Paket darf nicht in unser System, wird zurück gesendet
LOG Das Paket wird protokolliert, in die Log-Datei zur Information gespeichert

Wir haben im Grunde genommen also verschiedene Tabellen in denen Ketten mit den Regeln für unsere Firewall liegen, wir wollen uns nun ansehen wie diese nun tatsächlich funktionieren - dann werden Sie auch die Zusammenhänge erkennen.

IPtables - die Firewall konfigurieren

Gleich einmal zu Beginn - an den Regeln der Firewall darf nur der Nutzer root - also der Administrator des Systems spielen. In diesem Beitrag werden wir die IPtables näher kennen lernen, die aktuelleren NFtables kommen später. Bevor Sie an den Regeln der Firewall drehen ist es absolut nötig sich mit der nötigen Technik vertraut zu machen - im Grunde genommen geht es darum erst zu denken und dann zu werkeln.

Als erstes sollten Sie einmal in der Paket-Verwaltung nach sehen ob das Paket "iptables" auch installiert ist - dies ist in der Regel der Fall.

Als erstes wollen wir uns nun einmal ansehen welche Regeln bereits bestehen - in der Grund-Installation in der die Firewall unter auf Debian basierenden Systemen nicht aktiviert ist (Neu-Installation) sollten keine Regeln vorhanden sein. Dies ist in der Regel bei einer Neu-Installation auch kein Problem da Debian keine Dienste in das Netzwerk anbietet, wollen Sie an der Firewall mit den IPtables drehen gilt es zuerst jede andere Firewall - etwa UFW / GUFW deaktivieren.

Wir sehen uns also erst einmal die vorhandenen Regeln an:

iptables -t filter -L

Diesen Befehl können Sie mit jeder Tabelle anwenden und die Ausgabe sollte in etwa so aussehen:

Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination

Es sind also keine Regeln vorhanden. Haben Sie bereits Regeln erstellt lassen sich bestehende durch den Befehl:

iptables -F

komplett löschen - keine Angst, bevor wir diese nicht speichern (dazu später mehr) werden die bestehenden nach einem Neustart des Systems wieder her gestellt.

Wir wollen uns nun ansehen wie man Regeln eigentlich erstellt, die grundlegende Syntax des Befehls lautet:

iptables -Aktion Kette -i Schnittstelle -p Protokoll --dport Port -j Aktion

Dies gehen wir nun der Reihe nach durch. Nach dem grundlegenden Befehl "iptables" folgt hier "-Aktion" - diese Aktion kann bedeuten das man eine neue Regel hinzufügen möchte, dies geschieht durch den Befehl "-A" (wie "Add"). Nun folgt "Kette" - hier fügen wir die gewünschte Kette ein, in den meisten Fällen also ganz einfach "INPUT", weiter geht es mit "-i Schnittstelle" - hier geben wir die Netzwerk-Schnittstelle an an der diese Regel wirken soll, etwa "-i eth0". Durch "-p Protokoll" geben wir das passende Protokoll ein - etwa "-p tcp" oder "-p udp", nun folgt "--dport Port" - dies bedeutet nichts anderes als nach dieser Option geben wir den gewünschten Port an auf den diese Regel wirken soll (dazu wie schon oben beschrieben in der Datei "/etc/services") - etwa "--dport ssh" - wobei Sie auch problemlos die Port-Nummer angeben können etwa "--dport 22", zum Schluss kommt "-j Aktion" - das eigentliche Target oder Ziel - ganz einfach was soll mit diesem Paket geschehen - also etwa "-j ACCEPT".

Noch verwirrt - keine Angst, dies ändern wir gleich. Nehmen wir einmal an Sie wollen per SSH von anderen Rechnern auf diesen zugreifen können:

iptables -A INPUT -i eth0 -p tcp --dport ssh -j ACCEPT

Dies bedeutet nichts anderes als das ich eine neue Regel hinzu fügen möchte und zwar in die Kette "INPUT" "-A INPUT", die Regel gilt für alle an der Netzwerk-Karte "eth0" ankommenden Pakete "-i eth0" und zwar über das Protokoll "tcp" "-p tcp", die Regel gilt für den Ziel-Port "ssh" "--dport ssh" - diese Pakete werden akzeptiert "-j ACCEPT".

Eingehende Pakete über die Schnittstelle "eth0" über das Protokill "tcp" die über den Port "ssh" in unser System wollen werden also akzeptiert.

Nun ein ganz nettes und sehr einfaches Beispiel wie man sein System ganz einfach absichert, im Beispiel habe ich ein Notebook oder einen Desktop-Rechner, kein weiteres Netzwerk, ich möchte keine Dienste irgendwo hin anbieten - einfach nur surfen, mailen, niemand soll die Möglichkeit haben in mein System zu kommen und ich gehe über folgende Netzwerk-Karten in das Netz: "eth0", "wlan0" und "ppp0":

iptables -A INPUT -i eth0 -j DROP iptables -A INPUT -i wlan0 -j DROP iptables -A INPUT -i ppp0 -j DROP

Damit ist Ihr System abgesichert, niemand kommt von außen in Ihr System, jedoch bekommen auch Sie keine Antwort zurück auf Anfrage die Sie senden - etwa mit dem Webbrowser eine Webseite öffnen möchte. Hier folgt nun passende Regel die es erlaubt von Ihnen gestartete Verbindungen auch eingehend zu erlauben:

iptables -I INPUT 1 -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

Diesen Befehl starten Sie für jede Netzwerk-Schnittstelle (in diesem Fall "eth0"), die Option "-I" sorgt dafür das eine neue Regel an einer bestimmten Stelle eingefügt wird - in diesem Fall an erster "1" Stelle und "-m state --state ESTABLISHED,RELATED" erlaubt eingehende Verbindungen die Sie selbst gestartet haben.

Wie geht man nun also vor? Das erste was man tun sollte wenn man am lokalen Rechner arbeitet ist es erst einmal seine genutzten Schnittstellen heraus zu finden, als Administrator:

ifconfig

Hier ein kleines Beispiel für die Ausgabe:

enp0s29f7u2: flags=4163 mtu 1500 inet 192.168.0.153 netmask 255.255.255.0 broadcast 192.168.0.255 inet6 fe80::344b:50ff:feb7:efda prefixlen 64 scopeid 0x20 ether 36:4b:50:b7:ef:da txqueuelen 1000 (Ethernet) RX packets 1570 bytes 1365700 (1.3 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 1279 bytes 136933 (133.7 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 enp9s0: flags=4099 mtu 1500 ether a4:ba:db:9e:f9:4c txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 device interrupt 16 lo: flags=73 mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10 loop txqueuelen 1 (Lokale Schleife) RX packets 9 bytes 489 (489.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 9 bytes 489 (489.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

Gleich die erste Zeichenfolge ist die Schnittstelle die Sie mit der Firewall sichern sollten - "lo" lassen Sie bitte außer Acht - dies ist die System-interne Verbindung. Ist dies geschehen trennt man sich zur Sicherheit vom Netzwerk und deinstalliert alle möglicherweise installierten Programme mit denen man die Firewall konfigurieren könnte - außer natürlich "iptables", also etwa "ufw / gufw", man löscht alle bestehenden Regeln durch den Befehl:

iptables -F

Dann erstellt man seine Regeln - wie etwa im Beispiel oben:

iptables -F iptables -A INPUT -i eth0 -j DROP iptables -A INPUT -i wlan0 -j DROP iptables -A INPUT -i ppp0 -j DROP iptables -I INPUT 1 -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -I INPUT 1 -i wlan0 -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -I INPUT 1 -i ppp0 -m state --state ESTABLISHED,RELATED -j ACCEPT

Nun startet man das Netzwerk wieder - die Regeln - also die Firewall arbeitet schon.

Hat man seine Regeln erstellt gilt es diese zu speichern, denn die Regeln bleiben nur so lange aktiv bis Sie den Rechner neu starten.

Firewall-Regeln speichern

Als erstes speichern Sie nun mit dem Befehl:

iptables-save > /etc/iptables/rules.v4

die gerade erstellten Regeln, damit wäre dies erledigt. Damit Sie nun nicht bei jedem Start die Regeln von dieser Datei händisch neu laden müssen installieren Sie ganz einfach unter auf Debian basierenden Systemen über die Paket-Verwaltung das Paket "iptables-persistent", die Software fragt nach ob die bestehenden Regeln gespeichert werden sollen - zur Sicherheit bejahen Sie dies noch einmal - fertig, die Regeln sind bei jedem Start des Systems automatisch aktiv.

Zur Information - die Regeln werden wie man im letzten Befehl schon sieht in der Datei "/etc/iptables/rules.v4" gespeichert.

Ändert man die Konfiguration der Firewall gilt es diese also wieder durch den Befehl:

iptables-save > /etc/iptables/rules.v4

zu speichern.

Wichtig!

Beim Erstellen der Regeln müssen Sie zuvor überlegen was Sie erlauben wollen und was nicht. Als erstes gilt es Ports die Sie offen lassen wollen frei zu geben und erst dann geben Sie Anweisungen für die Sperre, denn der Netfilter - also die eigentliche Firewall geht alle Regeln von oben nach unten der Reihe nach durch - würde man zuerst Regeln für die Sperre definieren würden diese zuerst angewendet. Man muss dies so verstehen - wenn ich eine erste Regel eingefügt habe und nun eine zweite hinzu füge landet diese unter der anderen - also liegt die neu hinzu gefügte an letzter / unterster Stelle - dort wo die eigentlichen Sperren liegen. Dies werden wir uns bei den weiteren Beispielen genauer ansehen.

Tipp für entfernte Server

Wenn man etwa per SSH auf einem entfernten Server an der Firewall arbeitet besteht immer die Gefahr das man sich mit einem unüberlegten Befehl selbst aussperrt indem man etwa irrtümlich den SSH-Zugang sperrt. Sie müssten dann warten bis der Rechner wieder neu startet - hier ein kleiner Tipp - bevor man an der Firewall zu arbeiten beginnt:

iptables-save > foo ; sleep 1000 ; iptables-restore < foo

Der Befehl speichert die bestehenden Regeln in einer Datei namens "foo", wartet dann tausend Sekunden und stellt diese dann wieder her, Sie haben also 1000 Sekunden Zeit um zu tüfteln und zu probieren ob diese Regeln auch funktionieren würden. Die Anzahl der Sekunden können Sie natürlich selbst wählen.

Weitere Tipps und Beispiele

Hier folgen nun weitere nette kleine Beispiele die ein wenig weiter führen.

In diesem Beispiel geht es etwa darum die ersten Schritte an einem Server vor zu nehmen - was sind die ersten Schritte? Natürlich die Firewall zu konfigurieren - das Wichtigste überhaupt. Wie schon beschrieben rate ich dazu vorher zu überlegen was man überhaupt will, wie will man die Firewall konfigurieren, was will man erlauben und was nicht. Am einfachsten nimmt man sich einfach einen Zettel und schreibt die Regeln der Reihe nach auf, kontrolliert diese und gibt dann die entsprechenden Befehle an die Firewall ab. Für Einsteiger ist vor allem der Tipp "für entfernte Server" oben sehr hilfreich um sich nicht etwa selbst auszusperren - hat man keinen physischen Zugriff hat man dann wirklich das Problem das erst wieder der Server-Provider heran gezogen werden muss.

Nun, im Beispiel handelt es sich um einen einfachen Webserver auf dem ich zwei Dienste anbieten möchte - ich möchte mich per SSH am Server einloggen können um diesen warten und konfigurieren zu können, eigentlich logisch und dann natürlich soll man auf den Webserver zugreifen können damit man die darauf liegenden Webseiten auch ansehen kann. Alles andere soll strikt gesperrt werden, die Netzwerk-Schnittstelle nenne ich jetzt einmal typischerweise "eth0" und die beiden Dienste die angeboten werden sollen sind natürlich "ssh" und "http" sowie "https" für sichere Webseiten.

Als erstes lösche ich dazu möglicherweise vorhandene Regeln der Firewall, dann natürlich sehr wichtig erstelle ich zuerst die Regeln der erlaubten Dienste und erst dann erstelle ich die Regeln für die Sperren:

iptables -F iptables -A INPUT -i eth0 -p tcp --dport ssh -j ACCEPT iptables -A INPUT -i eth0 -p tcp --dport http -j ACCEPT iptables -A INPUT -i eth0 -p tcp --dport https -j ACCEPT iptables -I INPUT 1 -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -i eth0 -j DROP

Danach werden die Regeln wie oben beschrieben gespeichert - am besten der Rechner neu gestartet - aktiv. Möchte nun jemand mit dem Webbrowser per HTTP auf den Server zugreifen, also die Webseite öffnen sieht sich die Firewall die erste Regel an, passt diese nicht folgt die zweite - passt wird diese angewendet. Möchte nun beispielsweise jemand per SMTP - also auf den Mail-Server zu greifen beginnt die Firewall wieder ganz oben, die erste Regel die passt wird angewendet - in diesem Fall keine - angewendet wird also die letzte - die Sperre - denn alles andere wird gesperrt - so gesehen ist "iptables -A INPUT -i eth0 -j DROP" die wichtigste Regel.


Als nächstes Beispiel möchte ich das vorige Beispiel nutzen und nun einen weiteren Dienst hinzu fügen, als Beispiel einfach den Mail-Server - also den Dienst "smtp". Ich möchte die bestehenden Regeln nicht löschen sondern einfach den neuen Dienst hinzu fügen - wir kennen schon die Option "-I" um einen Dienst einzufügen - würde ich jetzt den Befehl:

iptables -A INPUT -i eth0 -p -tcp --dport smtp -j ACCEPT

anwenden würde diese Regel an letzter - also unterster Stelle hinzu gefügt - also nach der Sperre aller anderen Dienste würde die Firewall die erste passende Regel anwenden - also "DROP". Es gilt also die Regel vor der letzten einzufügen - im Beispiel oben könnte dies beispielsweise die dritte Stelle sein, ich nutze also die Option "-I" und gebe die dritte Stelle an:

iptables -I INPUT 3 -i eth0 -p tcp --dport smtp -j ACCEPT

Auch hier gilt es dann natürlich die aktuellen Regeln wieder zu speichern.


Nun möchte ich eine bestimmte IP-Adresse komplett blocken - diese soll absolut keinen Zugriff auf welche Dienste auch immer haben, als Beispiel nutze ich die IP-Adresse "123.456.78.9", um eine IP-Adresse anzugeben nutzt man die Option "-s":

iptables -A INPUT -i eth0 -s 123.456.78.9 -j DROP

Damit die Regel auch tatsächlich funktioniert gehört diese natürlich oberhalb - also vor den erlaubten Diensten / Dingen (siehe Beispiel zuvor). Dies lässt sich natürlich auch gleich auf ganze Adress-Bereiche anwenden etwa für "123.456.78.9/24":

iptables -A INPUT -i eth0 -s 123.456.78.9/24 -j DROP

Auch kann man eine IP-Adresse oder einen Adress-Bereich auch nur auf einem gewünschten Port blocken:

iptables -A INPUT -i eth0 -p tcp --dport ssh -s 123.456.78.9 -j DROP

Mehr Tipps rund um das Terminal finden Sie im Linux Bibel Terminal-Wiki

Suche Nach oben Startseite Mail an den Autor Links rund um Linux









SiteLock