AA_PO-24176-123RF-dimjul_123RF-Zwillinge_lauschen_an_Wand_resized.jpg

© dimjul, 123RF

Abhörschutz

VPN-Verbindungen mit OpenVPN einrichten

09.10.2013
OpenVPN hilft dabei, von unterwegs sicher auf die Daten auf dem eigenen Computer zurückzugreifen. Dabei ist die Software leicht einzurichten und gehört bei den großen Distributionen zu den Standardpaketen.

Seit den Enthüllungen rund um Geheimdienste mussten zahlreiche Anwender ihre Vorstellungen zum Thema Internetnutzung grundlegend ändern. Viele Experten hatten für technisch unmöglich gehalten, was der Whistleblower Edward Snowden Stück für Stück enthüllte: dass eine umfassende Kontrolle beinahe des gesamten Datenverkehrs nicht nur völlig verdachtsunabhängig stattfindet, sondern dass die Daten auch automatisiert analysiert werden.

Wem die Relevanz verschlüsselter Kommunikation bis dato nicht klar war, der weiß spätestens jetzt, dass unverschlüsselter Traffic im Netz offen ist wie eine Postkarte: Jeder kann sie lesen. Die Enthüllungen rund um den SSL-Standard geben ebenfalls Grund zur Sorge, zeigen sie doch, dass ein auf einer öffentlichen Schlüsselinfrastruktur (engl. Public Key Infrastructure, PKI) aufgebautes System mit "zertifizierten" Stellen zur Schlüsselausgabe ebenfalls grundsätzlich anfällig ist. Fast reflexartig waren sie dann auch wieder da, die Sicherheitsapostel, die seit Jahren das immer gleiche Mantra verkünden: "Nur Ende-zu-Ende-Verschlüsselung bietet verlässlichen Schutz".

Wofür taugt OpenVPN?

OpenVPN hilft Ihnen dabei, Verbindungen zwischen Systemen in Ihrem Haus und solchen, die an anderen Orten stehen, zu verschlüsseln, indem es ein so genanntes Virtual Private Network (VPN) einrichtet. Denken Sie an eine Situation, in der Sie Ihr Notebook nicht daheim, sondern im Büro nutzen. Wenn Sie vom Büro aus auf Daten zugreifen möchten, die auf dem heimischen PC liegen, ist der Aufbau eines VPNs sinnvoll: Damit schaffen Sie ein rein virtuelles Netz, das nur aus Ihrem Notebook und Ihrem heimischen PC besteht. Für die beiden Computer wirkt das, als wären sie im gleichen lokalen Netz, auch wenn sie 50 Kilometer voneinander entfernt stehen.

Dieser Mechanismus ist aber eben nur die halbe Miete, denn es ist durchaus möglich, VPN-Netzwerke ohne Verschlüsselung zu betreiben – auch wenn das keine gute Idee ist. Mit OpenVPN richten Sie ein VPN ein, in dem alle übertragenen Daten verschlüsselt werden. Im Vergleich zur Einrichtung der Alternative IPsec [4] geht das OpenVPN-Setup spielend leicht von der Hand.

Standardwerkzeug

Bei den meisten Desktop-Linux-Distributionen gehört OpenVPN mittlerweile zum Lieferumfang, manchmal sogar zur Standardinstallation. Clients sind aber auch für Windows- und OS-X-Systeme verfügbar, so dass es möglich ist, diese Systeme in ein OpenVPN-Netzwerk zu integrieren. Prüfen Sie auf Ihren Linux-Rechnern über die Paketverwaltung, dass OpenVPN installiert ist – falls nicht, spielen Sie die Software ein.

Zunächst wählen Sie einen Rechner aus, auf dem der OpenVPN-Server laufen soll. Dieser Server ist idealerweise von außen (aus dem Internet heraus) zu erreichen; es kann z. B. Ihr heimischer PC sein. Hängt der Rechner an einem Router (wie z. B. einer Fritzbox), müssen Sie auf diesem eine Port-Weiterleitung einrichten, die eingehende Verbindungen auf UDP-Port 1194 direkt zum selben Port auf dem OpenVPN-Server weiterleitet (siehe Artikel ab Seite 36). Ist diese Voraussetzung erfüllt (ist also ein OpenVPN-Server installiert), sind die Clients an der Reihe: Sie brauchen einen OpenVPN-Client, der die Verbindung mit dem Server aufbaut. Windows-kompatible Clients finden Sie direkt auf der OpenVPN-Seite [2], für OS X empfiehlt sich Tunnelblick [3]. Für Linux-PCs bringt meist die Distribution ein Client-Paket mit.

