Portweiterleitung

LinuxBeginner
Jetzt üben

Einführung

In diesem Lab lernen Sie die Portweiterleitung kennen.

Stellen Sie sich vor, Sie wohnen unter einer Adresse, an der Sie Post empfangen. Dann ziehen Sie in ein neues Zimmer um und möchten, dass alle Briefe, die an Ihre alte Zimmernummer (Zimmer 80) gesendet werden, automatisch an Ihre neue Zimmernummer (Zimmer 8080) weitergeleitet werden. Sie möchten nicht alle Personen auffordern, ihre Adressbücher zu aktualisieren. Stattdessen soll die Hausverwaltung die Weiterleitung übernehmen.

Die Portweiterleitung ist Bestandteil von NAT (Network Address Translation). Dabei wird eingehender Datenverkehr umgeschrieben, sodass Anfragen, die an einem Port eintreffen, an ein anderes Ziel weitergeleitet werden.

Die Firewall lässt Datenverkehr also nicht nur zu oder blockiert ihn. Sie verändert aktiv die Zielinformationen der Pakete, sodass ein extern sichtbarer Einstiegspunkt eines Dienstes zu einem anderen internen Ziel führen kann.

Das Szenario:

Auf Port 8080 läuft ein Webserver. Standard-Webbrowser suchen Websites jedoch auf Port 80. Statt den Webserver zu ändern, weisen Sie die Firewall an: „Wenn jemand an Port 80 anklopft, leite die Anfrage direkt an Port 8080 weiter.“

In diesem Lab werden Sie:

  1. Die Firewall für die Verarbeitung des Datenverkehrs vorbereiten (Masquerading).
  2. Eine Regel erstellen, die Port 80 an Port 8080 weiterleitet.
  3. Das Verhalten der Portweiterleitung testen und nachvollziehen.

Masquerading aktivieren

Für diesen Schritt gilt: Bevor firewalld Ports weiterleiten kann, benötigt es die Berechtigung, Netzwerkpakete zu verändern. Diese Funktion heißt Masquerading.

Masquerading ist eine Form der Adressübersetzung. In vielen realen Umgebungen ermöglicht es einer Firewall oder einem Gateway, als Vermittler zwischen den Kommunikationspartnern zu stehen und den Datenverkehr so aussehen zu lassen, als stamme er aus einem anderen Adresskontext als dem ursprünglichen.

Sie können sich Masquerading als die Erlaubnis vorstellen, dass die Firewall als Vermittler auftritt und die Adressetiketten der Pakete umschreibt, damit diese ihr Ziel erreichen.

Hinweis: In dieser Lab-Umgebung verwenden wir die Zone trusted als aktive Zone, damit Ihr Web-Terminal verbunden bleibt.

Prüfen Sie zunächst, welche Zone derzeit aktiv ist.

sudo firewall-cmd --get-active-zones

Wahrscheinlich sehen Sie trusted zusammen mit Ihrer Netzwerkschnittstelle, zum Beispiel eth0.

Aktivieren Sie nun Masquerading für diese Zone trusted.

sudo firewall-cmd --zone=trusted --add-masquerade

Überprüfen Sie, ob Masquerading aktiviert ist.

sudo firewall-cmd --zone=trusted --query-masquerade

Wenn die Ausgabe yes lautet, können Sie fortfahren.

Weiterleitungsregel erstellen

In diesem Schritt erstellen Sie die Weiterleitungsregel.

Weiterleitungsregeln sind hilfreich, wenn das Verhalten nach außen stabil bleiben soll, ohne die Anwendung selbst zu ändern. Die Firewall bildet eine Übersetzungsschicht zwischen dem, was Clients erwarten, und dem Port, auf dem der Dienst tatsächlich lauscht.

Wir möchten festlegen: „Leite in der Zone trusted jeden TCP-Datenverkehr, der an Port 80 gerichtet ist, an Port 8080 weiter.“

