Application VPN mit Stunnel und XCA

XCA & Stunnel Das man mit Stunnel aus unsicheren Diensten sichere Dienste machen kann ist weitläufig bekannt. Prominentestes Beispiele ist aus http –> https zu machen. Also relativ einfach eine SSL-Verschlüsselung vor den eigentlich unsicheren Dienst schalten. Mit Stunnel lassen sich aber auch VPNs bauen. Genauer gesagt, ein VPN passend zu einer Applikation oder einen Dienst. Man sollte allerdings abwägen, ob es für die eigenen Zwecke ausreichend ist. Möchte man auf mehrere Ressourcen, z.B. Mail, Dateidienste, … über ein VPN zugreifen, eignen sich die klassischen Lösung wie IPsec, OpenVPN, etc. oder Lösungen wie Microsofts Direct Access besser.

Stunnel an sich ist in der Handhabung sehr einfach. Aufwändiger ist da schon die Zertifikat-Verwaltung, also der Aufbau und Betrieb einer PKI.

Aber was ist eigentlich der Vorteil eines SSL-basierten VPNs? Oftmals ist es so, das diverse Router keinen IPsec-Verkehr durchlassen oder Provider solche Daten nicht zulassen. Letzteres ist oft in Mobilfunk-Netzen der Fall. Optional lässt sich die Freischaltung dann via Tarif erreichen. Bei VPNs auf Basis von SSL hat man, sofern der Port 443 (Standard für SSL/HTTPS) sehr gute Chancen, das einem ein solches Problem nicht begegnet. Ferner sind SSL-VPNs einfacher im Aufbau und Betrieb als das bei z.B. IPsec der Fall ist. Eine gewisse Einarbeitung ist dennoch notwendig. Bei Stunnel im Speziellen ist keine umfangreiche Installation notwendig. Das bietet dem Administrator die Möglichkeit, den SSL-VPN-Client durch einfaches Kopieren zu verteilen oder sogar auf einen USB-Stick immer dabei zu haben.

Für diesen Beitrag verwende ich XCA für die Zertifikat-Verwaltung. XCA ist wie Stunnel für viele Plattformen (Windows, Linux, Mac)  verfügbar. Der Beitrag ist zwar für Windows geschrieben, aber Teilweise ebenso für *nix verwendbar.

Hier dient als Beispiel die Absicherung von RDP. Es kann aber genauso gut VNC oder andere Dienste abgesichert werden.

 

Vorbereitung

Zu allererst benötigt man die aktuellen Versionen von Stunnel und XCA.

Stunnel Homepage

XCA bei SourceForge

 

Installation vom Server

Stunnel und XCA installieren oder mit 7-Zip entpacken.

Tipp: Der Einfachheit halber habe ich beide Programme unter C:\SSL-VPN\XCA bzw. C:\SSL-VPN\Stunnel installiert. Dadurch umgeht man zusätzlich Probleme mit der Ordner-Virtualisierung von Windows Vista/7.

 

Aufbau der Zertifikat-Verwaltung (PKI) mit XCA

XCA 

 

 

Zunächst muss XCA gestartet werden und eine neue Datenbank angelegt werden.

 

 

 

 

XCA - New DataBase

 

 

Dazu auf Datei und New DataBase klicken.

 

 

XCA - New DataBase

 

 

 

Im darauf folgenden Dialog den Namen und Speicherort für die Datenbank angeben.

 

 

 

 

XCA - New DataBase Passwort

Anschließend muss ein Passwort für die Datenbank vergeben werden.

Sicherheitshinweis: Der Speicherort der Datenbank sollte sicher sein. D.h. durch Berechtigungen und Verschlüsselung den Zugriff einschränken. Das Passwort sollte stark sein, d.h. mit großen und kleinen Buchstaben, Zahlen und Sonderzeichen.

 

Zertifikat-Vorlagen erstellen

XCA - Vorlagen

 

 

 

Auf die Registerkarte Vorlagen wechseln.

 

 

 

 

 

XCA - Neues Template

 

 

Auf Neues Template klicken und CA auswählen. Die Auswahl mit OK bestätigen.

 

 

 

XCA - Vorlage Besitzer

 

