OpenVPN: Unterschied zwischen den Versionen

Aus Opennet
Wechseln zu: Navigation, Suche
(Konfigurationsdatei (opennet.conf))
(Beschreibung der Konfigurationsdatei: aufgeraeumt und z.T. verständlicher)
Zeile 217: Zeile 217:
 
</pre>
 
</pre>
 
* Datenkomprimierung
 
* Datenkomprimierung
<pre>
 
route 192.168.0.0 255.255.0.0
 
</pre>
 
* setzt eine Route zum 192.168er Netz
 
* Die Openvpn-config für Systeme mit eigenem olsrd sollte diese Zeile '''nicht''' enthalten
 
* Alternativ: Direktes Setzen des enstprechenden route-table Eintrags
 
** GNU/Linux: "route add -net 192.168.0.0/16 gw ''172.16.0.1''" ; gilt höchstens bis zum nächsten shutdown
 
** MS Windows: "route ADD 192.168.0.0 MASK 255.255.0.0 ''172.16.0.1''" ; gilt höchstens bis zum nächsten shutdown
 
 
<pre>
 
<pre>
 
redirect-gateway
 
redirect-gateway
 
</pre>
 
</pre>
* Setzt eine hostroute zum default gateway mit dem jetzigen default gateway
+
* ersetzt die Default-Route durch den Tunnelendpunkt
** Zur Aufrechterhaltung des Tunnels erforderlich, falls die vorherige Zeile nicht existiert
+
* sämtlicher Datenverkehr, für den keine spezielle Route gesetzt ist, wird nun durch den Tunnel geleitet
* Setzt eine neue default route mit gateway gleich dem openvpn-Endpunkt
+
** D.h. Sämtlicher traffic für den keine spezielleren routes existieren wird durch den Tunnel geleitet
+
  
 
== Tunnel starten ==
 
== Tunnel starten ==

Version vom 30. Dezember 2006, 14:20 Uhr

Inhaltsverzeichnis

Vorwort

Mit der Software OpenVPN läßt sich eine gesicherte Verbindung zwischen dem Opennet-Gateway und dem Computer des Endbenutzer herstellen. Die Anleitung beschreibt die Konfiguration von OpenVPN auf Deinem eigenen Computer, alternativ kannst Du auch das vorkonfigurierte OpenVPN auf dem Accesspoint nutzen. Bei Verwendung eines mobilen Notebooks muß OpenVPN auf dem Notebook installiert werden.

DISCLAIMER - Keine öffentliche Zertifizierungsstelle!

Diese Seite beschreibt die Einrichtung eines openvpn-clients zur Verbindung mit einem Gateway der Opennet-Initiative e.V.. Die Nutzung der auf Anfrage von der Opennet-Initiative ausgestellten Zertifikate ist nur für Opennet-interne Zwecke sinnvoll. An uns gestellte Anfragen für Zertifikate für Nutzung für Opennet-fremde Zwecke demonstrieren ein grundlegendes Unverständnis der benutzten Algorithmen und Technologien beim Anfragesteller, und werden von uns nicht bearbeitet. Die Aufnahme der für derartige Anfragen verantwortlichen Personen und Organisationen in eine Hall of Shame bleibt vorbehalten.

Installation

Nach dem Download die entsprechenden Dateien installieren und den jeweiligen Installationsanleitungen folgen.

Windows: http://openvpn.net/download.html + Graphische Benutzeroberfläche http://openvpn.se/download.html (Unter Windows-XP erscheint eventuell ein Warnhinweis, dass ein Treiber nicht für Windows-XP zertifiziert ist, er kann ignoriert werden.)

Linux: http://openvpn.net/download.html + Linux-Nutzer achten darauf, dass TUN/TAP-Unterstüzung durch Kernel bereit gestellt wird (Modul tun, Kernel-Option CONFIG_TUN bzw. "Universal TUN/TAP device driver support").

Mac OS: http://tunnelblick.net/ (OpenVPN mit graphischer Nutzerschnittstelle)

Zertifikat erstellen

Für die Verschlüsselung und Authentifizierung innerhalb des Opennets ist ein digitales Zertifikat (Cert) und ein digitaler Schlüssel (Key) notwendig. Um das Zertifikat erstellen zu können, musst du zuerst auf deinem Rechner einen Key erzeugen. Mit dem von dir erzeugten Key wird dann eine Request-Datei (Certificate Sign Request - .csr) erstellt. Diese Request-Datei wird an csr@opennet-initiative.de geschickt.

