seeseekey.net - Invictus Deus Ex Machina

Wenn man einen OpenVPN-Server in der Standardkonfiguration betreibt, wird man sich unter Umständen wundern, an welcher Stelle ist das OpenVPN Log zu finden ist. Das liegt daran das der OpenVPN-Server das ganze in /var/log/syslog speichert. Möchte man nun die OpenVPN betreffenden Punkte filtern so sollte man auf der Konsole folgendes eingeben:

grep VPN /var/log/syslog

Alternativ kann man auch die OpenVPN-Konfiguration anpassen. Dazu muss die Datei /etc/openvpn/server.conf bearbeitet werden. Dort gibt es eine Option log-append, welche wie folgt angepasst wird:

log-append /var/log/openvpn.log

Nach einem Neustart des Service mittels:

service openvpn restart

wird die neu eingestellte Logdatei genutzt.

iOS bietet von Haus aus eine Reihe von Möglichkeiten für VPN Verbindungen. Leider sind Verbindungen per OpenVPN nicht darunter. Allerdings ist dies kein Beinbruch, da es eine entsprechende App im Appstore gibt. Die benötigten Dateien (Zertifikate und Konfiguration) sind dabei die selben wie bei der Mac OS X Nutzung. Nachdem die Dateien per iTunes über die Dateifreigabe importiert worden sind, können sie in der OpenVPN App importiert werden. Nachdem Import sieht man die Verbindung und den Schriftzug “Unconnected”. Mit einem Druck auf den Radiobutton wird eine Verbindung hergestellt.

Das VPN Logo in der oberen Leiste zeigt den Status an

Das VPN Logo in der oberen Leiste zeigt den Status an

An dieser Stelle fragt iOS ob man der Anwendung die Rechte zum Herstellen einer VPN Verbindung geben möchte. Dies sollte natürlich bejaht werden. Oben in der Menüleiste gibt es nun ein VPN Logo, welches einen darauf hinweist das die Verbindung steht und genutzt werden kann.

Wie man OpenVPN unter Windows betreibt, hatte ich vor einigen Jahren beschrieben. Auch unter Mac OS X lässt sich das ganze einrichten. Als grafischer Client bietet sich der quelloffende und unter GPLv2 stehende Client Tunnelblick an, dessen offizielle Seite auf Google Code zu finden ist. Nach der Installation der aktuellen (stabilen) Version 3.3, kann Tunnelblick auch gleich ausgeführt werden. Für die Konfiguration des Clients benötigt man eine Datei mit den benötigten Parametern, welche die Endung “ovpn” oder “conf” trägt. Tunnelblick kann dabei bei Bedarf eine Beispielkonfiguration anlegen. In dieser Konfigurationsdatei werden nur folgende Werte geändert:

remote vpn.example.org 1194

# SSL/TLS parms.
# See the server config file for more
# description.  It's best to use
# a separate .crt/.key file pair
# for each client.  A single ca
# file can be used for all clients.
ca ca.crt
cert client.crt
key client.key

Die ovpn Datei wird mit der ca.crt Datei und der client.crt sowie der client.key Datei (beide erhält man vom VPN Anbieter) in einen Ordner gepackt und dieser Ordner mit der Erweiterung “.tblk” versehen. Anschließend wie der Ordner im Finder geöffnet und somit der Tunnelblick-Konfiguration hinzugefügt. Danach kann die Verbindung im Kontextmenü aktiviert werden. Nach einigen Sekunden ist die Initialisierung beendet und die VPN Verbindung kann genutzt werden.

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="me@myhost.mydomain"
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="webmaster@example.org"
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

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