Folgende Felder wie folgt ausfüllen:

Interner Name: SSL-VPN CA Vorlage

Länder code: MEIN LAND

Bundesland, Kreis: MEIN BUNDESLAND

Ort: MEINE STADT

Firma: MEINE FIRMA

Firmenabteilung: MEINE ABTEILUNG

Üblicher Name: leer lassen

E-Mail-Adresse: MEINE EMAIL-ADRESSE

 

 

XCA - Vorlage Erweiterungen

 

 

 

 

Auf den Reiter Erweiterungen wechseln und im Bereich Zeitspanne einen Haken bei Mitternacht setzen und auf OK klicken.

 

 

 

 

 

XCA - Neues Template HTTPS_server

 

Anschließend müssen die Zertifikat-Vorlagen für den Server und die Clients erstellt werden. Dazu wieder auf Neues Template klicken und für den Server HTTPS_server bzw. HTTPS_client auswählen.

 

 

 XCA - Neues Template HTTPS_client

 

Als interner Name SSL-VPN Server Vorlage bzw. SSL-VPN Client Vorlage angeben. Ggf. sollte man die Laufzeit auf dem Reiter Erweiterungen anpassen. Standardmäßig gilt ein Zertifikat ein Jahr lang.

 

 

XCA - Vorlagen

 

 

 

Zum Schluss sollte man insgesamt drei Vorlagen haben. Damit sind die Vorbereitungen abgeschlossen.

 

 

 

 

CA-Zertifikat Erstellen

XCA - Zertifikate

 

 

Nun wird zuerst das CA-Zertifikat erstellt. Dieses ist notwendig um die Zertifikate für den Stunnel-Server und die Stunnel-Clients Unterschreiben zu können. Auf die Registerkarte Zertifikate wechseln und Neues Zertifikat anklicken.

 

 

XCA - Neues Zertifikat

 

 

 

Im Bereich Vorlage die SSL-VPN CA Vorlage auswählen und auf Übernehmen klicken. Auf die Registerkarte Besitzer wechseln und bei Interner Name und Üblicher Name einen Namen, z.B. SSL-VPN CA, eingeben. Im Abschnitt Privater Schlüssel auf Erstelle einen neuen Schlüssel klicken.

 

 

 

XCA - Neuer Schlüssel

 

 

Den darauf folgenden Dialog mit Erstellen bestätigen. Nachdem der Schlüssel erstellt wurde, den Dialog mit OK verlassen.

 

 

 

 

Server-Zertifikat erstellen

XCA - Neues Zertifikat

 

 

 

Auf der Registerkarte Zertifikate auf Neues Zertifikat klicken. Im Bereich Unterschreiben Verwende dieses Zertifikat zum Unterschreiben SSL-VPN CA auswählen. Im Bereich Signatur-algorithmus MD 5 auswählen. Im Bereich Vorlage SSL-VPN Server Vorlage auswählen und auf Übernehmen klicken.

 

 

 

Auf der Registerkarte Besitzer bei Interner Name und Üblicher Name den Namen SSL-VPN Server angeben und im Abschnitt Privater Schlüssel auf Erstelle einen neuen Schlüssel klicken. Nachdem der Schlüssel erstellt wurde, den Dialog mit OK verlassen.

 

Client-Zertifikat erstellen

Auf der Registerkarte Zertifikate wieder auf Neues Zertifikat klicken. Diesmal die Vorlage SSL-VPN Client Vorlage auswählen und auf Übernehmen klicken. Auf der Registerkarte Besitzer bei Interner Name und Üblicher Name den Namen SSL-VPN Client bzw. den Namen des jeweiligen Benutzers eingeben und im Abschnitt Privater Schlüssel auf Erstelle einen neuen Schlüssel klicken. Nachdem der Schlüssel erstellt wurde, den Dialog mit OK verlassen.

Diesen Abschnitt für alle Clients wiederholen.

Bis zu diesem Zeitpunkt sollte man mindestens drei Zertifikate haben:

XCA - Zertifikate

 

Zertifikate exportieren

Damit die Zertifikate für Stunnel nutzbar sind, müssen Diese exportiert werden.

