Tag Archives: openvpn

OpenVPN HowTo

Jeder der sich auf seinem Server einwählen möchte, egal ob aus Sicherheitsgründen um den SSH Port zu schließen oder um die MySQL DB mit Access bearbeiten findet hier ein HowTo für Debian Etch das genau dies alles ermöglicht.

1. OpenVPN Server installieren

Hier gehen wir ganz den einfachen Debian weg:

1
2
# apt-get update
# apt-get install openvpn openssl

2. Erstellen der Zertifikate

Bevor wir mit der Schlüsselerstellung anfangen, noch ein Hinweis. Es wird bei der Erstellung der Schlüssel auch eine Abfrage gestartet, wo Land, Stadt, Benutzer E-Mail usw. eingegeben werden müssen. Dafür kann man immer die gleiche Bezeichnung nehmen mit einer Ausnahme

Der CommonName muss immer verschieden sein.
Wechseln in das SSL Verzeichniss

1
# cd /etc/ssl/

Erstellen eines Unterverzeichniss

1
# mkdir Zertifikate

Jetzt erstellen wird die Schlüssel für das CA (Certifikate Authority)

Wir benützen dazu die OpenSSL Tools

1
# openssl genrsa -aes256 -out private/vpn-cakey.pem 2048

Was macht der Befehl:
openssl: startet die Prozedur genrsa: generiert die Schlüssel
-aes256: ist der Verschlüsselungsalgorithmus
-out: erstellt die Ausgabedatei

Beim ausführen muss ein Passwort eingegeben werden:

(Enter Pass Phrase for vpn-cakey.pem: )

Diese wird später gebraucht um unsere Zertifikate zu verifizieren.

Danach erstellen wir unser CA

1
# openssl req -new -x509 -days 365 -key private/vpn-cakey.pem -out vpn-ca.pem -set_serial 1

Was macht der Befehl:

req: erstellt eine Anfrage ( Request )
-new: sagt das wir eine neue Anfrage schicken
-x509: verwendeter Standart für das CA
-days: solange ist das Zertifikat gültig
-key: der verwendete Masterschlüssel zum erstellen des CA
-set_serial: die Seriennummer die hochgezählt wird.

Jetzt erstellen wir die Clientzertifikate. Der Serverschlüssel wird als erstes von den Schlüsselpaaren erstellt

1
# touch index.txt && echo "01" > serial

index.txt: damit man später die Zertifikate sperren kann echo „01“ > serial: um eine 1 in die Serialdatei zu schreiben

Jetzt erstellen wir die Zertifikatanfrage und den Schlüssel
(alles in eine Zeile)

1
2
# openssl req -new -newkey rsa:2048 -out Zertifikate/server_csr.pem
-nodes -keyout private/server_key.pem -days 365

newkey: erstellt einen neuen Schlüsselbund
rsa:2048: ist die Schlüssellänge
-nodes: es wird kein Passwort auf das Zertifikt gelegt (sollte aber bei den Clientzertifikaten nicht verwendet werden)
-keyout: Ausgabe des Schlüssel in die Datei server_csr.pem: Zertifikatanfrage
So jetzt der Schlüssel und das signierte Zertifikat
(alles in eine Zeile)

1
2
# openssl x509 -req -in Zertifikate/server_csr.pem -out Zertifikate/server_cert.pem
-CA vpn-ca.pem -CAkey private/vpn-cakey.pem  -CAserial serial -days 365

-in: sagt uns welche Zertifikatanfrage verarbeitet werden soll
-out: Zertifikatname
-CA: für das Unterzeichnen des Zertifikates
-Cakey: Masterschlüssel für das erstellen des Zertifikates
Nun die Clients (daselbe wie beim Server und wieder alles in eine Zeile)

1
2
# openssl req -new -newkey rsa:2048 -out Zertifikate/Client1_csr.pem -keyout private/Client1_key.pem -days 365
# openssl x509 -req -in Zertifikate/Client1_csr.pem -out Zertifikate/Client1_cert.pem -CA vpn-ca.pem -CAkey private/vpn-cakey.pem -CAserial serial -days 365

Zum Schluss noch den Diffie Hellman Parameter erzeugen.

1
# openssl dhparam -out dh2048.pem 2048

Das erzeugen des Diffie Hellman Parameter dauert sehr lange.

Erstellen der Config-Dateien

Nun müssen wir die Configdateien für den Server und für den Client erstellen. Dieses habe ich auf meinen Windowsrechner mit dem Texteditor gemacht. Beim speichern ist darauf zu achten, dass die Config für den Server unter „Server.ovpn“ und die Config für den Windows Client unter „Client.ovpn“ gespeichert werden. Bei Speicher darauf achten das die endung „.ovpn“ bleibt.

