OVPN-Linux

Aus OpenVPN Wiki

Wechseln zu: Navigation, Suche

Anleitung

OpenVPN-Tunnel Server / Client

Hier ist eine Anleitung wie man ein Tunnel zwischen Server ( hier ein Ubuntu-Server ) [1] und einen Client ( hier Windows XP Professional SP2 ) aufbaut.

Inhaltsverzeichnis

Installation

Installation des OpenVPN-Server unter Ubuntu

Zuerst muss auf dem Server Open-VPN [2] und Open-SSL [3] installiert werden. Das geht unter Ubuntu am besten mit apt-get [4] Der Befehl [5] hierzu lautet:

 apt-get install openvpn openssl

Manuelle Installation

Falls eine Distribution Open-VPN nicht mitbringt geht auch eine manuelle Installation.

OpenVPN Sourcedateien als Archiv runterladen [6] und das Archiv entpacken

 ~: tar zxf openvpn-2.0.9.tar.gz
 ~: cd openvpn-2.0.9
 ~openvpn-2.0.9:

Für nachfolgende Befehle sollt man als "root" am Rechner angemeldet sein ( unbedingt erforderlich für den Befehl "make install" )

 ~openvpn-2.0.9:./configure
 ~openvpn-2.0.9:make
 ~openvpn-2.0.9:make install

Installation des Client unter Windows

Zuerst müssen wir den Client "OpenVPN-2.0.7-gui-1.0.3-install.exe" [6] runterladen. Wenn der Download beendet ist, kann der Client gleich auf dem Windows-PC installiert werden.


Nun geht es an das Eingemachte. Das heisst es geht jetzt erstmal an das Erstellen der Zeritfikate und der Configdateien für den Linux-Server [1] und für den Client( Windows XP-Professional SP2 ) Ich habe mir erspart, für Windows entsprechende Links zur Verfügung zu stellen, da ich mal davon ausgehe das Mircosoft ein Begriff sein sollte.

Für unser Vorhaben brauchen wir aber noch folgende Programme:

Putty [7] ist ein Programm um bei einem Linux Server auf die Shell per SSH zugreifen zu können.
WinSCP [8] ist ein Programm um Dateien auf entfernte Rechner zu kopieren.

Putty[7] brauchen wir um einen Zugriff auf die Shell des Server( Linux-Ubuntu ) [1] zu haben, damit wir die Zertifikate erstellen können.
WinSCP [8]wird benötigt damit wir die Zertifikate auch auf unseren Client (Windows XP-Professional SP2) kopieren können. Genauso wie wir später die Configdatei für den Server, die wir in Windows erstellt haben auf den Server zu kopieren.


Erstellen von Zertifikaten auf dem Server

Wir melden uns zuerst mit Putty [7] an unseren Server an. 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.

So nun geht’s los:

Erst wechseln wir in das ssl Verzeichniss

cd /etc/ssl/

Der übersicht halber erstellen wir ein Unterverzeichnis "Zertifikate" wo wir später unsere ganzen erstellten Zertifikate ablegen.

mkdir Zertifikate

Jetzt erstellen wir die Schlüssel für unser CA ( Certifikate Authority )

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

openssl: startet die Prozedur
genrsa: generiert die Schlüssel
-aes256: ist der Verschlüsselungsalgorithmus
-out: benennt oder erstellt die Ausgabedatei

Beim ausführen werden wir aufgefordert ein Passwort einzugeben (Enter Pass Phrase for vpn-cakey.pem: ). Diese wird später gebraucht um unsere Zertifikate zu verifizieren.

Danach erstellen wir unser CA

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

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 müssen noch die Clientzertifikate erstellt werden. Der Serverschlüssel wird als erstes von den Schlüsselpaaren erstellt

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

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 (1024 sollten aber auch ausreichen aber 2048 ist besser)
-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

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 ( im Prinzip daselbe wie beim Server )

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 [9] erzeugen.

openssl dhparam -out dh2048.pem 2048

Da das erzeugen des Diffie Hellman Parameter sehr lange dauert reichen hier auch 1024 für den normalen gebrauch völlig aus. Muss dann aber in der Config von 2048 auf 1024 geändert werden.

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)

# 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

Weitere Befehle kann man sich auch noch hier [10] anschauen.

Bitte die Client-Config nicht blind kopieren. Es muss noch die "Serveradresse" durch die IP von deinem Server ersetzt werden.

Client-Config (Client.ovpn)

#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
remote Serveradresse 1194

# Auflösen des Hostnames des Servers (wegen nicht permanent mit dem Internet verbundenen Rechnern)
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

Weitere Befehle kann man sich auch noch hier [10] anschauen.
So nun folgende Dateien mit WinSCP [8] auf unseren Clientrechner unter "C:\Programme\OpenVPN\config" kopieren

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 WinSCP [8] auf den Server unter

/etc/openvpn/
kopieren.

Um spätere Warnungen zu vermeiden ändern wir noch die Rechte der "server_key.pem" ab:

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

Serverconfig testen

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

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.

So dies ist eine kleine Anleitung wie ich meine erste VPN-Verbindung mit OpenVPN aufgebaut habe.

Danksagung

Mein besonderer Dank gilt "Daniel und Manni", die mir ihre Server zum ausprobieren zur Verfügung gestellt haben.
Und nochmals Daniel der mich bei Problemen erfolgreich Unterstützt hat.

Links

[1] http://www.ubuntuusers.de/
[2] http://de.wikipedia.org/wiki/Openvpn
[3] http://de.wikipedia.org/wiki/OpenSSL
[4] http://de.wikipedia.org/wiki/Apt-get
[5] Distribution, Version(en), Installationskommando (als root)

Fedora Core (http://fedoraproject.org)  >=4          yum install openvpn
Debian (http://www.debian.org) >=3.1 apt-get install openvpn
FreeBSD (http://www.freebsd.org) >=6.0 pkg_add -r openvpn
Gentoo (http://www.gentoo.org) n/a emerge openvpn
OpenBSD (http://www.openbsd.org) 4.1 pkg_add -r openvpn
Suse (http://www.opensuse.org) >=9.3 yast -i openvpn
Ubuntu (http://ubuntulinux.org) >=5.10 apt-get install openvpn

[6] http://openvpn.net/download.html
[7] http://de.wikipedia.org/wiki/PuTTY
[8] http://de.wikipedia.org/wiki/WinSCP
[9] http://de.wikipedia.org/wiki/Diffie-Hellman-Schl%C3%BCsselaustausch
[10]http://www.pronix.de/pronix-937.html

Persönliche Werkzeuge