Kategorien
Allgemein Ubuntu

VPN Einrichten

Installation des OpenVPN-Servers

Installation der verfügbaren Updates sowie der benötigten Pakete

1. Zunächst ist es wichtig, das Debian-System auf den aktuellsten Stand zu bringen, indem Sie mit dem folgenden Befehlen alle verfügbaren Updates aus dem Repository installieren:

# apt-get update
# apt-get upgrade
2. Im nächsten Schritt können Sie OpenVPN ebenfalls aus dem Repository installieren.

# apt-get install openvpn
Beispiel-Konfiguration übernehmen und anpassen

1. Für einen OpenVPN-Server ist es empfehlenswert, dass Sie die Beispielkonfiguration von OpenVPN als Basis für Ihre Konfiguration verwenden. Sie können diese mit den folgenden Befehlen kopieren:

# cd /usr/share/doc/openvpn/examples/sample-config-files/
# cp server.conf.gz /etc/openvpn/
2. Da die Beispielkonfigurationsdatei noch als gepacktes Gzip-Archiv vorliegt, ist es erforderlich, diese Datei zu entpacken:

# cd /etc/openvpn/
# gunzip server.conf.gz
Easy-RSA-Zertifkatsskripte kopieren

1. Um die Zertifikate einfach erstellen und verwalten zu können, ist es erforderlich, die Key-Management-Skripte nach /etc/openvpn/easy-rsa2 zu kopieren.

# cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 easy-rsa2
2. In den nächsten Schritten werden die erstellten Zertifikate und Keys im Ordner „keys“ abgespeichert, dieser existiert zum jetzigen Zeitpunkt jedoch noch nicht.

Daher können Sie den Ordner „keys“ einfach mit dem folgenden Befehl erstellen:

# cd /etc/openvpn/easy-rsa2
# mkdir keys
3. Zudem ist es notwendig, dass die OpenSSL-Konfigurationsdatei openssl.cnf besteht. Hierfür können Sie die bereits vorhandene Datei openssl-1.0.0.cnf kopieren:

# cp openssl-1.0.0.cnf openssl.cnf
Easy-RSA-Parameter anpassen

1. Die Parameter für Easy-RSA sind in der Datei /etc/openvpn/easy-rsa2/vars hinterlegt und werden anschließend in Ihre aktuellen Umgebungsvariablen übernommen.

Um diese Datei zu bearbeiten, können Sie einen beliebigen Texteditor wie z.B. vim oder nano verwenden.

# vim vars
2. Nun ist es erforderlich, dass Sie die folgenden Zeilen in der Datei vars für Ihre Zwecke anpassen.

export KEY_COUNTRY=“US“
export KEY_PROVINCE=“CA“
export KEY_CITY=“SanFrancisco“
export KEY_ORG=“Fort-Funston“
export KEY_EMAIL=“me@myhost.mydomain“
Beispielsweise wäre es möglich, folgende Einstellungen zu hinterlegen:

export KEY_COUNTRY=“DE“
export KEY_PROVINCE=“BY“
export KEY_CITY=“Ismaning“
export KEY_ORG=“JiffyBox VPN“
export KEY_EMAIL=“ihre@e-mail-adresse“
3. Mit dem folgenden Befehl können Sie die in der Datei „vars“ hinterlegten Variablen in Ihre aktuellen Umgebungsvariablen aufnehmen. Dies ist unter anderem erforderlich, damit diese Einstellungen als Standardwerte beim Erstellen der Zertifikate verwendet werden können.

# source ./vars
Zertifikate erstellen

CA erstellen

Bevor Sie nun die Zertifikate für den OpenVPN-Server sowie die Clients erstellen können, ist es notwendig, das CA-Zertifikat zum Signieren der Server- und Clientzertifikate zu erstellen. Dies können Sie mit den folgenden Befehlen durchführen.

Hierbei können Sie die im vorigen Schritt konfigurierten Parameter in den eckigen Klammern einfach übernehmen, indem Sie die Eingabetaste betätigen.

# ./clean-all
# ./build-ca
Generating a 1024 bit RSA private key
…………………….++++++
…..++++++
writing new private key to ‚ca.key‘
—–
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‚.‘, the field will be left blank.
—–
Country Name (2 letter code) [DE]:
State or Province Name (full name) [BY]:
Locality Name (eg, city) [Ismaning]:
Organization Name (eg, company) [JiffyBox VPN]:
Organizational Unit Name (eg, section) [changeme]:
Common Name (eg, your name or your server’s hostname) [changeme]:
Name [changeme]:
Email Address [ihre@e-mail-adresse]:
Serverzertifikat erstellen