Ist die Installation abgeschlossen, geht es schon los: Die Clients verbinden sich mit dem OpenVPN-Server, legen lokal ein virtuelles Netzwerk-Interface an und erhalten vom Server über DHCP (Dynamic Host Configuration Protocol) eine IP-Adresse für diese virtuelle Netzwerkkarte. Jeder so konfigurierte Rechner kann danach Informationen an den OpenVPN-Server schicken, der diese an den richtigen Zielrechner weiterleitet. Dabei sind alle Übertragungen verschlüsselt.

Wir beschreiben nun die Installation eines OpenVPN-Servers unter Ubuntu und OpenSuse und erläutern auch, wie die Client-Konfiguration auf diesen Systemen abläuft.

OpenSSL-CA einrichten

Auf dem OpenVPN-Server benötigen Sie eine so genannte Certificate Authority (CA) für OpenSSL. Für die Einrichtung ist ein Ausflug auf die Kommandozeile nötig. Es gilt, eine Konfigurationsdatei zu ändern und im Anschluss ein paar Shell-Befehle einzugeben. Die folgende Schritt-für-Schritt-Anleitung gilt in gleicher Weise für Ubuntu und OpenSuse.

  1. Drücken Sie [Alt]+[F2] und geben Sie den Befehl konsole ein, um ein Terminalfenster zu öffnen. Werden Sie mittels sudo -i und Eingabe Ihres Benutzerpassworts zum Systemadministrator root.
  2. Wechseln Sie unter OpenSuse mit

    cd /usr/share/openvpn/easy-rsa/2.0

    in den Ordner mit Easy-RSA und kopieren Sie mit

    cp vars /etc/openvpn/

    die Datei vars in den Ordner /etc/openvpn.

    Unter Ubuntu müssen Sie den Konfigurationsordner nach /etc kopieren, damit er bei Updates nicht verloren geht – hier hilft

    cp -r /usr/share/doc/openvpn/examples/easy-rsa /etc/openvpn/easy-rsa

    Öffnen Sie im Editor die Datei vars – unter OpenSuse ist das /etc/openvpn/vars, unter Ubuntu /etc/openvpn/easy-rsa/2.0/vars. Dazu öffnen Sie ein zweites Terminalfenster und geben darin den Befehl kdesu kwrite Dateiname ein.

  3. Das Layout der Datei wirkt auf den ersten Blick etwas eigenartig, de facto handelt es sich aber um ein einfaches Bash-Scripting. Scrollen Sie zu der Zeile, die mit export EASY_RSA anfängt. Ersetzen Sie `pwd` durch /usr/share/openvpn/easy-rsa/2.0 (OpenSuse) bzw. /etc/openvpn/easy-rsa/2.0 (Ubuntu). Scrollen Sie dann ans Ende der Datei.
  4. Hier legen Sie die tatsächlichen Werte fest, die am Ende Bestandteil Ihrer Zertifikate sind. Jedes SSL-Zertifikat enthält detaillierte Informationen zur dahinter stehenden Organisation. Die voreinstellungen beschreiben eine Firma in San Francisco; setzen Sie die Werte für die Einträge ab KEY_COUNTRY nach Belieben; ein Beispiel finden Sie in Listing 1.

Listing 1

vars

