RDP tunneln mit SSH

Eine Remote-Desktop-Verbindung (RDP) ist schnell eingerichtet, doch sollte man diese nicht offen von außen übers Internet zugänglich betreiben, z.B. über den Port 3389 betreiben, da einige Schwächen von RDP bekannt sind und es ein beliebtes Angriffsziel darstellt. Ein alternative Möglichkeit ist es den RDP-Zugriff mittels SSH herzustellen.

Netzwerkarchitektur/-struktur für einen RDP-Tunnel mittels SSH

RDP ohne VPN

Gängige Praxis, auch in vielen Unternehmen, ist es eigentlich eine verschlüsselte VPN-Verbindung für den RDP-Zugriff zu verwenden, um diesen gegenüber der Außenwelt abzuschotten. Dies gilt gemeinhin als weitestgehend sicher. Jedoch benötigt man dafür auf dem Clientrechner, von dem aus die RDP-Verbindung initiiert werden soll, einen VPN-Client. Oftmals genügen hier nicht die Windows-OnBoard-Mittel und man muss einen separaten VPN-Client installieren. Dies ist aber manchmal insofern schwierig, wenn man beispielsweise auf dem Clientrechner nicht die benötigten Rechte hat, um zusätzliche Software zu installieren. Andererseits ist die Konfiguration der VPN-Verbindung ohne dem herstellerbasierte Softwaremodul oftmals schwierig bis unmöglich, da es viele verschiedene Spielarten der VPN-Protokolle gibt, die nicht miteinander kompatibel sind. Einen VPN-Client, der sich als portable Version ohne Admin-Rechte installieren lässt, habe ich bisher nicht gefunden. Deswegen wäre es praktisch, wenn man eine sichere RDP-Verbindung ohne VPN zu verwenden herstellen könnte.

Dies ist möglich, indem man das RDP-Protokoll durch eine SSH Verbindung tunnelt. Und min. SSH-Client (PuTTY) gibt es in der portablen Version, sodass eine Installation ohne Admin-Rechte oder das Starten vom USB-Stick möglich ist.

SSH-Server auf Zielsystem einrichten

Als erstes muss man einen SSH-Server auf dem Zielsystem installieren und aktivieren, was ich in einem Vorgängerartikel für Windows beschrieben habe. Dazu installiert man den OpenSSH-Server über “Optionale Features”. Unter “Dienste” muss man dann noch das Startverhalten konfigurieren oder bzw. den SSH-Server starten.

Meine diesbezügliche Beschreibung basiert nur auf den Zugriff mittels Passwort. Es wird jedoch aus Sicherheitsgründen empfohlen die SSH-Verbindung nur mit der Option “PubkeyAuthentication” zuzulassen. Passwörter können ausgespäht werden oder per BruteForce geknackt werden.

Wenn die SSH-Verbindung von außen übers Internet aufgebaut werden soll, muss ggf. im Router oder in der Firewall für eingehende Verbindungen noch der Port 22 freigegeben werden.

Damit der SSH-Server von außen erreichbar ist, muss die Firewall oder der Router über eine öffentliche IP-Adresse, einen Domainnamen oder einen DynDNS-Namen ansprechbar sein.

RDP einschalten auf Zielsystem

Damit auch eine RDP-Session aufgebaut werden kann durch den SSH-Tunnel, muss auf dem Zielsystem Remote-Desktop aktiviert sein. Dazu geht man wie folgt vor:

  1. Windows-Einstellungen aufrufen, z.B. über Rechtsklick auf das Windows-Menü
  2. “System” auswählen
  3. “Remotedesktop” anklicken

    Screenshot Window Einstellungen System Remotedesktop
    “System” wählen und “Remotedesktop” anklicken
  4. und dann Remotedesktop aktivieren
Screenshot Remotedesktop einschalten
Remotedesktop aktivieren

SSH-Client (PuTTY) herunterladen und installieren

Wenn Server und RDP-Freigabe auf dem Zielsystem richtig eingerichtet sind, kann der Zugriff von einem anderen System erfolgen. Dazu benötigt man einen SSH-Client, den es über die PowerShell oder auch von OpenSSH gibt. Wir verwenden PuTTY als SSH-Client, welchen man sich hier herunterladen kann.