Zuerst wird das CA-Zertifikat exportiert. Dieses Zertifikat benötigt sowohl der SSL-VPN Server als auch die jeweiligen SSL-VPN Clients.

Auf dem Reiter Zertifikate das SSL-VPN CA Zertifikat auswählen und auf Export klicken.

XCA - Zertifikat Export

Zuerst den Speicherort und den Namen angeben. Achtung: XCA hängt gerne ein *.crt an!

Als Exportformat PEM auswählen und auf OK klicken.

Am einfachsten ist es, das exportierte CA-Zertifikat zu kopieren und in den Ordner des SSL-VPN Servers und der SSL-VPN Clients einzufügen.

Den Vorgang für das Zertifikat des SSL-VPN Servers und für alle SSL-VPN Clients wiederholen. Den jeweiligen Speicherort und Namen entsprechend anpassen. Als Exportformat PEM Cert + key auswählen.

Stunnel Ordner

 

 

 

Im Ordner des SSL-VPN Servers sieht es dann z.B. wie hier aus.

 

 

 

 

 

CRL erstellen

Eine CRL, Certificate Revocation List, ist eine Liste von Zertifikaten, die zurückgezogen wurden. Eine CRL ist zu empfehlen, wenn es um mehr als einen SSL-VPN Client geht. Dadurch umgeht man das vollständige neu ausstellen aller Zertifikate, falls ein Client-Zertifikat kompromittiert wird oder ein Benutzer kein SSL-VPN mehr benötigt.

Zunächst aber erst mal die Frage, wie man ein Zertifikat zurück nimmt.

 

XCA - Rücknahme

 

 

 

Dazu auf den Reiter Zertifikate das entsprechende Zertifikat auswählen und mit der rechten Maustaste darauf klicken. Im Kontextmenü auf Rücknahme klicken.

 

 

 

 

 

image

 

Sobald das Zertifikat ungültig ist, wird es mit einem entsprechenden Symbol gekennzeichnet.

 

 

XCA - CRL erstellen

 

 

 

Mit einem Rechtsklick auf SSL-VPN CA, CA – CRL erstellen wird die CRL erzeugt.

 

 

 

 

 

Die Gültigkeitsdauer der CRL kann sowohl im Dialog beim erstellen der CRL als auch in den Eigenschaften der CA eingestellt werden:

XCA - CA Eigenschaften

XCA -CRL erstellen 

XCA - Rücknahmelisten

 

 

Nun muss die CRL exportiert werden. Dazu auf den Reiter Rücknahmelisten wechseln. Die aktuelle CRL auswählen und auf Export klicken. Anschließend den Speicherort und Namen angeben. Als Exportformat PEM auswählen.

 

 

 

CRL verwalten

XCA - CRL Rücknahme aufheben

 

Zurückgenommene Zertifikate kann man jederzeit wieder aktivieren. Dazu das zurückgenommene Zertifikat mit der rechten Maustaste anklicken und auf Rücknahme aufheben klicken.

 

 

 

XCA - Vertrauen

 

 

 

 

Anschließend erneut das Zertifikat mit der rechten Maustaste anklicken und auf Vertrauen klicken.

 

 

 

 

 

 

XCA - Vertrauen

 

 

 

Wichtig ist, das man Nur dann vertrauen, wenn wir dem Aussteller vertrauen auswählt.

 

 

 

 

Sobald die Rücknahme abgeschlossen ist, muss eine neue CRL erzeugt und exportiert werden.

 

Konfiguration des Stunnel-Server

Zunächst wird der Stunnel-Server vorbereitet.

Eine Datei stunnel.conf im Ordner des Stunnel-Servers mit einem Text-Editor anlegen und folgenden Inhalt einfügen:

; Certificate + key
cert = SSL-VPN_Server.pem

; Some performance tunings
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1

; Authentication stuff
verify = 2

; CAfile
CAfile = SSL-VPN_CA_Cert.pem

; CRLfile
;CRLfile = SSL-VPN_CA_CRL.pem <- wird benötigt wenn eine CRL verwendet wird

; Some debugging stuff useful for troubleshooting
;debug = 7
output = stunnel.log

