Linux-Firewall verstehen

IPTables für die Paketfilterung nutzen

| Autor / Redakteur: Thomas Joos / Peter Schmitz

Mit iptables-Regeln für Netfilter lassen sich unter Linux komplexe Firewall-Umgebungen erstellen.
Mit iptables-Regeln für Netfilter lassen sich unter Linux komplexe Firewall-Umgebungen erstellen. (Bild: Ronstik - stock.adobe.com)

Geht es um die Einrichtung von Firewalls für Linux-Server, spielt der im Kernel enthaltene Netfilter, der mit „iptables“ gesteuert wird eine wichtige Rolle. Mit Regeln lassen sich komplexe Firewall-Umgebungen erstellen. Wir geben einen Überblick.

Netfilter stellt unter anderem Paketfilter, Network Address Translation und weitere für Firewalls relevante Werkzeuge für den Linux-Kernel bereit. Netfilter ist keine einfach zu bedienende Firewall für Linux. Jedem Administrator muss klar sein, dass Firewall-Regeln, die mit iptables in der Netfilter-Firewall erstellt werden, in vielen Fällen komplex sind. Einfach ausgedrückt, werden mit IPTables Tabellen erstellt, die der Netfilter-Firewall in Linux vorgeben, welche Pakete zum Server durchgelassen werden. Die Tabellen enthalten Ketten (Chains) und Regeln (Rules). Diese werden mit IPTables gesteuert.

Netfilter-Firewall mit IPTables steuern

Die Netfilter-Firewall des Linux-Kernels kann durch das Kommandozeilen-Programm „iptables“ gesteuert werden. Dieses ist meistens bereits Bestandteil der Installation. Die Hilfe wird mit „iptables --help“ aufgerufen. Ist iptables noch nicht installiert, kann die Installation mit dem folgenden Befehl erfolgen:

sudo apt-get install iptables

Zwar erfolgt normalerweise die Verwaltung der Netfilter-Firewall in Linux mit iptables über die Kommandozeile, es gibt aber auch Tools, mit denen iptables über die grafische Oberfläche genutzt werden kann. Ein Beispiel dafür ist Firestarter.

Chains - Input, Forward, Output

Der Befehl iptables steuert drei verschiedene Chains. Mit „Input“ werden eingehende Verbindungen gesteuert, die auf den lokalen Server eingehen. „Forward“ steuert Verbindungen, die nicht lokal verarbeitet werden, sondern die der Server weiterleiten muss, zum Beispiel wenn er als Router arbeitet. Um die erstellten Forward-Chains anzuzeigen, kann der folgende Befehl verwendet werden:

iptables -L -v

Hier muss gegebenenfalls aber mit „sudo“ gearbeitet werden. Die Informationen des Befehls geben Aufschluss darüber, ob das lokale System als Router genutzt wird. Mit „Output“ wird schließlich der Datenverkehr gesteuert, der vom lokalen Server in das Netzwerk geschickt wird. Damit eine Firewall-Regel funktioniert, muss darauf geachtet werden, dass eingehender Datenverkehr, oft auch in ausgehenden Datenverkehr resultiert. Wird ein Server angepingt, muss er auf die Anfrage antworten. Hier sind also eingehende und ausgehende Pakete zu steuern. Die Chains müssen also korrekt konfiguriert werden.

Kali Linux direkt in Windows 10 einbinden

Video-Tipp: Kali Linux und das WSL

Kali Linux direkt in Windows 10 einbinden

22.10.19 - Die meisten Sicherheitsexperten kennen die Security-Distribution „Kali Linux“. Die praktische Tool-Sammlung enthält auch zahlreiche Werkzeuge und Sicherheits-Tools für Microsoft-Netzwerke. Über das Windows-Subsystem für Linux (WSL) lässt sich Kali Linux sogar direkt in Windows integrieren. In diesem Video-Tipp zeigen wir die Vorgehensweise zur Installation. lesen

Standardverhalten der Firewall steuern

Mit iptables lässt sich auch das Standard-Verhalten definieren. Dieses gibt vor, wie sich die Firewall verhalten soll, wenn es für Datenverkehr keine Regel gibt. Es lassen sich für alle drei Chains Standards definieren, also für Input, Output und Forward. Mit dem folgenden Befehl kann angezeigt werden, wie das Standard-Verhalten der Firewall ist:

