Auch Ubuntu 18.04 liefert nur das veraltete und unsichere PPTP-Protokoll ‚out of the box‘ mit. Dabei sind die Sicherheitslücken schon seit Jahren bekannt, aber die Einrichtung von PPTP ist halt sehr bequem. Bei heise.de findet sich dazu der unterhaltsame Artikel -> Der Todesstoß für PPTP. Wer also auf Nummer Sicher gehen will und Wert auf einen sicheren VPN-Tunnel legt muss muss z.B. OpenVPN nachinstallieren.
Warum OpenVPN und nicht IPSec?
Der entscheidende Vorteil gegenüber IPSec ist die wesentlich einfachere Konfiguation der Clients. OpenVPN eignet sich dabei nicht nur für End-to-Site-VPNs, sondern ebenso für Site-to-Site-VPNs. Zudem bieten die meisten professionellen Firewalls vorgefertigte Konfigurationsdateien für die Clients an, die auch die notwendigen Zertifikate enthalten.
Gerade unter den Linuxderivaten ist die Installation von IPSec oder L2TP over IPSec durchaus kompliziert und setzt einiges an Fachwissen über Routing, Verschlüsselungstechnik und Protokolle vorraus.
Firewall vorbereiten
Ich habe die Konfiguration auf einer Sophos UTM 9 durchgeführt, so dass man für andere Produkte in den Handbüchern der jeweiligen Hersteller nachschlagen muss. Das Prinzip ist jedoch immer ähnlich.
Betreibt man einen eigenen VPN-Server, hilft die -> Ubuntu Documentaion bei der Konfiguration der Serverseite.
Zunächst legt man, falls noch nicht geschehen, auf der Firewall den Benutzer an. Die Art der Authentifizierung (keine/lokal/entfernd) hängt von der Systemumgebung ab. Das X509-Zertifikat wird von der UTM 9 automatisch erzeugt. Der neue Benutzer kann sich nun auf dem User Portal der UTM 9 anmelden und unter dem Menüpunkt Fernzugriff die Konfigurationsdatei herunterladen. Das User Portal wird über https://<lokale IP-Adresse> ohne Portangabe erreicht.
Installation OpenVPN und Aufbau des VPN-Tunnels
Die Konfiguration aus der UTM 9 lässt sich direkt in OpenVPN verwenden. Installiert wird auf dem Client-Rechner mit dem Terminal und
:~$ audo apt-get update :~$ sudo apt-get install openvp
DieKonfigurationsdatei speichert man in einem versteckten Verzeichnis innerhalb seines homes (z.B. unter /home/testuser/.vpn/vpnuser@utm9-fw.ovpn). Dort legt man auch eine Datei password.txt an, in der in der ersten Zeile der VPN-Benutzername und in der zweiten Zeile das Passwort steht.
Die von der Firewall herunter geladene Konfigurationsdatei muss nun noch angepasst werden.
client dev tun proto tcp remote 81.251.38.112 5001 <-- Hier die externe IP der Firewall eintragen verify-x509-name "C=de, L=Augsburg, O=drept, CN=fireplace, emailAddress=admin@thomas-hupfer.de" route remote_host 255.255.255.255 net_gateway resolv-retry infinite nobind persist-key persist-tun auth-user-pass /home/testuser/.vpn/password.txt <-- Pfad zu Passwortdatei cipher AES-128-CBC auth MD5 comp-lzo route-delay 4 verb 3 reneg-sec 0 ...
Danach startet man die VPN-Verbindung ebenfalls im Terminal oder über ein Script mit
:~$ sudo openvpn /home/testuser/.vpn/vpnuser@utm9-fw.ovpn
Der Nachteil beim Start aus dem Terminalfenster ist, dass das Terminalfenster nun für die gesamte Sitzung geöffnet bleiben muss.
Tipp: Ich habe zunächst relativ schnell einen VPN-Tunnel aufbauen können, aber dann ziemlich lange erfolglos herum probiert, um Geräte aus dem verbundenen Netz zu erreichen. Dabei habe ich einen GSM-Router verwendet, bei dem ich alle mit bekannten Ports durchgeleitet habe. Der Zeitaufwand war „für die Katz'“, denn aus meinem LAN funktionierte das sofort. Also nicht verzweifeln, sondern in einem LAN testen, das man kennt.
Arbeitet man immer über dieVPN-Verbindung, kann man in der Datei .profile in seinem home-Verzeichnis als letzte Zeile folgendes anfügen:
sudo openvpn /home/testuser/.vpn/vpnuser@utm9-fw.ovpn &
Das & am Ende ist kein Schreibfehler und das Userverzeichnis und der Name der Konfigurationsdatei müssen natürlich angepasst werden.
Wie man die VPN-Verbindung mit Desktop-Icons starten und stoppen kann, erkläre ich -> hier.
Komfortabler mit dem Network-Manager
Um den VPN-Tunnel komfortabel über die Netzwerkeinstellungen aufbauen zu können, verwendet man den Network-Manager von Gnome. Er wird installiert mit
:~$ sudo apt-get install network-manager-openvpn-gnome
Die Zugangsdaten sollten bekannt sein, die Zertifikatdateien ca.cert, client.cert und client.key muss man aus der Konfigurationsdatei der UTM 9 in eigene Dateien kopieren, speichert sie an einem sicheren Ort (z.B. /home/<user>/.cert) und setzt die Dateiberechtigungen so, dass sie nur vom Besitzer verwendet werden können. Die Zertifikate kopiert man mit der Anfangs- und Endzeile.
-----BEGIN CERTIFICATE----- <Inhalt> -----END CERTIFICATE-----
Der Key wird ebenfalls mit Anfangs- und Endzeile kopiert.
-----BEGIN PRIVATE KEY----- <Inhalt> -----END PRIVATE KEY-----
Im Networkmanager (in den Netzwerkverbindungen rechts oben in der Top-Bar auf dem Desktop) fügt man nun eine OpenVPN-Verbindung hinzu. In diesem Beispiel erfolgt die Authentifizierung mit Userkennung und den eben extrahierten Zertifikaten.
Wird wie hier kein Passwort für die Schlüsseldatei benötigt, muss das über das Menü rechts im Eingabefeld angegeben werden!
Die Konfigurationseinstellungen für den Network-Manager kann man den Angaben vor den Zertifikaten in der Konfigurationsdatei entnehmen.
Testen der VPN-Verbindung
Ohne aktivierte VPN-Verbindung geht man auf eine Seite, die die eigene externe IP anzeigt (z.B. -> wieistmeineip.de) und aktiviert dann die VPN-Verbindung. Aktualisiert man nun die Seite und wird die IP desVPN-Servers angezeigt, steht der VPN-Tunnel.
Fehlersuche
Bei der Fehlersuche helfen die Log-Dateien. Unter /var/log/syslog findet man die problematischen Konfigurationseinträge meist heraus. Im Netzwerk-Manager selbst sieht man die Schlüsselwörter in der Konfigurationsdatei, indem man den Mauszeiger auf das Eingabefeld legt und dann im Tooltipp das zugehörige Schlüsselwort am Ende identifizieren kann.
Damit ist eine Voraussetzung für die -> Fernsteuerung oder Homeworking mit Ubuntu erfüllt.
Wie man die VPN-Verbindung mit Desktop-Icons starten und stoppen kann, erkläre ich -> hier.
4 Comments