OpenVPN: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 78: | Zeile 78: | ||
=== Client-Config === | === Client-Config === | ||
Die Clients werden alle identisch konfiguriert, wobei jeweils die Zertifikate in <code>client.crt</code> individuelle CNs haben: | |||
client | client | ||
dev tun | dev tun |
Version vom 23. Juli 2006, 20:54 Uhr
Ü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:
- Linux: In den meisten Distributionen vorhanden.
- Windoze: GUI + Installer
- Mac OS X: Tunnelblick
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 für das VPN verwendet werden? Todo: 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 Certificates → New). Postwendend erhält man ein halbwegs glaubwürdiges Zertifikat. Außerdem braucht man noch das Root-Cert von CACert.
Die Gültigkeitsdauer der Zertifikate beträgt 6 Monate bis 2 Jahre, abhängig von den Assurance-Punkten des Antragstellers.
Server-Config
Noch nicht fertig, weil kein VPN-Plan vorhanden
Die Server-Config besteht aus:
- Der globalen Konfiguration
/etc/openvpn/server.conf
- Einer Konfigurationsdatei pro Client in
/etc/openvpn/ccd
Die globale Config in /etc/openvpn/server.conf
sieht so aus:
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
In /etc/openvpn/ccd
befindet sich eine Konfigurationsdatei pro Client, die exakt so heißen muß wie der CN im Zertifikat des Clients, also z.B. /etc/openvpn/ccd/client001.vpn.freifunk-potsdam.de
:
ifconfig-push 10.0.1.2 10.0.1.1 push "route 10.0.0.0 255.255.0.0"
Client-Config
Die Clients werden alle identisch konfiguriert, wobei jeweils die Zertifikate in client.crt
individuelle CNs haben:
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
Todo