Server-Config (Server.ovpn)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# Port Standardport 1194
port 1194
 
# Die Revoke Liste überprüfen #crl-verify /etc/ssl/crl.pem
# TCP oder UDP? proto udp mode server tls-server dev tap
 
# Unsere Server IP
ifconfig 192.168.100.1 255.255.255.0
ifconfig-pool 192.168.100.2 192.168.100.9
 
# Server IP Adresse (Adressbereich. in dem Fall alles von 10.10.10.0)
#server
#Wo liegen unsere Zertifikate
ca /etc/ssl/vpn-ca.pem cert /etc/ssl/Zertifikate/server_cert.pem key /etc/ssl/private/server_key.pem
 
# Diffie-Hellmann Parameter
dh /etc/ssl/dh2048.pem
 
#Die Selbe IP in der nächsten Sitzung vergeben
#ifconfig-pool-persist ipp.txt
#IPs in den IP Tables eintragen,
#DNS neu vergeben und über Den Server das Routing machen,
#dass man z.B. über den Tunnel auf ein
# lokales Intranet zuzugreifen
#push "route 10.0.0.0 255.0.0.0"
#push "dhcp-option DNS 192.168.1.xyz"
#push "redirect-gateway"
#push "route 0.0.0.0 0.0.0.0"
 
#Authentifizierungsmethode auth SHA1
 
#Verschlüsselungs Algorithmus cipher aes-256-cbc
 
#Benutze Komprimierung comp-lzo
 
#Setzt die Rechte user nobody group nogroup
 
#Wird wegen user nobody/group nobody benötigt. persist-key persist-tun
 
#Logging 0, (Zum testen:5) verb 7

Client-Config (Client.ovpn)

Die Client-Config nicht blind kopieren. Es muss noch die „Serveradresse“ durch die IP vom Server ersetzt werden!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#Festlegen als was fungiert wird
tls-client
pull
 
# Methode festlegen tun oder tap dev tap
# Protokoll auswaehlen udp oder tcp proto udp
# IP/Name und Port des Servers (bitte ändern) remote 123.123.123.123 1194
# Auflösen des Hostnames des Servers resolv-retry infinite
# Localen Port festlegen oder freigeben nobind
# Verbindung immer gleich halten persist-key persist-tun
#zu verwendende Zertifikate und Schlüssel ca C:\\Programme\\Openvpn\\config\\vpn-ca.pem cert C:\\Programme\\Openvpn\\config\\Client1_cert.pem key C:\\Programme\\Openvpn\\config\\Client1_key.pem
 
# Verschlüsselung cipher AES-256-CBC
 
# Komprimiernug comp-lzo
 
# Authentifizierungsmethode auth SHA1
 
# "Gesprächigkeit" des Tunnels verb 3
 
# Silence repeating messages mute 20

So nun folgende Dateien mit z.B. WinSCP auf den Clientrechner unter „C:\Prorgamme\OpenVPN\config“ kopieren

1
2
3
4
vpn-ca.pem
client1_cert.pem
client1_key.pem
Client.ovpn

Wir sind fast fertig mit der Installation. Nur noch unsere erstellte „Server.ovpn“ mit z.B WinSCP auf den Server unter

1
/etc/openvpn/

kopieren. Um spätere Warnungen zu vermeiden ändern wir noch die Rechte der „server_key.pem“ ab

1
# chmod 600 /etc/ssl/private/server_key.pem

Serverconfig testen

Bevor wir den Tunnel starten, sollten wir die Config mal testen

1
openvpn --config /etc/openvpn/Server.ovpn

Hier sollten keine Fehler auftauchen.

Tunnel starten

Wenn wir beim Configtest keine Fehler erhalten haben können wir das ganze jetzt starten:

openvpn /etc/openvpn/Server.ovpn

Sobald der Server läuft können wir versuchen, uns mit dem Client zu verbinden: Am Client auf Start -> Programme -> OpenVPN -> OpenVPN GUI In der Taskleiste erscheint dann ein Symbol mit 2 roten Bildschirmen und einer Weltkugel. Dieses Symbol klicken wir mit der „rechten Maustaste“ an Dann gehen wir im Auswahlfeld auf „Verbinden“, geben unser Passwort ein und klicken auf „Ok“. Nun wird eine Verbindung zum Server aufgebaut. Dies sieht man daran, das das VPN-Symbol von rot auf gelb wechselt. Ist der Verbindungsaufbau abgeschlossen erscheint das VPN-Symbol in grün. Und „Hurra“ wir haben einen VPN-Tunnel zu unserem Server aufgebaut.