OpenVPN: Unterschied zwischen den Versionen

Aus Freifunk Potsdam | Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 17: Zeile 17:
* SSL-Zertifikate für alle Beteiligten. Um die kostengünstig (umsonst) und einfach zu erhalten, sei eine Anmeldung bei [http://cacert.org CaCert] empfohlen.
* SSL-Zertifikate für alle Beteiligten. Um die kostengünstig (umsonst) und einfach zu erhalten, sei eine Anmeldung bei [http://cacert.org CaCert] empfohlen.
* Ein Netzwerkplan für das VPN, um folgende Fragen zu klären (''Melle, bitte ergänzen''):
* 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.''  
** 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?
** Wer darf mit wem kommunizieren? Welches Routing und welche Firewall-Regeln werden dazu auf dem Server benötigt?
** Welche Namen haben die VPN-Clients?
** Welche Namen haben die VPN-Clients?
Zeile 31: Zeile 31:


Die CSRs klebt man der Reihe nach in das Eingabefeld bei [http://www.cacert.org/ CaCert] (unter <tt>Server Certificates</tt> &rarr; <tt>New</tt>). Postwendend erhält man ein halbwegs glaubwürdiges Zertifikat. Außerdem braucht man noch das [http://www.cacert.org/certs/root.crt Root-Cert] von CACert.
Die CSRs klebt man der Reihe nach in das Eingabefeld bei [http://www.cacert.org/ CaCert] (unter <tt>Server Certificates</tt> &rarr; <tt>New</tt>). Postwendend erhält man ein halbwegs glaubwürdiges Zertifikat. Außerdem braucht man noch das [http://www.cacert.org/certs/root.crt 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 ===
=== Server-Config ===
''Noch nicht fertig''
''Noch nicht fertig, weil kein VPN-Plan vorhanden''
 
Die Server-Config besteht aus:
* Der globalen Konfiguration <code>/etc/openvpn/server.conf</code>
* Einer Konfigurationsdatei pro Client in <code>/etc/openvpn/ccd</code>
 
Die globale Config in <code>/etc/openvpn/server.conf</code> sieht so aus:
  port 33469
  port 33469
  proto udp
  proto udp
Zeile 64: Zeile 72:
   
   
  status openvpn-status.log
  status openvpn-status.log
In <code>/etc/openvpn/ccd</code> befindet sich eine Konfigurationsdatei pro Client, die exakt so heißen muß wie der CN im Zertifikat des Clients, also z.B. <code>/etc/openvpn/ccd/client001.vpn.freifunk-potsdam.de</code>:
ifconfig-push 10.0.1.2 10.0.1.1
push "route 10.0.0.0 255.255.0.0"


=== Client-Config ===
=== Client-Config ===
Zeile 82: Zeile 94:


=== Routing / Firewall ===
=== Routing / Firewall ===
''Todo''

Version vom 23. Juli 2006, 20:51 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:

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 CertificatesNew). 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

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

Todo