Tunnel zwischen openVPN-Client und Astaro (Sophos UTM)

vpnAuch wenn es von Sophos nicht unbedingt vorgesehen ist, Site-to-Site-SSL-Verbindungen zwischen einer Sophos UTM und einem regulären SSL-VPN Client wie openVPN aufbauen zu lassen, ist dies dennoch möglich. Dieser Artikel zeigt zunächst, wie die neue Verbindung seitens der Sophos UTM und anschließend auf einem Linux-Client mit dem openVPN-Paket eingerichtet wird. Für die Beispiele in diesem Artikel wird auf der Seite des Servers Sophos UTM 9.0 und auf der Seite des Clients eine Debian-basierende Linuxdistribution eingesetzt.

 

 

Sophos-UTM als VPN-Server

Seitens der Sophos UTM gilt es zunächst, eine neue SSL-VPN-Verbindung einzurichten, welche wir im späteren Verlauf auf unserem Linux-Client konfigurieren.

 

Kryptographische Einstellungen prüfen

1 Wir öffnen im Hauptmenü der UTM den Punkt „Site-to-Site-VPN“ und anschließend wählen wir den Unterpunkt „SSL„.

 

7 Um die Konfiguration des VPN-Clients an die kryptographischen Gegebenheiten der UTM anzupassen, prüfen wir nun, welche auf dieser Festgelegt wurden. Dazu öffnen wir den Reiter „Erweitert“ und legen dort die gewünschten Einstellungen fest. Für unsere Zwecke reicht eine Verschlüsselungsstärke von 256 Bit mit dem Algorithmus AES-CBC.

 

 

Verbindungseinstellungen setzen/prüfen

10.5 Im Registerreiter „Einstellungen“ legen wir unter anderem fest, auf welcher Netzwerkschnittstelle und auf welchem Port eingehende Verbindungen seitens der VPN-Clients entgegengenommen werden. Zudem definieren wir hier den Hostnamen des VPN-Servers. Diese Angabe wird im späteren Verlauf der Einrichtung noch relevant.

 

Neuen Client einrichten

2 Wir kehren zum Punkt „Verbindungen“ zurück und in diesem Bereich nutzen wir die Schaltfläche „Neue SSL-Verbindung…

 

3 Hier wählen wir folgende Einstellungen:

  • Als Verbindungstyp „Server
  • Der Verbindungsname ist frei wählbar und dient nur der Übersicht
  • Lokale Netze: Auf welche Netze „hinter“ der UTM soll der VPN-Client künftig Zugriff erhalten?
  • Entfernte Netze: Welche (gerouteten) Netze befinden sich „hinter“ dem VPN-Client?
  • Der Punkt „Automatische Firewallregeln“ nimmt die Administration der hierfür notwendigen Einträge der Firewall ab

 

5 Nachdem die Verbindung gespeichert wurde, erscheint diese nun in der SSL-VPN-Übersichtsseite. Hier ist darauf zu achten, dass diese aktiviert ist. Dies ist wie im Bild am grünen Schieber erkennbar. Anschließend laden wir die Konfigurationsdatei mit einem Klick auf „Download“ herunter, welche eigentlich für das Hochladen an einer anderen Sophos UTM gedacht ist.

 

6 Die Möglichkeit, die herunterzuladende Datei zu verschlüsseln, nutzen wir für unsere weitere Verwendung auf keinen Fall.

 

Linux als VPN-Client

Die Konfiguration seitens der UTM ist nun abgeschlossen und die UTM erwartet den Verbindungsaufbau unseres Clients. Daher widmen wir uns nun dessen Einrichtung.

 

Zertifikate, Schlüssel und Anmeldedaten anlegen

Während der Einrichtung des VPN-Servers luden wir eine Konfigurationsdatei von der Sophos UTM herunter, welche wir nun in einem Editor (hierfür empfehle ich Notepad++) öffnen. Diese Konfigurationsdatei enthält alle wichtigen Angaben und Informationen, welche wir für die Einrichtung des openVPN-Clients benötigen. Zu beachten ist dabei folgende Reihenfolge:

  1. Das Benutzerzertifikat
  2. Das CA-Zertifikat des VPN-Servers
  3. Der private Benutzerschlüssel
  4. Der Benutzername
  5. Das Benutzerpasswort

Diese Angaben extrahieren wir aus dieser Konfigurationsdatei und fügen die Inhalte wie folgt beschrieben ein.

 

Zunächst installieren wir bei unserem Linux-Client alle benötigten Pakete, wie hier an einem Debian-System gezeigt:

apt-get update && apt-get upgrade
apt-get install openvpn

 

Anschließend wechseln wir in das Arbeitsverzeichnis von openVPN

cd /etc/openvpn/

und erstellen bzw. editieren die Datei „ersterclient.user.crt„:

nano ersterclient.user.crt

