Remotedesktopverbindung mit SSL schützen

Es ist kein Geheimnis, das es keine allzu gute Idee ist, eine „normale“ Remotedesktopverbindung z.B. von Windows XP oder 7 mittels Portfreigabe (NAT) im Router vom Internet aus erreichbar zu machen.

Zwar gibt es eine Art „Grundverschlüsselung“, diese gilt aber seit Jahren nicht mehr als sicher. Hat man keinen Router mit VPN-Funktionalität und kann oder möchte nicht die in Windows integrierten VPN-Optionen nutzen, so bleibt die Möglichkeit, auf eine andere Lösung zu setzen.

Bei SSL und VPN denken die meisten vermutlich eher an OpenVPN. In diesem Beitrag geht es darum, die Verbindung zwar mit SSL zu schützen, zum Einsatz kommt allerdings stunnel.

Im Unterschied zum bestehenden Artikel Application VPN mit Stunnel und XCA wird keine CA (Certificate Authority/Zertifizierungsstelle) aufgebaut. Dadurch reduziert sich die Komplexität erheblich.

Es werden dennoch Zertifikate für die gegenseitige Authentifizierung verwendet. Das bedeutet der Server als auch der Client erhalten ein Zertifikat. Beide Seiten „vertrauen“ einander, andernfalls kommt keine Verbindung zu Stande.

Warum stunnel?

Im Gegensatz zu OpenVPN ist stunnel wesentlich einfacher gestrickt und damit ideal, nur einzelne Ports zu schützen. Ferner ist die Einrichtung erheblich simpler und damit auch für den Privatgebrauch oder kleine Firmen geeignet.

Gleiche Basis auf beiden Seiten

Die Basis-Installation ist auf beiden Seiten, d.h. Server und Client, zunächst identisch.

  • stunnel herunterladen und installieren.
  • Am Ende der Installation wird mittels OpenSSL ein Zertifikat erzeugt.
  • Die notwendigen Angaben entsprechend vornehmen. Bei FQDN auf der Server-Seite die Domäne angeben. Auf der Client-Seite z.B. den Benutzer oder schlicht „Client“ eingeben.

Im Grunde kann man eintragen, was man möchte. Da es sich um nicht öffentliche, selbst signierte Zertifikate handelt, spielt es keine allzu große Rolle.

Server-Konfiguration

  • Die Datei „stunnel.conf“ editieren.
  • Folgende Parameter ändern:
verify = 2
CAfile = certs.pem
taskbar = no
  • Die vordefinierten Dienste, damit sind die Blöcke mit den Eckklammern „[…]“ und die darunterliegenden Zeilen gemeint, mit einem Semikolon („;“) auskommentieren.
  • Folgende Zeilen einfügen:
[ssl-rdp]
accept = 9000
connect = 3389
  • Mit Hilfe des Befehls
stunnel -install

wird das Programm als Systemdienst installiert.

Client-Konfiguration

  • Die Datei „stunnel.conf“ editieren.
  • Folgende Parameter ändern:
verify = 2
CAfile = certs.pem
taskbar = no
  • Die vordefinierten Dienste, damit sind die Blöcke mit den Eckklammern „[…]“ und die darunterliegenden Zeilen gemeint, mit einem Semikolon („;“) auskommentieren.
  • Folgende Zeilen einfügen:
[ssl-rdp]
accept = 9000
accept = localhost:9000
connect = IP-ODER-DOMÄNE:9000

Im Grunde kann man stunnel auch auf dem Client als Dienst installieren. Das sollte man davon abhängig machen, ob immer der gleiche Computer verwendet wird, oder nicht.

Zertifikate austauschen

Damit sich beide Seiten gegeneinander Authentifizieren können, ist es notwendig, die Zertifikate gegeneinander bekannt zu machen.

  • Eine Datei mit dem Namen „certs.pem“ im jeweiligen stunnel-Ordner anlegen und Diese editieren.
  • Parallel dazu die Datei „stunnel.pem“ z.B. mit Notepad++ öffnen.
  • Nun den Teil von
-----BEGIN CERTIFICATE----- bis
-----END CERTIFICATE-----

innerhalb der „stunnel.pem“-Datei kopieren.

  • Die kopierten Zeilen in die „certs.pem“-Datei einfügen und abspeichern.
  • Nun die „certs.pem“-Dateien zwischen Server und Client austauschen.

Hinweis: Die kopierten Zeilen via RDP oder TeamViewer auszutauschen funktioniert nicht unbedingt. Von daher ist es besser, die Dateien zu tauschen.

  • Den stunnel-Dienst auf dem Server starten.

Remotedesktopverbindung konfigurieren

Im Grunde kann man schlicht die „Remotedesktopverbindung“ aus dem Startmenü aufrufen, als Adresse

localhost:9000

angeben und schon wird eine Verbindung via stunnel aufgebaut.

Unter Umständen kann es allerdings sinnvoll sein, bestimmte Einstellungen vorzunehmen und Diese abzuspeichern.

Fernzugang.exe

Um es einem Kunden möglichst einfach zu machen, einen mobil verwendbaren Fernzugangs-Client zu haben, wurde ein kleines AutoIt-Skript erstellt und als Exe-Datei kompiliert.

Dieses Skript startet stunnel im Hintergrund, öffnet eine vordefinierte Remotedesktopverbindung und beendet stunnel, sobald der Remotedesktopverbindung-Client beendet wird.

Fernzugang.zip

Während der recht kurzen Entwicklung ergaben sich eher unerwartete „Kleinigkeiten“. Das tut nun der eigentlichen Nutzung aber keinen Abbruch. Entsprechende Kommentare finden sich im Quellcode.

Damit die Fernzugang.exe verwendet werden kann, muss im gleichen Ordner eine stunnel-Installation eingefügt werden. Ferner muss eine „Client.rdp“, also eine vorkonfigurierte Remotedesktopverbindung hinterlegt werden.

Links

Pate für diesen Beitrag stand die Anleitung von Patrick Jansen:

http://home.arcor.de/lightsky/docs/stunnel_openssl_synergy.pdf

Schreibe einen Kommentar

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