Das Zertifikat für den OpenVPN-Server können Sie einfach mit dem folgenden Befehl ausführen. Hierbei ist es jedoch wichtig, dass der „Common Name“ dem Hostnamen des OpenVPN-Servers entspricht.

Bitte bestätigen Sie am Ende zweimal mit y, dass Sie das neu erstellte Serverzertifikat signieren möchten.

# ./build-key-server j12345.servers.jiffybox.net
Generating a 1024 bit RSA private key
…++++++
……..++++++
writing new private key to ‚j58613.servers.jiffybox.net.key‘
—–
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‚.‘, the field will be left blank.
—–
Country Name (2 letter code) [DE]:
State or Province Name (full name) [BY]:
Locality Name (eg, city) [Ismaning]:
Organization Name (eg, company) [JiffyBox VPN]:
Organizational Unit Name (eg, section) [changeme]:
Common Name (eg, your name or your server’s hostname) [j12345.servers.jiffybox.net]:
Name [changeme]:JiffyBox VPN-Server
Email Address [ihre@e-mail-adresse]:

Please enter the following ‚extra‘ attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /etc/openvpn/easy-rsa2/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject’s Distinguished Name is as follows
countryName :PRINTABLE:’DE‘
stateOrProvinceName :PRINTABLE:’BY‘
localityName :PRINTABLE:’Ismaning‘
organizationName :PRINTABLE:’JiffyBox VPN‘
organizationalUnitName:PRINTABLE:’changeme‘
commonName :PRINTABLE:’j12345.servers.jiffybox.net.‘
name :PRINTABLE:’JiffyBox VPN-Server‘
emailAddress :IA5STRING:’ihre@e-mail-adresse‘
Certificate is to be certified until Aug 14 10:41:34 2023 GMT (3650 days)
Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
Client-Zertifikat erstellen

Die Erstellung der Client-Zertifikate entspricht in etwa der Erstellung des Serverzertifikats, hierbei verwenden Sie jedoch bitte das Skript „build-key“.

Auch hier ist es wichtig, dass der „Common Name“ dem Hostnamen des OpenVPN-Clients entspricht. Bitte bestätigen Sie am Ende ebenfalls zweimal mit y, dass das gerade erstellte Client-Zertifikat signiert werden soll.

Diesen Schritt können Sie für jeden Client, der sich mit einem Zertifikat anmelden soll, wiederholen.

# ./build-key client1.domain.tld
Generating a 1024 bit RSA private key
……++++++
…….++++++
writing new private key to ‚client1.domain.tld.key‘
—–
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‚.‘, the field will be left blank.
—–
Country Name (2 letter code) [DE]:
State or Province Name (full name) [BY]:
Locality Name (eg, city) [Ismaning]:
Organization Name (eg, company) [JiffyBox VPN]:
Organizational Unit Name (eg, section) [changeme]:
Common Name (eg, your name or your server’s hostname) [client1.domain.tld]:
Name [changeme]:
Email Address [ihre@e-mail-adresse]:

Please enter the following ‚extra‘ attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /etc/openvpn/easy-rsa2/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject’s Distinguished Name is as follows
countryName :PRINTABLE:’DE‘
stateOrProvinceName :PRINTABLE:’BY‘
localityName :PRINTABLE:’Ismaning‘
organizationName :PRINTABLE:’JiffyBox VPN‘
organizationalUnitName:PRINTABLE:’changeme‘
commonName :PRINTABLE:’client1.domain.tld‘
name :PRINTABLE:’changeme‘
emailAddress :IA5STRING:’ihre@e-mail-adresse‘
Certificate is to be certified until Aug 14 12:52:31 2023 GMT (3650 days)
Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
Client-Zertifikat erstellen (mit Passwort)

Die Erstellung der Clientzerfitikate entspricht in etwa der Erstellung des Serverzertifikats, hierbei verwenden Sie jedoch bitte das Skript build-key-pass.

Das Erstellen eines Zertifikates mit Passwortschutz ist vor allem bei mobilen Computern empfehlenswert, sodass bei einem Verlust des Geräts immer noch das Passwort benötigt wird, um in das VPN-Netzwerk zu gelangen.

Auch hier sollte der „Common Name“ dem Hostnamen des OpenVPN-Clients entsprechen. Bitte bestätigen Sie am Ende ebenfalls zweimal mit y, dass das gerade erstellte Clientzertifikat signiert werden soll.

Diesen Schritt können Sie für jeden Client, der sich mit einem Zertifikat und zusätzlich mit einem Passwort anmelden soll, wiederholen.