iptables -L

Der Wert bei „policy“ zeigt an, wie sich der Linux-Server verhält. In den meisten Fällen ist der Wert „Accept“. Dieser zeigt an, dass der Datenverkehr für alle drei Ketten akzeptiert wird, wenn es keine Regel gibt, die den Verkehr blockiert. Der folgende Befehl filtert die Option für „Policy“ aus:

iptables -L | grep policy

Werden Verbindungen nicht automatisch akzeptiert, kann das mit den folgenden Befehlen gesteuert werden:

iptables --policy INPUT ACCEPT

iptables --policy OUTPUT ACCEPT

iptables --policy FORWARD ACCEPT

Sollen alle Verbindungen automatisch blockiert werden, sind folgende Befehle dafür zuständig:

iptables --policy INPUT DROP

iptables --policy OUTPUT DROP

iptables --policy FORWARD DROP

Anschließend werden Regeln erstellt, die festlegen welcher Datenverkehr erlaubt wird. Alle anderen Pakete, für die es keine Regel gibt, werden entweder durchgelassen (Accept) oder blockiert (Drop).

Ergebnisse speichern

Wichtig ist, dass Änderungen, die mit iptables vorgenommen werden auch gespeichert werden müssen. Ansonsten werden die Anpassungen gelöscht. Die Speicherung erfolgt auf Linux-Systemen auf Basis von Ubuntu mit dem folgenden Befehl:

sudo /sbin/iptables-save

Beim Einsatz von CentOS oder Red Hat erfolgt die Speicherung mit:

/sbin/service iptables save

Alternativ wird der folgende Befehl verwendet:

/etc/init.d/iptables save

Wer alle Regeln löschen will, verwendet den folgenden Befehl:

iptables -F

Damit die Regeln produktiv umgesetzt werden, müssen die IPTables mit folgendem Weg gespeichert werden:

Debian/Ubuntu: iptables-save > /etc/iptables/rules.v4

RHEL/CentOS: iptables-save > /etc/sysconfig/iptables

Ziele und IP-Adressen in Regeln implementieren

Um Regeln mit iptables zu erstellen, ist es wichtig zu definieren, wie die Netfilter-Firewall in Linux auf Anfragen von spezifischen IP-Adressen reagieren soll. Hier gibt es generell drei verschiedene Antworten:

  • Accept: Erlaubt die Verbindung
  • Drop: Löscht die Verbindung. Das entfernte System erkennt nicht, dass eine Verbindung überprüft wurde
  • Reject: Die Verbindung wird aufgebaut, das entfernte System erhält die Meldung, dass der Verbindungsaufbau verweigert wurde.

Sollen zum Beispiel alle Verbindungen von einer IP-Adresse gelöscht werden, wird der folgende Befehl genutzt:

iptables -A INPUT -s 192.168.178.1 -j DROP

Sollen alle Verbindungen von einem Subnetz gelöscht werden, wird der folgende Befehl genutzt:

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

Alternativ kann auch der folgende Befehl verwendet werden:

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

Die Regeln lassen sich auch genauer spezifizieren, um zum Beispiel SSH-Verbindungen von einer Quelle zu löschen:

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

Sollen generell alle Verbindungen blockiert werden, wird der folgende Befehl verwendet:

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

Damit eine Regel funktioniert, müssen bei den meisten Kommunikationsvorgängen der Eingang und der Ausgang des Paketes gesteuert werden. Um zum Beispiel eingehende Verbindungen zu steuern, und nur für das anfragende System eine Verbindung zuzulassen, werden folgende Befehle verwendet:

iptables -A INPUT -p tcp --dport ssh -s 192.168.178.1 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -p tcp --sport 22 -d 192.168.178.1 -m state --state ESTABLISHED -j ACCEPT

Kommentare werden geladen....

Kommentar zu diesem Artikel

Der Kommentar wird durch einen Redakteur geprüft und in Kürze freigeschaltet.

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Kontaktieren Sie uns über: support.vogel.de/ (ID: 46248371 / Firewalls)