Inhaltsverzeichnis

VPN Server Dokumentation

Grundsaetzliches

Dieses Dokumentation betrifft den Aufbau von lokalen Server Client VPN Netzen. Hier wird beschrieben wie man ein Server Client VPN Netz Anhand einer PKI und zertifikatsbasierender Authentifizierung realisiert.

Netzwerkeinstellungen

Netzwerk

Wie in der Dokumentation zu den privaten VPN Tunneln festgelegt ist, ist das Netz 10.x.12.0/24 fuer diese Aufgabe zu verwenden. Wobei hier zu beachten ist, dass das Netz 10.x.12.0/25 fuer dynamische Adressvergabe, und das Netz 10.x.12.128/25 fuer feste Adressvergabe vorgesehen ist.

Ports

Als VPN Port wird der Port 8800 verwendet, da dieser dem Portvergabeverfahren nach der Dokumentation zu den privaten VPN Tunneln entspricht, sich aber nicht mit moeglichen anderen Netzen ueberschneidet. Der VPN Traffic wird ueber den UDP Port 8800 abgehandelt, waehrend auf dem TCP Port 8800 die Management Konsole des VPN Server horcht.

PKI Konfigration mit easy-rsa

Die Scripte fuer easy-rsa befinden sich meist in der Dokumentation des OpenVPN Paketes.

erstellen einer Root CA

Dies wird durch die Konfigurationsdatei vars und den Scripten clean-all und build-ca ermoeglicht. Zuerst muss die Datei vars an die Umgebung angepasst werden. Am Ende der Datei befinden sich einige Variablen, welche gesetzt werden muessen.

Hier ein Beispiel dieser Variablen:

export KEY_COUNTRY="AT"
export KEY_PROVINCE="Upper Austria"
export KEY_CITY="Obernberg am Inn"
export KEY_ORG="blue-network"
export KEY_EMAIL="f_zavatzki@blue-network.org"

Nachdem diese Variablen angepasst wurden koennen folgende Scripte ausgefuehrt werden:

. ./vars
./clean-all
./build-ca

Bei build-ca wird nochmals nach den CN Parametern fuer das Root Zertifikat gefragt. Dies erzeugt dann eine ca.key, welcher der private Schluessel der CA ist. Dieser sollte gut geschuetzt werden. Weiters wird eine ca.crt erzeugt, welche das oeffentliche Root Zertifkat ist. Dieses Zertifkat muss am Server und an allen Clients gespeichert sein.

erstellen des Server Zertifikates

Dies geht einfach ueber den Aufruf des Scriptes ./build-key-server server Bei den abschliessend Fragen „Sign the certificate? [y/n]“ und „1 out of 1 certificate requests certified, commit? [y/n]“ sollte jeweils mit Ja geantwortet werden. Nun bekommt man auch hier zwei Dateien. Einmal den privaten Schluessel des Server (server.key) und einmal das oeffentliche Zertifikat (server.crt).

erstellen von Client Zertifikaten

Auch hier muss einfach das Script ./build-key clientx aufgerufen werden, wobei clientx der Name des jeweiligen Clients ist. Auch hier werden zwei Dateien generiert. Wieder einmal der private Schluessel (clientx.key) und das oeffentliche Zertifikat (clientx.crt). Beides muss am Client gespeicert werden.

Server Konfiguration

Verzeichnisstruktur

Folgende Verzeichnisstrukur ist ein Vorschlag, welcher nur die gesamte Konfiguration, auch in Zusammenhang mit den privaten VPN Tunnel, uebersichtlicher machen sollte.

Konfigurationsdateien

Folgende Dateien werden in $prefix/server abgelegt:

Der Diffi Hellmann Schluessel wird ueber folgendes Kommando erstellt:

openssl dhparam -out dh1024.pem 1024

Der TLS Schluessel wird ueber openvpn mit dem Kommando:

openvpn --genkey --secret tlsauth.key

Beispiel Konfiguration

Diese Konfiguration beschreibt den Server Teil fuer das Netz 10.2.12.0/24 in Verbindung mit der PKI example.

openvpn-server.conf
proto udp
port 8800
dev tun1
ca $prefix/x509.crt/example-ca.crt
cert $prefix/x509.crt/example.crt
key $prefix/x509.crt/example.key
dh $prefix/server/dh1024.pem
tls-auth $prefix/server/tlsauth.key

server 10.2.12.0 255.255.255.128
ifconfig-pool-persist $prefix/server/ipp.txt
push "route 10.2.0.0 255.255.0.0"
client-config-dir $prefix/server/ccd
route 10.2.12.128 255.255.255.252

keepalive 10 60
comp-lzo
max-clients 10

user nobody
group nogroup

persist-key
persist-tun
daemon
management localhost 8800

Und hier ein Beispiel fuer eine spezielle Konfiguration unter $prefix/server/ccd/ benannt nach dem CN Name des Clients (in diesem Fall client-nb01):

Dem Client wird in diesem Beispiel die IP 10.2.12.129 zugewiesen.

ifconfig-push 10.2.12.129 10.2.12.130
push "dhcp-option DNS 10.2.10.11"

Gültige statische IP-Adresspaare

Im folgenden eine Liste mit allen gültigen statischen Client-/Server IP-Adresspaaren:

Client Konfiguration

Notwendige Dateien

Am Client sind folgende Dateien notwendig:

Beispiel Konfiguration

Hier das entsprechende Beispiel des Clients:

openvpn-client.conf
client
remote meine.server.adresse.tld 8800

dev tun0
proto udp

resolv-retry infinite
nobind
user nobody
group nogroup

persist-key
persist-tun
ca $prefix/ca.crt
cert $prefix/client.crt
key $prefix/client.key
ns-cert-type server
tls-auth $prefix/tlsauth.ky
comp-lzo
daemon