# ./build-key-pass windows-client.local
Generating a 1024 bit RSA private key
..++++++
…….++++++
writing new private key to ‚windows-client.local.key‘
Enter PEM pass phrase:
Verifying – Enter PEM pass phrase:
—–
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‚.‘, the field will be left blank.
—–
Country Name (2 letter code) [DE]:
State or Province Name (full name) [BY]:
Locality Name (eg, city) [Ismaning]:
Organization Name (eg, company) [JiffyBox VPN]:
Organizational Unit Name (eg, section) [changeme]:
Common Name (eg, your name or your server’s hostname) [windows-client.local]:
Name [changeme]:
Email Address [mail@host.domain]:

Please enter the following ‚extra‘ attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /etc/openvpn/easy-rsa2/openssl-1.0.0.cnf
Check that the request matches the signature
Signature ok
The Subject’s Distinguished Name is as follows
countryName :PRINTABLE:’DE‘
stateOrProvinceName :PRINTABLE:’BY‘
localityName :PRINTABLE:’Ismaning‘
organizationName :PRINTABLE:’JiffyBox VPN‘
organizationalUnitName:PRINTABLE:’changeme‘
commonName :PRINTABLE:’windows-client.local‘
name :PRINTABLE:’changeme‘
emailAddress :IA5STRING:’mail@host.domain‘
Certificate is to be certified until Aug 18 09:55:41 2023 GMT (3650 days)
Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
Diffie-Hellman-Parameter auf dem Server erstellen

Um beim Aufbauen der Verbindung die Schlüssel sicher über eine potentiell unsichere Verbindung (durch das Internet) zu übertragen, werden die Diffie-Hellmann-Parameter benötigt.

Diese können Sie mit dem folgenden Befehl erstellen:

# ./build-dh
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
……………………+……….+………………………+……………………………+……….++*++*++*
OpenVPN-Configdatei anpassen

1. Zum Abschluss ist es wichtig, dass Sie die in einem der vorigen Schritte kopierte OpenVPN-Beispielkonfigurationsdatei anpassen, dies können Sie beispielsweise mit vim oder einem anderen Texteditor durchführen:

# vim /etc/openvpn/server.conf
2. Als nächstes können Sie die folgenden Einträge entsprechend an Ihre Einsatzwecke anpassen:

ca ca.crt
cert server.crt
key server.key # This file should be kept secret

dh dh1024.pem

server 10.8.0.0 255.255.255.0
;user nobody
;group nogroup
Nach der Bearbeitung könnten diese Einträge beispielsweise wie folgt aussehen. Um Probleme mit den Zertifikaten zu vermeiden, wurden in diesem Beispiel die absoluten Pfade zu den Zertifkaten verwendet:

ca /etc/openvpn/easy-rsa2/keys/ca.crt
cert /etc/openvpn/easy-rsa2/keys/j12345.servers.jiffybox.net.crt
key /etc/openvpn/easy-rsa2/keys/j12345.servers.jiffybox.net.key
dh /etc/openvpn/easy-rsa2/keys/dh1024.pem

server 172.16.0.0 255.255.255.0

user nobody
group nogroup
OpenVPN-Service starten

1. Da die Einrichtung des OpenVPN-Servers erfolgreich abgeschlossen wurde, können Sie Ihren OpenVPN-Server nun mit dem folgenden Befehl starten:

# service openvpn start
2. Es sollte nun im Syslog (/var/log/syslog) folgende Meldung erscheinen, welche Ihnen anzeigt, dass der OpenVPN-Server erfolgreich gestartet wurde und nun aktiv ist:

Aug 16 15:48:22 localhost ovpn-server[5839]: Initialization Sequence Completed
3. Weiterhin können Sie mit dem Befehl ifconfig überprüfen, ob nun ein weiteres Interface tun0 angelegt wurde, das durch den OpenVPN-Dienst bereitgestellt wird:

tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:172.16.0.1 P-t-P:172.16.0.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Installation und Einrichtung des OpenVPN-Clients auf einem Windows-System

Nachfolgend wird beschrieben, wie man sich mit dem Windows-OpenVPN-Client mit einem OpenVPN-Server verbinden kann.

Download des OpenVPN-Clients

Bitte laden Sie sich zunächst die aktuellste Version des OpenVPN-Clients von der Webseite des OpenVPN-Projekts herunter und installieren Sie diesen:

http://openvpn.net/index.php/open-source/downloads.html

Sollten Sie ein 64 Bit Windows-Betriebssystem verwenden, so ist es erforderlich, dass Sie die 64-Bit-Version des OpenVPN-Clients herunterladen und installieren.

Übertragen der Zertifikate vom Server

Für den Betrieb des OpenVPN-Clients ist es notwendig, dass das CA-Zertifikat, das Client-Zertifikat und der Client-Key vom OpenVPN-Server übertragen werden.

