OpenVPN


Server Konfiguration

Client Konfiguration

Client sperren

Anmerkungen


Server Konfiguration

Als VPN Server wird OpenVPN verwendet. Zunächst ist der OpenVPN server zu konfigurieren. Im Verzeichnis:
/usr/share/doc/openvpn/examples
sind Konfigurationsdateien und -verzeichnisse abgelegt, die als Grundlage für die Installation dienen. Folgende Dateien und Ordner sind zu kopieren:
cat /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | 
	gzip -d > /etc/openvpn/server.conf
cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/rsa2
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf 
	/etc/openvpn
Als erstes werden die benötigten Schlüssel bzw. Zertifikate erstellte. Dazu werden im Verzeichnis /etc/openvpn/rsa2 grundsätzliche Informationen in der Datei vars angegeben:
export KEY_COUNTRY="DE"
export KEY_PROVINCE="NRW"
export KEY_CITY="Meine Stadt"
export KEY_ORG="Meine Firma"
export KEY_EMAIL="meine@email.de"
Diese Datei wird anschließend "gesourced":
source vars
Nun können die Schlüssel und Zertifikate erstellt werden, geschieht dies nicht zum ersten mal, sollte ein ./clean-all ausgeführt werden. Begonnen wird mit der Generierung des Server Zertifikats:
./build-ca
Danach werden die Server Schlüssel erstellt, bei "Common Name" kann server angegeben werden:
./build-key-server server
Nun können die Schlüssel für die verschiedenen Clients erstellt werden. Bei der Option "Common Name" kann der Vorschlag (Name des Clients) übernommen werden. Ein aussagekräftiger Name hilft bei der Identifizierung, falls später ein Schlüssel zurückgenommen bzw. gesperrt werden muss.
./build-key client_hannes
./build-key client_john
./build-key client_fritz
Durch die Generierung der Diffie-Hellman-Parameter wird das Erstellen der Zertifikate und Schlüssel abgeschlossen.
./build-dh
Nun folgt die Konfiguration des OpenVPN-Servers in der Datei server.conf. Folgende Optionen schlage ich vor:
# Default Port
port 1194
#Protokoll
proto udp
#Keys
ca /etc/openvpn/rsa2/keys/ca.crt
cert /etc/openvpn/rsa2/keys/server.crt
key /etc/openvpn/rsa2/keys/server.key  # This file should be kept secret
dh /etc/openvpn/rsa2/keys/dh1024.pem
# IP Adresse des OpenVPN Servers
server 192.168.100.0 255.255.255.0
ifconfig-pool-persist ipp.txt
# Eine Route ins lokale Lan erstellen
push "route 192.168.1.0 255.255.255.0"
# DNS Server des Lans übergeben
push "dhcp-option DNS 192.168.1.99"
# WINS Server des Lans übergeben
push "dhcp-option WINS 192.168.1.99"
# Lokale Domain des Lans übergeben
push "dhcp-option DOMAIN local-lan"
# Verifizierung der Zertifikate
crl-verify /etc/openvpn/rsa2/keys/crl.pem
Nach Abschluss der Serverkonfiguration kann dieser neu gestartet werden:
/etc/init.d/openvpn restart
Damit das lokale Lan erreichbar ist, muss auf dem vpn Server das Port-Forwarding eingeschaltet werden:
sysctl -w net/ipv4/ip_forward=1
Dauerhaft kann dies durch den Eintrag:
net.ipv4.ip_forward=1
in der Datei /etc/sysctl.conf erreicht werden. Ist der OpenVPN Server nicht gleichzeitig der Gateway für das lokale Netzwerk, muss auf dem Gateway noch eine Route eingetragen werden, durch die das VPN erreichbar ist:
route add -net 192.168.100.0 netmask 255.255.255.0 gw IP_DES_OPENVPN_SERVER 

Client Konfiguration

Unter Microsoft ist der OpenVPN Client zu installieren. Anschließend werden die Client Zertifikate und Schlüssel in den Ordner OPENVPN_INSTALL_DIR\config kopiert. Für den Client client_hannes muss der config Ordner folgende Dateien enthalten:
client_hannes.ovpn
client_hannes.crt
client_hannes.key
ca.crt
Die Datei client_hannes.ovpn entspricht der Datei client.conf aus dem example Ordner des OpenVPN Servers. Die Variablen:
remote meinServer.dyndns.org 1194
ca ca.crt
cert client_hannes.crt
key client_hannes.key
# Windows Vista Stuff, works also for windows xp
route-method exe
route-delay 2
sind entsprechend den Zertifikatsnamen und dem Servernamen anzupassen. Außerdem sollten die beiden route- Optionen für Windows Vista hinzugefügt werden, sie stören auch den Betrieb mit Windows XP nicht.

Client sperren

Um einen Client zu sperren bzw. das entsprechende Zertifikat zu annullieren ist in das Verzeichnis /etc/openvpn/rsa2 zu wechseln und folgende Befehle auszuführen:
source vars
./revoke-full client_name

Anmerkungen

Alle *.key Dateien sind geheim zu halten, sie sollten also nicht über unsichere Kanäle transferiert werden. Besonderes Augenmerk gilt dabei dem Schlüssel ca.key, er wird zum signieren der anderen Zertifikate verwendet und sollte nicht in andere Hände geraten.