Benutzer-Werkzeuge

Webseiten-Werkzeuge


software:openvpn

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

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.

software/openvpn.1339934578.txt.gz · Zuletzt geändert: 2012/10/11 10:23 (Externe Bearbeitung)