Übertragen der Zertifkatsdateien

Die benötigten Dateien liegen auf dem OpenVPN-Server in folgendem Pfad:

/etc/openvpn/easy-rsa2/keys
Folgende Dateien müssen aus diesem Verzeichnis auf den Windows-OpenVPN-Client in das Verzeichnis C:\Program Files\OpenVPN\config übertragen werden:

ca.crt
.crt
.key

Bitte ersetzen Sie hierbei jeweils durch den von Ihnen verwendeten Hostnamen des OpenVPN-Client-Systems.

Übertragen der Clientkonfiguration

1. Sie können die Beispielkonfigurationsdatei vom OpenVPN-Server auf Ihren Windows-Client übertragen und dort entsprechend anpassen. Sie finden diese Datei unter folgendem Pfad auf dem OpenVPN-Server: /usr/share/doc/openvpn/examples/sample-config-files/client.conf.

Bitte speichern Sie diese Datei ebenfalls im Verzeichnis C:\Program Files\OpenVPN\config ab. Bitte beachten Sie jedoch, dass die Dateiendung „.ovpn“ lauten muss, da der OpenVPN-Client diese sonst nicht erkennt (Beispieldateiname: client.ovpn)

2. Folgende Zeilen müssten ggf. noch angepasst werden, damit die OpenVPN-Verbindung funktioniert:

remote my-server-1 1194

cert client.crt
key client.key
Diese könnten dann nach der Bearbeitung beispielsweise so aussehen:

remote ip.ip.ip.ip 94

cert windows-client.local.crt
key windows-client.local.key
3. Nun sollte der Ordner C:\Program Files\OpenVPN\config folgende Dateien beinhalten:

ca.crt
.crt
.key
client.ovpn
Starten des Clients

1. Rufen Sie nun über das Windows-Startmenü die OpenVPN GUI auf, sodass im Infobereich der Taskleiste das OpenVPN-Logo erscheint.

2. Klicken Sie auf dieses Logo mit der rechten Maustate und wählen Sie die Schaltfläche „Verbinden“:

3. Sollten Sie ein Zertifikat mit Passwort verwenden, so erscheint nun eine Passwortabfrage, bei der Sie nach dem Passwort gefragt werden. Geben Sie in dieses Eingabefeld das von Ihnen gewählt Passwort ein.

4. Nach der Eingabe des Passworts wird die Verbindung aufgebaut, sodass sich Ihr Windows-System in Ihrem OpenVPN-System befindet.

Einrichtung eines OpenVPN-Clients auf einem Debian- oder einem Ubuntu-System

Installation der verfügbaren Updates sowie der benötigten Pakete

Auch auf dem Client-System ist es wichtig, die aktuellsten Updates sowie das OpenVPN-Paket aus dem Repository zu installieren. Dies können Sie mit den folgenden Befehlen einfach durchführen:

# apt-get update
# apt-get upgrade
# apt-get install openvpn
Beispiel-Konfiguration übernehmen und anpassen

Für das Client-System ist es empfehlenswert, dass Sie die Beispiel-Client-Konfigurationsdatei verwenden, da Sie diese mit nur wenigen Änderungen als Konfigurationsdatei übernehmen können.

1. Mit den folgenden Befehlen können Sie diese Datei in das Verzeichnis /etc/openvpn kopieren:

# cd /etc/openvpn
# cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf .
2. Öffnen Sie nun diese Datei mit einem Texteditor, wie z.B. vim:

# vim client.conf
3. Bitte ersetzen Sie nun den Hostnamen in der folgenden Zeile in der Datei client.conf durch die IP bzw. den Hostnamen Ihrer JiffyBox:

remote j54321.servers.jiffybox.net 1194
Übertragen der Zertifikate vom Server

Da auch der Linux-Client das CA-Zertifikat sowie das Client-Zertifikat benötigt, können Sie diese mittels scp von Ihrem OpenVPN-Server mit den folgenden Befehlen kopieren. Auch hier ist es erforderlich, den Hostnamen bzw. die IP Ihrer JiffyBox entsprechend anzupassen:

# scp root@j12345.servers.jiffybox.net:/etc/openvpn/easy-rsa2/keys/ca.crt .
# scp root@j12345.servers.jiffybox.net:/etc/openvpn/easy-rsa2/keys/client1.domain.tld.crt client.crt
# scp root@j12345.servers.jiffybox.net:/etc/openvpn/easy-rsa2/keys/client1.domain.tld.key client.key
OpenVPN-Service starten

Abschließend können Sie mit folgendem Befehl den OpenVPN-Client starten, sodass sich auch der Linux-Client in Ihrem OpenVPN-Netzwerk befindet:

# service openvpn start