Die portable Version gibt es auf anderen Seiten, wie bei Chip.de. Diese kann man sich dann an beliebiger Stelle ohne Admin-Rechte speichern.

SSH-Client PuTTY konfigurieren

1. Schritt: Session einrichten

Als Erstes muss man die SSH-Sitzung konfigurieren. Dazu muss man:

  1. Domainnamen oder IP-Adresse des Zielsystems eintragen
  2. Port 22 wählen, außer wurde ein abweichender Port serverseitig konfiguriert.
  3. Als “Connection type” “SSH” auswählen
  4. Nun kann man der Session noch einen Namen geben und zwecks Wiederverwendbarkeit speichern (Button “Save“)
Screenshot PuTTY - Session konfigurieren
Domainnamen und Port für die PuTTY-Session konfigurieren

2. Schritt: Tunnel in PuTTY konfigurieren

Als Nächstes wechselt man in der linken Baumstruktur zu “Connection” ⮞ “SSH” ⮞ “Tunnels“. Hier konfiguriert man die Port-Weiterleitung innerhalb des Tunnels. Bei “Source Port” wählt man einen mehr oder weniger beliebigen Port aus, hier wurde Port 1024 gewählt. Dieser wird dann im 4. Schritt verwendet zum Herstellen der RDP-Verbindung.

Screenshot RDP-Tunnel konfigurieren mit Port-Weiterleitung
RDP-Tunnel konfigurieren mit Port-Weiterleitung

Bei “Destination” trägt man die lokale bzw. private IP-Adresse des Zielrechners samt den RDP-Port 3389 ein.  Es handelt sich dabei um die IP-Adresse des Rechners, auf dem der SSH-Server läuft und Remotedesktop aktiviert wurde. In diesem Beispiel befindet sich der Rechner in einem privaten Netzwerk und hat deswegen eine private IP-Adresse. Fall ein abweichender RDP-Port konfiguriert wurden, dann muss dies hier entsprechend adaptiert werden.

3. Schritt: SSH-Verbindung herstellen

Nachdem man alle Einstellungen vorgenommen hat, kann man die SSH-Verbindung öffnen. Dazu geht man in der Baumstruktur zurück auf Session, wählt die gewünschte Session und klickt den Button “Open”.

Screenshot PuTTY Username und Passwort zum Herstellen der SSH-Verbindung eingeben
SSH-Verbindung herstellen

Nun muss man die Logindaten eingeben.

  • login as: Das ist der Username des Windows-Benutzerkontos auf dem Zielrechner auf dem der SSH-Server läuft
  • password: Das ist das zugehörige Passwort zum Benutzerkonto des Zielrechners

Ggf. kommt noch eine Meldung, dass die Authentizität des Host-Systems nicht festgestellt werden konnte und dass der Schlüssel nicht bekannt ist.

The authenticity of host [...] can't be established.
This Key is not known by any other names.[...]

Wenn man sich bezüglich der Verbindung sicher ist, kann das mit “yes” bestätigen. Dann wird der Rechner zur Liste der bekannten Hosts hinzugefügt.

4. Schritt: Remotedesktop-Verbindung herstellen

Im letzten Schritt muss nur noch die RDP-Verbindung hergestellt werden. Dazu einfach:

  1. Windows-Menü “RDP” eingeben und die App Remotedesktopverbindung öffnen
  2. Bei “Computer:” die lokale IP-Adresse 127.0.0.1 eingeben gefolgt von dem im PuTTY konfigurierten lokalem Port 1024.
  3. Als “Benutzername:” wird der Rechnername des Zielsystems gefolgt vom Usernamen des Zielsystems getrennt durch Backslash eingegeben
Screenshot Konfiguration der RDP-Verbindung
RDP-Verbindung auf lokale IP einstellen

Wenn alles geklappt hat, dann kann man jetzt auf den Button “Verbinden” klicken und es öffnet sich die RDP-Session. Man kann direkt losarbeiten, als würde man vor dem Rechner des Zielsystems selbst sitzen.

Kommentar hinterlassen

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