Hier wird daraus dann mit hilfe des Stamm-Zertifikates vom Opennet oder einem davon abgeleitetem Intermediate-CA Zertifikat Dein Zertifikat (.crt Datei) erstellt. Das ist dann durch die Opennet CA beglaubigt. Diese Zertifikate dienen ausschließlich der Absicherung des Opennets.

Windows

Du öffnest unter Windows eine Eingabeaufforderung (Startmenu: Ausführen: cmd) und gibst folgendes ein (jede Zeile mit Enter beenden | OpenVPN wurde hier unter c:\programme\openvpn installiert, also erste Zeile entsprechend anpassen):

cd c:\programme\openvpn\easy-rsa\
init-config.bat
vars.bat
mkdir keys
openssl req -days 3650 -nodes -new -keyout keys\VornameNachname.key \
 -out keys\VornameNachname.csr -config openssl.cnf

Es wurden jetzt die notwendige Konfigurationsdatei erstellt, die Umgebungsvariablen geladen und das Verzeichnis keys im Installationsordner von OpenVPN erstellt. Zuletzt wird eurer Schlüssel und ein Zertifikatsantrag erstellt. Ihr müsst dabei einige Angaben ausfüllen.

An dem Beispiel musst du nur folgendes ändern:

  • Organization Name: deinen Namen (zusammen geschrieben, keine Sonderzeichen)
  • Common Name: muss aus Gründen der eindeutigen Zuordnungsbarkeit der OpenVPN IP Addressen zum verantwortlichen Nutzer der Konvention XX.aps.on oder XX.mobile.on entsprechen - und dem beantragenden Nutzer muss die entsprechende Opennet-IP Adresse (192.168.1.XX bzw. 192.168.7.XX) bereits zugeordnet sein.
  • Email Address: deine E-Mail-Adresse
  • A challenge password: Wenn du hier ein Passwort angibst, wird jedesmal beim Öffnen der OpenVPN-Verbindung danach gefragt. Kann leer gelassen werden.

Beispiel:

Loading 'screen' into random state - done
Generating a 1024 bit RSA private key
...................++++++
....++++++

writing new private key to 'keys\VornameNachname.key'

You are about to be asked to enter information that will be incorporated
into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.