und fügen den folgenden Abschnitt der .apc Datei ein. (erstes Vorkommen von BEGIN CERTIFICATE!). Dieser Abschnitt sollte etwa bei Zeile 79 der .apc-Konfigurationsdatei beginnen.

-----BEGIN CERTIFICATE-----
[...]
-----END CERTIFICATE-----

Nach dem Einfügen speichern wir die neue Datei (im Beispiel von nano mit STRG+O, STRG+X).  Zu beachten ist, dass die beiden oben angegebenen Zeilen ebenfalls mit kopiert und eingefügt werden.

 

Nun erstellen wir in gleicher Weise die Datei „ersterclient.ca.crt“ und fügen den nächsten Abschnitt wie beschrieben ein (Zweites Vorkommen von BEGIN CERTIFICATE!):

nano ersterclient.ca.crt
-----BEGIN CERTIFICATE-----
[...]
-----END CERTIFICATE-----

 

Nun folgt die Datei „ersterclient.user.key„:

nano ersterclient.user.key

Zu kopierender Abschnitt aus der Konfigurationsdatei:

-----BEGIN PRIVATE KEY-----
[...]
-----END PRIVATE KEY-----

 

Letztendlich legen wir noch eine Datei an, welche unseren Nutzernamen und das Passwort beinhaltet. Diese Daten befinden sich ebenfalls, auch wenn schwerer zu finden, in der .apc-Konfigurationsdatei. Daher habe ich diese Bereiche im folgenden Screenshot markiert:

 

8

 

 

Der erste markierte Bereich stellt den Nutzernamen dar, der zweite das dazugehörige Passwort. Diese beiden Daten übertragen wir nun zu unserem openVPN-Client:

mkdir login
nano login/ersterclient.login

 

In die erste Zeile fügen wir den Nutzernamen ein, in die zweite das Passwort:

 

9

 

 

openVPN-Konfiguration erstellen

Da nun alle Vorbereitungen getroffen und die notwendigen Informationen auf den Client übertragen sind, wird es nun Zeit, die Konfigurationsdatei für den openVPN-Client zu erstellen. Dazu erstellen wir eine leere Datei, die zwingend mit „.conf“ enden muss:

nano ersterclient.conf

und fügen beispielhaft diese Konfiguration ein:

client
dev tun
proto tcp
remote 1.2.3.4 1194
tls-remote "/C=DE/L=Baerstadt/O=Stadtverwaltung/CN=vpnsrv.example.com/emailAddress=admin@example.com"
##############################################################
route remote_host 255.255.255.255 net_gateway
resolv-retry infinite
nobind
persist-key
persist-tun
ca ersterclient.ca.crt
cert ersterclient.user.crt
key ersterclient.user.key
auth-user-pass login/ersterclient.login
cipher AES-256-CBC
auth SHA1
comp-lzo no
route-delay 4
verb 3
reneg-sec 0

Hierbei ist folgendes zu beachten:

  • Die IP des Beispiels (1.2.3.4) muss durch die IP des eigenen VPN-Servers ersetzt werden
  • Der Port 1194 sowie die verwendeten Algorithmen müssen der Konfiguration der Sophos UTM entsprechen
  • Die Zeile „tls-remote“ setzt sich aus den Informationen der .apc-Konfigurationsdatei (~Zeile 269, vorletzte Zeile) zusammen
  • Die angegebenen Dateinamen müssen mit den aus den vorherigen Punkten dieses Artikels erstellten Dateinamen übereinstimmen

 

Update
Ab sofort wird die Option tls-remote nicht mehr unterstützt.
Die korrekte Anweisung lautet nun:
verify-x509-name „C=de, L=Baerstadt, O=Stadtverwaltung, CN=vpnsrv.example.com“ subject

 

Verbindung starten

Jetzt starten wir den openVPN-Client mit dem init-script:

/etc/init.d/openvpn start

und achten auf ggf. auftretende Fehler oder im Optimalfall auf die grüne Bestätigung, dass der Client ordnungsgemäß gestartet wurde.

 

Wir prüfen mit

ifconfig

ob die neue Verbindung als Interface „tun0“ aufgeführt wird:

 

11

 

 

Verbindung testen

Sollte der Client gestartet und ein neues Interface hinzugefügt worden sein, ist es an der Zeit, die Verbindung zu prüfen.

 

Verbindung am Linux-Client testen

Am Linux-Client testen wir die Verbindung am einfachsten, indem wir die von „ifconfig“ aufgeführte VPN-IP-Adresse des Servers (P-z-P) pingen.

 

Verbindungsübersicht bei Sophos UTM

13 Im Hauptmenü der UTM navigieren wir zum Hauptpunkt „Site-to-Site-VPN“ und erhalten eine Übersicht aller Verbindungen mit dem jeweiligen Verbindungsstatus.

 

Wurde die Verbindung erfolgreich aufgebaut, ist im Übersichtsmenü der SSL-Verbindungen beispielhaft folgende Ausgabe zu sehen:

 

12