OpenVPN auf einem Ubuntu Server aufsetzen

Wenn man sich einem unsicheren Netz bewegt, z.B. in einem freien WLAN empfielt es sich ein VPN zu nutzen. Dafür gibt es die unterschiedlichsten VPN-Dienste, welche dies gegen einen monatlichen Obolus anbieten. Besitzt man einen eigenen Server, so kann man sich mittels OpenVPN einen solchen Dienst selber aufsetzen. Im ersten Schritt wird OpenVPN installiert:

apt-get install openvpn

Aus den Beispieldateien wird das Skript „easy-rsa2“ zum Erstellen der Zertifikate an den entsprechenden Ort kopiert:

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

Für die Erzeugung der Zertifikate müssen einige Parameter angepasst werden. Dazu wird die entsprechende Datei im Editor geöffnet:

cd /etc/openvpn/easy-rsa2
nano vars

Der Wert Keysize „KEY_SIZE“ wird von 1024 auf 2048 erhöht. Am Ende der Datei befinden sich dann folgende Einträge:

export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL=""
export KEY_CN=changeme
export KEY_NAME=changeme
export KEY_OU=changeme
export PKCS11_MODULE_PATH=changeme
export PKCS11_PIN=1234

Nach der Konfiguration sollte das ganze dann in etwa so aussehen:

export KEY_COUNTRY="DE"
export KEY_PROVINCE="MV"
export KEY_CITY="Neubrandenburg"
export KEY_ORG="Example Inc."
export KEY_EMAIL=""
export KEY_CN="vpn.example.org"
export KEY_NAME="Example VPN"
export KEY_OU="VPN"
#export PKCS11_MODULE_PATH=changeme
#export PKCS11_PIN=1234

Die „vars“-Datei wird den Umgebungsvariablen hinzugefügt und anschließend das Masterzertifikat erstellt:

source ./vars
mkdir /etc/openvpn/easy-rsa2/keys
sudo -E ./clean-all
sudo -E ./build-ca

Damit ist die Certificaty Authority (CA) erstellt. Nun geht es an die Erstellung der Schlüssel für den Server:

sudo -E ./build-key-server server

Beim Common Name, gibt man die Domain ein unter welcher der VPN Server später erreichbar sein soll (z.B. vpn.example.org). Nach der Erstellung wird man im „keys“ Verzeichnis die Dateien „server.crt“, „server.csr“ und „server.key“ finden. Für den Diffie-Hellman Schlüsselaustausch müssen entsprechende Paramater erzeugt werden:

sudo -E ./build-dh

Nun fehlen nur noch die Zertifikate für die entsprechenden Nutzer. Ein Nutzer wird dabei mittels:

sudo -E ./build-key nutzerOderClientName

erstellt. Damit sind alle benötigten Zertifikate und Schlüssel erstellt, so das nun die restliche Konfiguration des Servers vorgenommen werden kann. Als Basis wird dabei die mitgelieferte Beispieldatei genutzt:

sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
sudo gunzip /etc/openvpn/server.conf.gz

Nach dem Kopiervorgang wird die Datei „/etc/openvpn/server.conf“ mittels „nano“ geöffnet. Folgende Einstellungen werden dabei angepasst werden:

ca ca.crt -> ca ./easy-rsa2/keys/ca.crt
cert server.crt -> cert ./easy-rsa2/keys/server.crt
key server.key -> key ./easy-rsa2/keys/server.key 

dh 1024.pem -> dh ./easy-rsa2/keys/dh2048.pem

;user nobody -> user nobody
;group nogroup -> group nogroup

;push "redirect-gateway def1 bypass-dhcp" -> push "redirect-gateway def1 bypass-dhcp"

Damit jegliche Kommunikaton vom Client über den Server läuft, muss die Datei „/etc/rc.local“ auf dem Server um einige Einträge ergänzt werden:

iptables -t nat -F POSTROUTING
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source IP_DES_SERVERS

Nun ist der Server konfiguriert und kann mittels:

reboot

neugestartet werden.

Weitere Informationen gibt es unter:
http://wiki.ubuntuusers.de/OpenVPN
https://de.wikipedia.org/wiki/OpenVPN

OpenVPN Verbindung aufbauen

In dieser Anleitung geht es darum auf zwei Windows Systemen ein VPN aufzubauen. Dabei wird hier mit OpenVPN gearbeitet und sogenanntes Bridging benutzt. Das hat den Vorteil das der Clientrechner sich so verhält als wäre er direkt in dem entsprechenden LAN.

Im ersten Schritt installieren wir OpenVPN GUI (http://openvpn.se) auf dem Server (in diesem Fall ein Windows Server 2003 / 64 Bit Rechner) sowie auf dem Client (Windows XP / 32 Bit). Nachdem dies geschehen gehen wir auf einen der Rechner in das OpenVPN Verzeichnis und dort in den easy_rsa Ordner.

Dort öffnen wir eine Konsole und führen die Datei init-config.bat aus. Anschließend bearbeitet man die vars.bat und ändert da die Werte dementsprechend (KEY_SIZE, KEY_COUNTRY usw.) und führt dann in der gleichen Konsole die vars.bat sowie anschließend die clean-all.bat aus.

Damit ist das ganze Verzeichnis erst einmal sauber. Nun bauen wir den Schlüssel für die Certificate-Authority. Dies geschieht mittels der Ausführung der Dateien build-ca.bat in der gleichen Konsole. Danach wird noch die Datei build-dh.bat ausgeführt. Der darauf folgende Prozess kann einige Minuten dauern.

Nun müssen noch die Schlüsseldateien für den Server und den Client angelegt werden. Dies geschieht mittels build-key-server.bat [SERVERNAME] z.B. build-key-server.bat Lethery. Ist das geschafft wird mittels build-key.bat [CLIENTNAME] der Schlüssel für den Client generiert. Damit ist die Schlüsselgeneration abgeschlossen.

Nun werden die erzeugten Dateien separiert. Für den Server sind folgende Dateien nötig:

– ca.crt
– server.crt
– server.key
– dh1024.pem

Der Client benötigt diese Dateien:

– ca.crt
– client.crt
– client.key

Die Dateien kommen dabei in den config Ordner der OpenVPN Installation. Nun müssen die Konfigurationsdateien angelegt werden. Für den Client sieht das ganze so aus:

client

remote myserver.dyndns.com 1194
proto udp
dev tap

ca ca.crt
cert client.crt
key client.key
ns-cert-type server

verb 3
mute 50

Hier muss im Ideallfall nur der Servername hinter remote angepasst werden. Die Datei für den Server ist dabei etwas umfangreicher:

server-bridge 192.168.4.5 255.255.0.0 192.168.1.100 192.168.1.200

port 1194
proto udp
dev tap

ca ca.crt
cert server.crt
key server.key
dh dh1024.pem

client-to-client

ping-timer-rem
keepalive 20 180

verb 3
mute 50

Beim Server wird in der ersten Zeile das Standardgateway, das Subnetz, sowie die Start- und End IP Adresse angegeben. Die Start- und Endadressen dienen dazu dem OpenVPN Server zu sagen welche Adressen er für VPN Clients benutzen darf.

Danach kann man in der OpenVPN GUI auf Connect drücken (erst auf dem Server, dann auf dem Client) und wird dann zu seinem Netz verbunden. Sollte die Verbindung nicht funktionieren so muss am Router ein Portforwarding eingerichtet werden. Dazu muss Port 1194/UDP auf die entsprechende IP des OpenVPN Servers geforwardet werden.

Weitere Informationen gibt es unter:
http://wiki.openvpn.eu/index.php/Config_ServerNET_Bridging