Country Name (2 letter code) [US]:de
State or Province Name (full name) [CA]: Mecklenburg-Vorpommern
Locality Name (eg, city) [SanFrancisco]: Rostock
Organization Name (eg, company) [FortFunston]: VornameNachname
Organizational Unit Name (eg, section) []: OUN
Common Name (eg, your name or your server's hostname) []: 99.aps.on
Email Address [mail@host.domain]: du@provider.de

Please enter the following 'extra' attributes
to be sent with your certificate request

A challenge password []:
An optional company name []:

Using configuration from openssl.cnf
Loading 'screen' into random state - done

Im Verzeichnis keys/ liegt dann dein eigener Schlüssel VornameNachname.key und die Request-Datei namens VornameNachname.csr. Diese Datei (und nur diese Datei) schickst du jetzt an csr@opennet-initiative.de - gib in der mail bitte den zur CSR-Erstellung eingegebenen CN (XX.aps.on oder XX.mobile.on) an. Das signierte Zertifikat kommt dann per E-Mail zurück: ?_XX.crt. Da es manuell erzeugt werden muss, bitte etwas Geduld. Wenn es erzeugt wurde, steht das Zertifikat in dieser Liste.

Dazu musst du dir noch die Opennet-CA Datei ca.crt downloaden und du kommst insgesamt auf vier Dateien:

  • ca.crt
  • VornameNachname.key
  • VornameNachname.csr
  • VornameNachname.crt

Linux / Mac OS

In einem beliebigen Verzeichnis (z.B. Homeverzeichnis) den Request erstellen mit

openssl req -days 3650 -nodes -new -keyout VornameNachname.key \
 -out VornameNachname.csr -config /etc/ssl/openssl.cnf


Wenn das Verzeichnis /etc/ssl nicht existiert, und Openssl installiert ist, liegen die Dateien auch in /usr/share Mit "ln -s /usr/share/ssl /etc/ssl" einen Link erstellen (als root), oder die Dateinamen entsprechend anpassen.

Wenn man bei -keyout und -out kein Verzeichnis angegeben hat, finden sich die Dateien im aktuellen Verzeichnis wieder.

Das übrige Vorgehen ist identisch mit dem vorgegangen Windows-Abschnitt.

Konfiguration

Der folgende Abschnitt beschreibt die für Opennet erforderlichen oder günstigen Einstellungen in der OpenVPN Konfigurationsdatei. Diese lässt sich beim Aufruf von OpenVPN mit der --config Option angeben. Alle der Optionen können auch direkt beim openvpn-Aufruf als Argumente angegeben werden.

Windows

Fehlt noch. Liebe Windowsnutzer: bitte ergänzen!

Linux

Die Zertifikate, Schlüssel und Konfigurationsdatei legt mal nach /etc/openvpn/, die sieht dann etwa wie folgt aus

/etc/openvpn/
  opennet.conf  - OpenVPN Konfiguration für Opennet
  21_aps.csr    - Certificate Signing Request (nicht mehr benötigt)
  21_aps.key    - Privater Schlüssel des AP21-Zertifikats
  21_aps.crt    - AP21-Zertifikat (mit öffentlichem Schlüssel)
  ca.crt        - Opennet-CA-Zertifikat (CA = Zertizifierungstelle)

Das Starten und Stoppen der VPN-Tunnel ist denkbar sein, über die Init-Skripte können alle Tunnel gestartet werden, für die im etc-Verzeichniss von OpenVPN eine conf-Datei liegt:

/etc/init.d/openvpn start|stop 

Alternativ kann die Opennet VPN-Verbindung auch mit der Hand gestartet werden:

openvpn --config /etc/opennet.conf

Alle Ausgaben laden standardmäßig in der Console oder im Syslogfile (/var/log/messages). Sie kann aber auch mit appendfile in eine Datei umgeleitet werden, siehe OpenVPN-Manpage.

MacOS

  • in der Tunnelblick Oberfläche die Konfigurationsdatei einfügen (siehe unten)
  • Zertfikikat & Co analog Linux ablegen, die Pfad fuer Tunnelblick ist stets ~/Libary/openvpn/
  • Verbindung über Tunnelblick starten/stoppen

Konfigurationsdatei (opennet.conf)

client
dev tun
proto udp
ns-cert-type server
remote <gateway> 1600
nobind
user nobody
group nobody
persist-key
persist-tun
ca <ca-filepath>
cert <cert-filepath>
key <key-filepath>
comp-lzo
redirect-gateway local
  • <gateway> durch die IP-Adresse oder DNS-Name des VPN-Servers ersetzen
  • <*-filepath> durch den Pfad zu den Dateien ersetzen
  • letzte Zeile ggf. auch ohne "local" falls eine VPN-Verbindung aus dem Internet aufgebaut wird

Beschreibung der Konfigurationsdatei

Ein paar Erläuterungen, für die Interessierten:

client
  • tls-client Modus
  • Annahme von begrenzten Konfigurationsbefehlen vom Server
dev tun
  • Nutze ein beliebiges IP-Tunnel device
proto udp
  • UDP Protokoll
ns-cert-type server
  • Bestehe auf ein server-type certificate beim peer
remote 192.168.0.254 1600
  • Server 192.168.0.254 (Titan)
  • UDP-Port 1600
nobind
  • Beliebiger lokaler Port
user nobody
group nobody
  • Wechsle prozess-uid und gid zu der von "nobody" nach Programmstart
  • Erhöhung der Sicherheit für das lokale System durch Rechteverringerung des Prozesses
  • Wird von der windows-version grundsätzlich ignoriert
persist-key>
  • Versuche nicht key-files nach tunnel-resets erneut zu lesen (eventuell durch user/group Wechsel nicht mehr möglich)
ca <ca-filepath>
cert <cert-filepath>
key <key-filepath>
  • <*-filepath> Ist mit Pfaden zu den relevanten Dateien erstzen
  • Das Zertifikat der Opennet-CA ca.crt
  • Das Zertifikat gibt es als Antwort auf eine mail des Certificate Signing Requests (CSR) an [1]
  • Der key wird zusammen mit dem CSR von openssl erzeugt
comp-lzo
  • Datenkomprimierung
redirect-gateway
  • ersetzt die Default-Route durch den Tunnelendpunkt
  • sämtlicher Datenverkehr, für den keine spezielle Route gesetzt ist, wird nun durch den Tunnel geleitet

Tunnel starten

Wenn man nun die beiden Zertifikate, seinen privaten Schlüssel und die Konfigurationsdatei hat, kann man versuchen den Tunnel aufzubauen.

Benutzer der Windows GUI klicken dazu mit der rechten Maustaste auf das Icon im Tasktray und wählen connect. Danach öffnet sich ein Fenster in dem Logmeldungen ausgegeben werden. In einem zweiten Fenster wird das Passwort abgefragt das Ihr bei der Erstellung des privaten Schlüsselts angegeben habt. Danach sollten die Farbe das Trayicon von rot nach gelb auf grün wechseln.

Alternativ kann man eine Text-Konsole aufmachen, nach C:\Programme\OpenVPN\config wechseln und hier openvpn --config client.ovpn eingeben. Danach muß man wieder das Passwort für den Key eingeben und der Tunnel wird aufgebaut.

Portmapping

Die offiziellen Opennet Gateways bieten für Nutzer von openvpn-tunneln zur Kommunikation mit dem jeweiligen Gateway Destination Network Address Translation (DNAT) von 10 aufeinanderfolgenden ports, sowohl für tcp als auch für udp, von ihrer globalen (internet) IP Adresse an. Die geforwardeten Ports hängen direkt von der Adresse des OpenVpn Endpunkts (10.1.*.*), und damit momentan auch von der tatsächlichen internen opennet-IP dieses Systems (192.168.*.*) ab. Dieses Dokument beschreibt den Algorithmus zur Ermittlung der zu einer OpenVpn geforwardeten portrange.

Algorithmus

  • Setze n gleich 10000.
  • Falls der Common Name des client-Certificates weder der Form "*.aps.on" noch der Form "*.mobile.on" entspricht gibt es keine zu diesem System geforwardeten ports. Andernfalls:
  • Falls der CN der Form "*.mobile.on" entspricht, setze n gleich n+2550
  • Setze n gleich n+(10*([Systemnummer ("*" in oberen Beispielen)] -1))
  • Die Portrange ist n bis n+9

Beispiel:

  • CN des Zertifikats ist 14.mobile.on
  • 10000
  • 10000 + 255*10 = 12550
  • 12550 + (10*(14-1)) = 12680
  • Portbereich wäre dann von 12680 bis 12689

Python Skript

#!/usr/bin/env python
BASE_PORT = 10000
TYPE_AP = 0
TYPE_MOBILE = 1
ELEMENT_COUNT = 255
PORT_COUNT = 10

def oontp(target_type, target_no):
   if (not (isinstance(target_type,(int,long)))):
      raise TypeError('Invalid type %r of value %r for argument target_type.' % (type(target_type), target_type))
   if (not (isinstance(target_no,(int,long)))):
      raise TypeError('Invalid type %r of value %r for argument target_no.' % (type(target_no), target_no))
   if (not (0 <= target_type <= 1)):
      raise ValueError('Invalid value %r for argument target_type.' % (target_type,))
   if (not (1 <= target_no <= ELEMENT_COUNT)):
      raise ValueError('Invalid value %r for argument target_type.' % (target_no,))
   
   n = BASE_PORT
   n += target_type*ELEMENT_COUNT*PORT_COUNT
   n += (target_no - 1)*PORT_COUNT
   return (n,n+PORT_COUNT-1)

if (__name__ == '__main__'):
   import sys
   print oontp(*[int(element) for element in sys.argv[1:3]])

Diese Beispiele gehen davon aus, dass sich der o.g. code in der Datei "oontp.py" befindet.
Von einer python Console:

Python 2.3.5 (#2, May 29 2005, 00:34:43)
[GCC 3.3.6 (Debian 1:3.3.6-5)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from oontp import *
>>> oontp(TYPE_MOBILE,14)
(12680, 12689)

Standalone-Aufruf:

sebastian@pc01$ ./oontp.py 1 14
(12680, 12689)

Portrange-O-Matic

Wenn kein Rechner mit Python zu Verfügung ist kann auch die Opennet Portrange-O-Matic zum Ausrechnen des Portranges verwendet werden. Einfach IP-Adresse Deines Mobilgerätes eintragen und das Formular abschicken.

Meine Werkzeuge
Namensräume

Varianten
Aktionen
Start
Opennet
Kommunikation
Karten
Werkzeuge