Führen Sie diesen Befehl aus:

sudo firewall-cmd --zone=trusted --add-forward-port=port=80:proto=tcp:toport=8080

Die Optionen im Einzelnen:

  • port=80: Das ursprüngliche Ziel, also das alte Zimmer.
  • proto=tcp: Das verwendete Protokoll; Webdatenverkehr verwendet TCP.
  • toport=8080: Das neue Ziel, also das neue Zimmer.

Überprüfen Sie, ob die Regel korrekt hinzugefügt wurde.

sudo firewall-cmd --zone=trusted --list-forward-ports

Die Regel sollte in der Ausgabe aufgeführt sein.

Weiterleitung testen

In der Ausgangskonfiguration wurde ein einfacher Webserver auf Port 8080 gestartet. In diesem Schritt prüfen Sie zunächst, ob er erreichbar ist, indem Sie direkt auf ihn zugreifen.

curl http://127.0.0.1:8080

Sie sollten folgende Ausgabe sehen: „Hello from Port 8080! Port Forwarding is working.“

Testen Sie nun die Portweiterleitung, indem Sie über Ihre eigene IP-Adresse auf Port 80 zugreifen.

Ermitteln Sie Ihre IP-Adresse:

MY_IP=$(hostname -I | awk '{print $1}')
echo "My IP is: $MY_IP"

Versuchen Sie, über diese IP-Adresse eine Verbindung zu Port 80 herzustellen.

curl http://$MY_IP:80

Hinweis zum Testen: In vielen Linux-Umgebungen, einschließlich dieses Labs, wird möglicherweise der Fehler Connection refused angezeigt. Dies ist eine bekannte Einschränkung namens NAT Loopback. Der Kernel verhindert häufig, dass ein Rechner über seine eigene externe IP-Adresse eine Verbindung zu seinen eigenen NAT-Regeln herstellt.

Diese Einschränkung ist wichtig, weil sie die korrekte Konfiguration vom Verhalten eines lokalen Tests unterscheidet. Eine Regel kann gültig sein, auch wenn ein Selbsttest auf demselben Rechner ein irreführendes Ergebnis liefert.

In einem realen Szenario würde ein Besucher von einem anderen Computer erfolgreich weitergeleitet werden. Der eigentliche Erfolgsnachweis ist, dass der Befehl list-forward-ports im vorherigen Schritt die Regel angezeigt hat.

Regel entfernen

In diesem Schritt räumen Sie nach dem Test auf. Entfernen Sie die Weiterleitungsregel, damit sich der Datenverkehr wieder normal verhält.

Das Aufräumen ist für die Firewall-Administration wichtig, weil veraltete Regeln die Erreichbarkeit von Anwendungen unbemerkt verändern können, lange nachdem der ursprüngliche Test vergessen wurde.

Zum Entfernen einer Regel verwenden Sie --remove-forward-port mit genau denselben Angaben, die Sie beim Hinzufügen der Regel verwendet haben.

sudo firewall-cmd --zone=trusted --remove-forward-port=port=80:proto=tcp:toport=8080

Überprüfen Sie, ob die Regel entfernt wurde.

sudo firewall-cmd --zone=trusted --list-forward-ports

Die Ausgabe sollte leer sein.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie Netzwerkdatenverkehr mithilfe der Portweiterleitung umleiten. Sie haben:

  1. Masquerading aktiviert, damit die Firewall Pakete umschreiben kann.
  2. Eine Regel erstellt, die Datenverkehr von Port 80 an Port 8080 weiterleitet.
  3. NAT Loopback kennengelernt und erfahren, warum lokale Tests manchmal problematisch sein können.
  4. Die Regel entfernt, um den ursprünglichen Zustand wiederherzustellen.

Dies ist eine leistungsfähige Technik, mit der häufig interne Dienste wie Datenbanken oder benutzerdefinierte Anwendungen über standardmäßige öffentliche Ports erreichbar gemacht werden.