OpenVPN

Aus Freifunk Potsdam | Wiki
Zur Navigation springen Zur Suche springen

Überblick

OpenVPN leitet IP-Verbindungen durch unsichere Netze mithilfe kryptographisch gesicherter Tunnel. Die Nutzdaten werden mit SSL / TLS verschlüsselt, wodurch eine hohe Abhörsicherheit erzielt wird. Die OpenVPN-Software läuft als Hintergrundprozeß ("Daemon"), die Anbindung an den IP-Stack des jeweiligen Betriebssystemes wird durch einen Tunnel-Driver hergestellt.

Der Vorzüge von OpenVPN gegenüber PPTP oder IPsec sind Portabilität, offene Standards und einfache Konfiguration. Für folgende Systeme ist OpenVPN verfügbar:

Ein VPN besteht aus:

  • Einem Server, der den Zugang zum virtuellen Netz kontrolliert und das Routing zwischen den Clients und Nicht-VPN-Netzen regelt,
  • Mehreren Clients, die durch einen VPN-Tunnel mit dem Server kommunizieren. Mit Umweg über den Server ist so auch eine Client-zu-Client-Kommunikation möglich, sofern die Routing-Regeln des Servers dies zulassen.

Im üblichen Aufbau von OpenVPN-Netzen melden sich die Clients über ein SSL-Zertifikat am Server an, wobei der CN (Canonical Name) des Zertifikates verwendet wird, um die korrekte Netzwerk-Konfiguration des Client zu bestimmen. Dies setzt voraus, daß jeder Client ein individuelles Zertifikat erhält. Wenn die Clients nur ins Internet wollen, wäre ein Cert für alle und ein DHCP-Pool besser. Todo: Rausfinden, wie das geht.

Einrichtung

Für ein einfaches Client / Server-Setup wird benötigt:

  • SSL-Zertifikate für alle Beteiligten. Um die kostengünstig (umsonst) und einfach zu erhalten, sei eine Anmeldung bei CaCert empfohlen.
  • Ein Netzwerkplan für das VPN, um folgende Fragen zu klären (Melle, bitte ergänzen):
    • Welche LAN-Adressen (nach RFC 1918) sollen verwendet werden? TBD: Ausnahmeregeln für Windoze verstehen und erklären.
    • Wer darf mit wem kommunizieren? Welches Routing und welche Firewall-Regeln werden dazu auf dem Server benötigt?
    • Welche Namen haben die VPN-Clients?

SSL-Certs

Um ein Cert zu erstellen, wird ein Key benötigt. Mit OpenSSL geht das so:

openssl genrsa -out vpn.key 2048

Anschließend wird für jeden Client und den Server ein CSR (Certificate Signing Request) benötigt:

openssl req -new -key vpn.key -out client.csr

Es folgt ein Frage-und-Antwort-Spiel. Dabei ist die einzig wichtige Frage: Common Name (eg, YOUR name). Dort den jeweiligen Rechnernamen eintragen, z.B. client001.vpn.freifunk-potsdam.de.

Die CSRs klebt man der Reihe nach in das Eingabefeld bei CaCert (unter Server CertificatesNew). Postwendend erhält man ein halbwegs glaubwürdiges Zertifikat. Außerdem braucht man noch das Root-Cert von CACert.

Server-Config

Noch nicht fertig

port 33469
proto udp

dev tun0

ca /etc/ssl/certs/cacert.org.pem
cert /etc/ssl/certs/vpn-server.crt
key /etc/ssl/private/vpn.key
dh dh1024.pem

mode server
tls-server
ifconfig 10.0.0.1 10.0.0.2
route 10.0.0.0 255.0.0.0

push "route 10.0.0.1"

user nobody
group nogroup

client-config-dir ccd
ccd-exclusive
keepalive 10 120

comp-lzo

persist-key
persist-tun 

status openvpn-status.log

Client-Config

Noch nicht fertig

client
dev tun
proto udp
remote vpn.freifunk-potsdam.de 33469
nobind
persist-key
persist-tun
ca root.crt
cert client.crt
key vpn.key
comp-lzo
verb 3
mute 20

Routing / Firewall