Hier der openvpn-manpage-Auszug:
Example 1: A simple tunnel without security On may: openvpn --remote june.kg --dev tun1 --ifconfig 10.4.0.1 10.4.0.2 --verb 9 On june: openvpn --remote may.kg --dev tun1 --ifconfig 10.4.0.2 10.4.0.1 --verb 9 Now verify the tunnel is working by pinging across the tunnel. On may: ping 10.4.0.2 On june: ping 10.4.0.1
Zunächst muss ein zufälliger Key erzeugt werden:
openvpn --genkey --secret key
optional auch:
openvpn --genkey --cipher BF-CBC --keysize 128 --secret key
zum anzeigen der möglichen Parameter für cipher
und keysize
:
openvpn --show-ciphers
Die restliche Prozedur erfolgt wie für einen Tunnel ohne Security, <br />
allerdings mit –secret <key>
als parameter:
On may: openvpn --remote june.kg --dev tun1 --ifconfig 10.4.0.1 10.4.0.2 --verb 5 --secret key On june: openvpn --remote may.kg --dev tun1 --ifconfig 10.4.0.2 10.4.0.1 --verb 5 --secret key
Dies setzt die existenz einer ssl-CA vorraus. Zum erzeugen derer unter SSL nachsehen.<br /> Für den tls-Server muss eine Datei mit Diffie Hellman Parametern im .pem Format vorliegen.<br /> Zur erzeugung:
openssl dhparam -out dh1024.pem 1024
Für jeden Peer muss ein Zertifikat mit zugehörigem Private-Key erzeugt werden. Hierzu zunächst ein Certificate-Request erzeugen:
openssl req -nodes -new -keyout mycert.key -out mycert.csr
Dann den Request (mycert.csr) mit der CA signieren:
openssl ca -out mycert.crt -in mycert.csr
Gegen DoS-Attacken kann zusätzlich eine tls-auth-Datei angegeben werden. Diese Datei wird auf alle Peers geshared. Hierzu dient vorzüglich ein preshared-Key, der mit openvpn erstellt wurde:
openvpn --genkey --secret key
um ein bridge-bares device zu erzeugen, muss –dev tapX
gesetzt werden, <br />
ausserdem bekommt –ifconfig
eine neue Bedeutung: –ifconfig <eigene ip> <netmask>
. <br />
wird tap
später zu einer bridge hinzugefügt, sollte –ifconfig
ganz weggelassen werden.
Je weniger Overhead durch die Ver- und Entschlüsselung erzeugt wird, <br /> desto besser ist natürlich die Performance. Allerdings steht meist die Sicherheit <br /> im Vordergrund, daher keine Wirkliche Alternative.
Manchmal kann auch die Benutzung eines kleineren Keys eine Lösung sein.
Vorallem auf Embedded-Systemen können Resourcen eingespart werden, <br />
wenn –verbose
auf einen sehr niedrigen Wert gesetzt wird.
#local 10.0.0.1 tls-server mode server port 1194 proto udp dev tap #dev tun ca /etc/ssl/openvpn/cacert.pem cert /etc/ssl/openvpn/basecrt.pem key /etc/ssl/openvpn/base.key dh /etc/ssl/openvpn/dh1024.pem #server 10.4.0.0 255.255.255.0 #server-bridge 192.168.1.1 255.255.255.0 192.168.1.100 192.168.1.200 push "route 192.168.1.0 255.255.255.0" #push "route 192.168.20.0 255.255.255.0" #push "redirect-gateway" #push "dhcp-option DNS 192.168.1.23" push "dhcp-option DNS 192.168.1.1" keepalive 10 120 tls-auth /etc/ssl/openvpn/ta.key 0 # This file is secret max-clients 5 user nobody group nobody persist-key persist-tun verb 3 mute-replay-warnings
tls-client dev tap proto udp #remote pr4x.ath.cx 1194 remote 10.0.0.1 ifconfig 192.168.1.21 255.255.255.0 route-gateway 192.168.1.1 redirect-gateway nobind user nobody group nobody persist-key persist-tun ca /etc/openvpn/cacert.pem cert /etc/openvpn/tinycrt.pem key /etc/openvpn/private/tinykey.pem #ns-cert-type server tls-auth /etc/openvpn/private/ta.key 1 #verb 6 verb 3