OpenVPN

Aus ConfigWiki
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

OpenVPN

OpenVPN ist eine auf SSL-Verschlüsselung basierende Variante eines virtuellen privaten Netzwerkes. In einigen Linuxdistributionen sind OpenVPN-Pakete bereits enthalten und können dort über die Paketverwaltung installiert werden. Für alle anderen ist die Software erhältlich unter http://openvpn.net/

Firewall

OpenVPN benutzt den Port 5000/UDP. Dieser muß dementsprechend für ein- und ausgehende Verbindungen in der Firewall freigegeben werden.

Authentifizierung

Pre-shared Key

PSK ist ein statischer Schlüssel, der auf beiden Seiten identisch ist und vor der Benutzung auf sicherem Weg auszutauschen ist. Diese Variante ist leicht zu konfigurieren aber nicht besonders sicher, da der Schlüssel auf dem Client sicher aufbewahrt werden muß.

Benutzername/Kennwort

Anfälliger gegen Man-in-the-middle-Attacken. Benutzer könnten zu unsichere Passwörter verwenden oder sichere Passwörter an unsicherer Stelle notiert werden.

Zertifikate

X.509 Zertifikate sind die sicherste Variante der Authentifizierung und können dazu auch noch auf einer SmartCard abgelegt werden. Hierfür können käufliche, wie auch selbst signierte Zertifikate eingesetzt werden. Dazu wird eine eigene Certificate Authority benötigt. Anleitung zum erstellen einer eigenen hierachischen CA .

Backends

OpenVPN bietet ein PAM-Plugin. Damit können wiederum verschiedene Dienste wie z.B. RADIUS oder LDAP zur Authentifizierung genutzt werden.

Konfiguration

OpenVPN liefert gut kommentierte Beispielkonfigurationen mit.

Server

  • /etc/openvpn/server.conf
proto udp
dev tun

# Zertifikate entstammen einer einer eigenen hierachischen CA 
# siehe  Anleitung zum erstellen einer eigenen hierachischen CA .
ca /etc/ssl/my_ca/services/openvpn/openvpn_complete.crt
cert /etc/ssl/my_ca/services/openvpn/openvpnserver_1/openvpnserver_1_openvpn.crt
key /etc/ssl/my_ca/services/openvpn/openvpnserver_1/openvpnserver_1_openvpn.key
dh /etc/ssl/my_ca/dh1024.pem

# Ein B-Klasse Netz für den Server
server 10.8.0.0 255.255.0.0

ifconfig-pool-persist ipp.txt
duplicate-cn
keepalive 10 120
comp-lzo
persist-key
persist-tun

# Logging
log         /var/log/openvpn.log
log-append  /var/log/openvpn.log
verb 3

# Dies ist nötig wenn der Server eine Route ins Netz des Clients kennen soll.
# Beim Start des Servers werden die route-Einträge in die Kernel-Routing-Tabelle geschrieben.
# Es muss noch eine Datei mit dem Namen des Clients im client-config-dir angelegt werden, die
# die Verknüpfung der Route mit dem Client herstellt (iroute (unten))
client-config-dir /etc/openvpn/ccd
route 192.168.10.0 255.255.255.0
  • Konf.-dateien im "client-config-dir" z.B. /etc/openvpn/ccd/client_1
  • Der Dateiname entspricht dem Clent - Namen, der aus dem CommonName des Client Zertifikates extrahiert wird.
# ifconfig-push weißt den Clients eine virtuelle IP zu.
# Die erste IP-Adresse ist die Adresse virtuellen Clients an, die 2. IP die des virtuellen Server. 
# Sollten Windows Clients/TAP-Win32 Treiber verwendet werden, dann müssen diese aus einem XXX.XXX.XXX.XXX/30 Subnetz stammen.
# ... bewirkt, dass der Client immer die selbe IP erhält.
ifconfig-push 10.0.1.1 10.0.1.2

# teilt dem Server bei bestehender Verbindung die Verknüpfung dieses Clients zum entsprechendem "route" - Eintrag
# in ser "/etc/openvpn/server.conf" mit.
iroute 192.168.10.0 255.255.255.0
  • es sollte noch eine leer /etc/openvpn/ipp.txt existieren

Client

  • client.conf
client
dev tun
proto udp
remote www.bamsenet.de 1194

resolv-retry infinite

nobind
persist-key
persist-tun

# Zertifikate entstammen einer einer eigenen hierachischen CA 
# siehe  Anleitung zum erstellen einer eigenen hierachischen CA .
ca /PATH/custom_1_openvpn_copmplete.crt
cert /PATH/user_1.crt
key /PATH/user_1.key

comp-lzo
verb 2

externe Quellen:

  1. http://de.wikipedia.org/wiki/OpenVPN
  2. http://wiki.freifunk.net/OpenVPN_Howto
Meine Werkzeuge