; Service-level configuration
[SERVICENAME]
accept  = IP:PORT
connect = IP:PORT
TIMEOUTclose = 0

Den Bereich [SERVICENAME] auf die entsprechenden Bedürfnisse anpassen. Wenn auf allen IP-Adressen des Servers Verbindungen angenommen werden sollen, reicht es aus, nur den Port bei accept anzugeben.  Falls das Ziel ebenfalls der Server ist, gilt das Gleiche wie beim Akzeptieren von Verbindungen,  nur unter connect. Benötigt man mehr als einen Port, so kann man mehrere Serviceabschnitte definieren.

Um Stunnel unter Windows als Dienst zu installieren folgenden Befehl ausführen:

stunnel.exe  -install

stunnel.exe -install

Stunnel-Dienst

Um Stunnel zu starten entweder den Befehl stunnel.exe –start ausführen oder in der Dienste-Verwaltung stunnel starten.

 

Konfiguration des Stunnel-Clients

Eine Datei stunnel.conf im Ordner des Stunnel-Clients mit einem Text-Editor anlegen und folgenden Inhalt einfügen:

; Certificate + key
cert = SSL-VPN_Client.pem

; Some performance tunings
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1

; Authentication stuff
verify = 2

; CAfile
CAfile = SSL-VPN_CA_Cert.pem

; Some debugging stuff useful for troubleshooting
;debug = 7
output = stunnel.log

; Use it for client mode
client = yes

; Service-level configuration
[SERVICENAME]
accept  =PORT
connect = IP:PORT
TIMEOUTclose = 0

Im Bereich [SERVICENAME] – accept den lokalen Port angeben, auf den Verbindungen angenommen werden sollen. Bei connect die IP-Adresse oder den Computernamen und den Port des Stunnel-Servers angeben.

Den Stunnel-Client kann man genauso wie den Stunnel-Server als Dienst laufen lassen. Das bietet den Vorteil, dass das Programm transparent im Hintergrund läuft und vom Benutzer keinen Eingriff verlangt. Alternativ lässt sich der Stunnel-Client wie eine Anwendung ausführen.

Sobald der Stunnel-Client ausgeführt wird, kann z.B. über den Remote Desktop Client unter Angabe der localhost-Adresse und des Ports eine mit SSL-verschlüsselte Verbindung hergestellt werden.

RDP

Hier ein kleines Beispiel-Skript für den Start von Stunnel, dem Aufruf des Remote Desktop Clients und dem anschließenden beenden von Stunnel:

 

@echo off

title ssl-vpn client

rem start stunnel
  start stunnel.exe

rem start rdp
  mstsc /v:localhost:9000

rem kill stunnel
  taskkill /im stunnel.exe /f /t

 

Tipp: Falls man kein Tray Icon haben möchte, dann in der stunnel.conf folgende Zeile einfügen:

  ; Taskbar icon
    taskbar = no

 

Ein paar abschließende Worte

Für ein automatisches Verteilen bietet sich zudem die Option -quiet an. Dadurch wird der Stunnel-Dienst ohne Meldung installiert.

Nicht vergessen darf man die Konfiguration der Firewall für alle verwendeten Ports.

Unter Umständen macht es bei schmalbandigen Verbindungen Sinn,
die Option compression = zlib | rle in der stunnel.conf zu setzen. Dadurch wird eine Kompression aktiviert. In manchen Szenarien kann dies aber auch negative Auswirkungen haben, so z..B. bei Fernzugriffen wie RDP, da hier unter Umständen eine spürbare Latenz verursacht wird

 

Links

OpenVPN.eu Wiki – Schlüsselverwaltung mit XCA

Optik Berndt – Erstellen von Zertifikaten mit xca speziell zur Nutzung mit OpenVPN


Ähnliche Beiträge:

  1. TeamViewer im lokalen Netzwerk verwenden
  2. Windows: Remote Desktop für Home Edition nachrüsten
  3. Mac: RemoteApp vom Windows-Remotedesktopdienste-Server nutzen
  4. Meine Mac-Programme

Dieser Beitrag wurde unter Software abgelegt und mit , , , , , , , , , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Hinterlasse eine Antwort

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

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>