export KEY_COUNTRY="AT"
export KEY_PROVINCE="Vienna"
export KEY_CITY="Vienna"
export KEY_ORG="Private"
export KEY_EMAIL="admin@example.com"
export KEY_CN="EasyLinux Test-CA"
export KEY_NAME="EasyLinux Test-CA"
export KEY_OU="Free Journalist"
  1. Auf der ersten noch offenen Shell, in der Sie sich im Verzeichnis /usr/share/openvpn/easy-rsa/2.0 oder /etc/openvpn/easy-rsa/2.0 befinden sollten, geben Sie nun folgenden Befehl ein:

    source Datei && ./clean-all && ./build-ca

    Ersetzen Sie Datei dabei durch /etc/openvpn/vars (OpenSuse) oder /etc/openvpn/easy-rsa/2.0/vars (Ubuntu).

  2. Das Tool zum Anlegen des Schlüssels fragt nun sämtliche Werte von Ihnen nochmals ab, doch können Sie alle Fragen mit [Eingabe] bestätigen, weil Sie die Werte vorab festgelegt haben.
  3. Nun erstellen Sie das Server-Zertifikat für OpenVPN und zugleich auch das für einen Client. Geben Sie in der noch immer offenen Shell zunächst den Befehl ./build-dh ein, gefolgt von ./build-key-server server. Es folgt eine ähnliche Abfrage wie eben. Achten Sie diesmal darauf, dass Sie einen anderen Wert beim Feld Common Name eingeben: Der Common Name legt bei SSL-Zertifikaten fest, für welchen Rechner das Zertifikat gilt – server wäre eine gute Wahl.
  4. Den gleichen Vorgang wiederholen Sie für Key und Zertifikat für mindestens einen Client: ./build-key client. Nutzen Sie einen aussagekräftigen Namen bei der Abfrage nach dem Common-Name, zum Beispiel martin-notebook (Abbildung 1).

    Abbildung 1: So sieht es aus, wenn Sie mit den Easy-RSA-Werkzeugen einen Client-Schlüssel erzeugen.
  5. Sämtliche angelegten Schlüssel befinden sich danach im Verzeichnis /usr/share/openvpn/easy-rsa/2.0/keys/ (OpenSuse) oder /etc/openvpn/easy-rsa/2.0/keys (Ubuntu). Dort liegen jeweils auch die zu den Keys gehörigen Zertifikate. Ihre eigene SSL-CA ist damit fertig konfiguriert, und Sie können mit der Einrichtung von OpenVPN fortfahren. Kopieren Sie jedoch vorher noch die entstandenen Zertifikate und Schlüssel: Auf OpenSuse tun Sie das mit

    cp /usr/share/openvpn/easy-rsa/2.0/keys/*.{pem,crt,key} /etc/openvpn/ssl

    und unter Ubuntu lautet der komplette Befehl

    cp /etc/openvpn/easy-rsa/2.0/keys/*.{pem,crt,key} /etc/openvpn/ssl

OpenVPN-Server einrichten

Die Konfiguration des OpenVPN-Servers ist nicht weiter kompliziert: Die Konfigurationsdatei /etc/openvpn/server.conf ist weitestgehend statisch und benötigt keine größeren Anpassungen, zudem passt dieselbe Datei für OpenSuse und Ubuntu. Listing 2 enthält ein vollständiges Beispiel, das als Server-IP-Adresse 192.168.1.120 nutzt. Wollen Sie eine andere Adresse nutzen, ändern Sie einfach diesen Wert. Sie aktivieren OpenVPN danach mit rcopenvpn start (OpenSuse) oder service openvpn start (Ubuntu).

Listing 2

openvpn.conf

# /etc/openvpn/server.conf
port 1194
proto udp
dev tun0
# Security
ca   /etc/openvpn/ssl/ca.crt
cert /etc/openvpn/ssl/server.crt
key  /etc/openvpn/ssl/server.key
dh   /etc/openvpn/ssl/dh1024.pem
server 192.168.1.120 255.255.255.0
ifconfig-pool-persist /var/run/openvpn/ipp.txt
# Privileges
user nobody
group nobody
# Other configuration
keepalive 10 120
comp-lzo
persist-key
persist-tun
status      /var/log/openvpn-status.log
log-append  /var/log/openvpn.log
verb 4

Client-Konfiguration

Die Konfiguration des Clients ist einfacher als die des Servers, weil Sie die dafür notwendigen Zertifikate schon erstellt haben. Außerdem steht für Ubuntu und OpenSuse ein Plug-in für den Network-Manager zur Verfügung, mit dem sich Verbindungen zu OpenVPN-Servern per Mausklick einrichten lassen. So gehen Sie auf beiden Distributionen vor:

Abbildung 2: Die Client-Konfiguration erledigen Sie über den Network-Manager, die alle wichtigen Einstellungen zugänglich macht.
  1. Kopieren Sie das Zertifikat samt dem dazu gehörenden Schlüssel für den Client auf den Rechner, der sich via OpenVPN mit dem Server verbinden soll. Im Beispiel heißt das Zertifikat martin-notebook.crt, der Schlüssel martin-notebook.key, und beide Dateien liegen auf dem Server in /etc/openvpn/ssl. Kopieren Sie auch die Datei ca.crt auf den Client.
  2. Starten Sie auf dem Client den Network-Manager und öffnen Sie darin die Registerkarte für VPNs. Der Eintrag im K-Menü heißt Netzwerkverbindungen.
  3. Klicken Sie rechts auf Hinzufügen und wählen Sie OpenVPN als Typ aus.
  4. Legen Sie oben einen Verbindungsnamen fest. Tragen Sie beim Feld Gateway weiter unten die IP-Adresse ein, unter der Ihr Server öffentlich erreichbar ist. Falls Sie einen DynDNS-Dienst nutzen, können Sie hier auch den DynDNS-Namen einsetzen und ersparen sich so das lästige Ändern der Konfiguration nach jeder Zwangstrennung durch den heimischen Provider.
  5. Im Feld Verbindungstyp wählen Sie X509-Zertifikate aus. Bei den Feldern darunter geben Sie jeweils die Pfade zu den Dateien an, die Sie eben kopiert haben, für CA-Datei also den Pfad zu ca.crt, für Zertifikat den Pfad zu martin-notebook.crt und für Schlüssel den zu martin-notebook.key.
  6. Klicken Sie dann auf Zusätzliche Einstellungen und setzen Sie einen Haken bei der Option LZO-Kompresion verwenden.

Damit ist die Konfiguration bereits abgeschlossen. Wenn Sie Ihren Key mit einem Passwort geschützt haben, wird der Client Sie danach fragen, sobald Sie die Verbindung aufbauen.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

Kommentare