Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
| Both sides previous revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
|
software:openvpn [2012/06/17 14:02] mhoffmann |
software:openvpn [2014/04/28 11:14] (aktuell) mhoffmann [Schlüssel erstellen] neue Version |
||
|---|---|---|---|
| Zeile 10: | Zeile 10: | ||
| ==== Konfiguration der Schlüssel==== | ==== Konfiguration der Schlüssel==== | ||
| - | Die Konfiguration folgt dem Beispiel von Ubuntuusers.de ( http://wiki.ubuntuusers.de/OpenVPN ) | + | Die Konfiguration folgt dem Beispiel: [[uu>OpenVPN]] |
| Damit eine Verschlüsselung überhaupt möglich ist müssen zunächst die SSL-Zertifikate mit zugehöriger CA erstellt werden. | Damit eine Verschlüsselung überhaupt möglich ist müssen zunächst die SSL-Zertifikate mit zugehöriger CA erstellt werden. | ||
| Zeile 41: | Zeile 41: | ||
| Zum Abschluss muss noch zwei mal mit //Y// bestätigt werden. | Zum Abschluss muss noch zwei mal mit //Y// bestätigt werden. | ||
| - | |||
| - | Auch die Clients müssen Zertifikate besitzen um authentifiziert werden zu könnnen. Die Zertifikate für die Clients werden wie folgt erstellt: | ||
| - | <code># sudo -E ./build-key <NameDesClients> </code> erstellt. Hierbei muss beim Common Name der Name des Clients eingegeben werden. | ||
| Es müssen dann noch die Diffie-Hellmann-Paramter erstellt werden, die geschieht wiederrum mit <code># sudo -E ./build-dh</code> und kann je nach Prozessor einige Zeit dauern. | Es müssen dann noch die Diffie-Hellmann-Paramter erstellt werden, die geschieht wiederrum mit <code># sudo -E ./build-dh</code> und kann je nach Prozessor einige Zeit dauern. | ||
| Zeile 54: | Zeile 51: | ||
| Die gesamte Konfiguration des Servers erfolgt über die Datei **/etc/openvpn/server.conf**. | Die gesamte Konfiguration des Servers erfolgt über die Datei **/etc/openvpn/server.conf**. | ||
| + | Hier werden die Serverparameter angegeben und die Konfiguration der Clients. | ||
| + | Regeln, die auf den Clients angewendet werden sollen (Netzrouten, DNS/WINS-Umleitungen und Gateways), werden mit Pushbefehlen der Form ''Push "Befehl"'' angegeben. | ||
| + | |||
| Zunächst muss man die Speicherorte der Zertifikate und des Diffie-Hellmann-Files angepasst werden. | Zunächst muss man die Speicherorte der Zertifikate und des Diffie-Hellmann-Files angepasst werden. | ||
| Hierzu muss man in der Konfiguration die Zeilen die auf die entsprechenden Files verweisen wie folgt anpassen: | Hierzu muss man in der Konfiguration die Zeilen die auf die entsprechenden Files verweisen wie folgt anpassen: | ||
| Zeile 92: | Zeile 92: | ||
| Hierzu fügen wir auf diesem Server eine statische Route hinzu. Temporär mit | Hierzu fügen wir auf diesem Server eine statische Route hinzu. Temporär mit | ||
| <code># sudo route add -net 10.8.0.0 netmask 255.255.255.0 gw vpn.server.i.p </code> | <code># sudo route add -net 10.8.0.0 netmask 255.255.255.0 gw vpn.server.i.p </code> | ||
| - | Um die Route nach einem Neustart noch verwenden zu können müssen wir sie in die **/etc/rc.local des Computers eintragen, indem wir den gleichen Befehl ohne ''sudo'' dort eintragen. | + | Um die Route nach einem Neustart noch verwenden zu können müssen wir sie in die **/etc/rc.local** des Computers eintragen, indem wir den gleichen Befehl ohne ''sudo'' dort eintragen. |
| + | |||
| + | === OpenVPN als Default-Gateways === | ||
| + | Will man erreichen, dass der VPN-Tunnel den gesamten Traffic des Clients abwickelt, so muss man dies in der Push-configuration festlegen., | ||
| + | Hierzu entfernt man einfach das Kommentarzeichen der Zeile | ||
| + | <code>;push "redirect-gateway def1 bypass-dhcp"</code>. | ||
| + | Damit die Route ins Internet gefunden werden kann müssen noch die IP-Tables angepasst werden. | ||
| + | Vorraussetzung dafür ist die Installtion des Pakets **iptables** (Siehe http://wiki.ubuntuusers.de/iptables2) | ||
| + | |||
| + | Um die Regeln zu temporär einzurichten reichen die drei Befehle: | ||
| + | <code> | ||
| + | # sudo iptables -A FORWARD -o eth0 -i tun0 -s 10.8.0.0/24 -m conntrack --ctstate NEW -j ACCEPT | ||
| + | # sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT | ||
| + | # sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE | ||
| + | </code> | ||
| + | **Achtung:** Die letzte Regel aktiviert für alle Verbindungen die über das Interface eth0 aufgebaut werden NAT, was zu ungewünschten Verhalten führen kann!. Beim Betrieb einer Firewall oder eines Routers (IP_Forwarding) auf dem Server muss die Konfiguration entsprechend verändert werden. | ||
| + | |||
| + | Da diese Regeln nach einem Neustart verloren gehen trägt man sie einfach wieder ohne ''sudo'' in die **/etc/rc.local** ein. | ||
| + | Mach beachte hierbei, dass im ersten Befehl der Parameter von **-s** das Netz des VPN-Servers sein muss, und das Interface **-i** der Tunnel Adapter **tun0** oder das TAP-Interface **tap1**, je nach Konfiguration. | ||
| + | |||
| + | |||
| + | === (Neu-)Start des Servers === | ||
| + | Nachdem der Server Konfiguriert wurde starten wir ihn mit | ||
| + | <code># sudo service openvpn restart </code> neu. | ||
| + | ===== Client ===== | ||
| + | |||
| + | ==== Schlüssel erstellen ==== | ||
| + | Auch die Clients müssen Zertifikate besitzen um authentifiziert werden zu könnnen. Die Zertifikate für die Clients werden wie folgt im Ordner **/etc/openvpn/easy-rsa2/** erstellt.: | ||
| + | <code> | ||
| + | #exportiere variablen der CA | ||
| + | source ./vars | ||
| + | |||
| + | #Setze den namen des neuen Zertifikates | ||
| + | export KEY_CN=[Name des neuen Zertifikates] | ||
| + | |||
| + | #Jetzt wird das zertifikat erstellt. Dies kann mit oder ohne Passwort erfolgen. | ||
| + | #Mit Passwort | ||
| + | ./pkitool --pass [Name des neuen Zertfikates] | ||
| + | #oder ohne Passwort | ||
| + | ./pkitool [Name des neuen Zertfikates] | ||
| + | </code> erstellt. | ||
| + | |||
| + | Nach Abschluss der Aktion liegen die Zertifikate im Ordner /keys. | ||
| + | |||
| + | Es gibt für nahezu jedes Betriebssystem einen OpenVPN Client, ein Übersicht über diese bekommt man hier: https://community.openvpn.net/openvpn/wiki/RelatedProjects | ||
| + | |||
| + | Für den Betreib des Clients braucht man 4 Dateien (Hier mit Beispielnamen): | ||
| + | * Zertifikat des Cleints "nutzer01.crt" | ||
| + | * Schlüssel des CLients "nutzer01.key" | ||
| + | * Zertifikat der CA: ca.crt | ||
| + | * Configurationsdatei: client.conf (Unter windows muss man diese in client.ovpn umbennenen) | ||
| + | Die Zertifikate muss man natürlich vorher auf dem Server erstellt haben. | ||
| + | Die Konfigurationsdatei des Clients findet man auf dem VPN-Server unter **/usr/share/doc/openvpn/examples/sample-config-files/client.conf**. Diese sollte man sich ins openvon Verzeichnis kopieren. | ||
| + | Nun muss man diese Datei geringfügig anpassen: | ||
| + | Die Remotadresse des Servers muss angegeben werden, also die **öffentliche** Adresse auf der der Server horcht (Siehe Serverkonfig). Angenommen unser Server hat die Adresse **176.9.72.244**, dann tragen wir ein: | ||
| + | <code> | ||
| + | remote 176.9.72.244 [Port] | ||
| + | </code> | ||
| + | Natürlich kann man hier auch Domainnamen verwenden. | ||
| + | Danach muss man noch die Zertfikatspfade anpassen. | ||
| + | Da die Dateien alle im gleichen Verzeichnis liegen sollten tragen wir ein: | ||
| + | <code> | ||
| + | ca ca.crt | ||
| + | cert nutzer01.crt | ||
| + | key nutzer01.key | ||
| + | </code> | ||
| + | Danach kann man den openVPN Client starten. Nahezu alle GUIs zeigen beim Verbindungsaufbau einen LOG an, so dass man Fehler schnell erkennen kann. | ||
| + | |||
| + | Nun testen man am besteen noch, ob man alles gewünscht erreicht: | ||
| + | Auf der lokalen Maschine teste man mittels PING im Terminal oder Windows-CMD einfach, ob man | ||
| + | * VPN-Server | ||
| + | * Computer im entfernten LAN | ||
| + | * Computer im Internet (bspw. Google) | ||
| + | erreicht. | ||
| + | Funktioniert das alles so hat man die Konfiguration erfolgreich abgeschlossen. | ||
| + | ===== Hinweis ===== | ||
| + | - Für ein Bridged-Setup muss man eine andere Konfiguration für die Netzwerkfreigabe und den Internettunnel verwenden | ||
| + | - Wenn man in dem privaten Netzwerk keinen DNS-Server laufen hat, kann es sein, dass man dort gehostete Websiten nicht mehr über den domainnamen erreicht. | ||
| + | {{tag>vpn sicherheit}} | ||
Bei Verwendung dieses Wikis erklären Sie sich mit dem Haftungsausschluss, Nutzungsbedingungen und der Datenschutzerklärung dieses Wikis einverstanden. Impressum.