OpenVPN: Unterschied zwischen den Versionen

Aus Opennet
Wechseln zu: Navigation, Suche
(Zusammenfassung: default ändern auf etwas funktionsfähiges)
 
Zeile 253: Zeile 253:
 
</pre>
 
</pre>
 
OLSR wird in diesem Fall nicht benötigt.
 
OLSR wird in diesem Fall nicht benötigt.
 +
 +
== Hardware Performance Messungen ==
 +
 +
Wie gut die verschiedenen Embedded Plattformen mit OpenVPN / AES Encryption arbeiten: https://systemausfall.org/wikis/howto/AES-Performance
  
 
[[Category:Dienste]]
 
[[Category:Dienste]]
 
[[Category:Anleitungen]]
 
[[Category:Anleitungen]]

Aktuelle Version vom 27. Dezember 2019, 12:53 Uhr

Inhaltsverzeichnis

[Bearbeiten] Vorwort

Mit der Software OpenVPN läßt sich eine gesicherte Verbindung zwischen dem Opennet-Gateway und dem Computer des Endbenutzer herstellen (ein sog. Virtuelles Privates Netz). 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!

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.

[Bearbeiten] 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, kann auch per Homebrew installiert werden)

[Bearbeiten] 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 für das Opennet 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 Dein Zertifikat (.crt Datei) erstellt. Das ist dann durch die Opennet- CA beglaubigt. Diese Zertifikate dienen ausschließlich der Absicherung des Opennets.

[Bearbeiten] 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]: Vorname Nachname
Organizational Unit Name (eg, section) []: Opennet User
Common Name (eg, your name or your server's hostname) []: 1.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 die Opennet CA Das nur für Opennet Zwecke gültige signierte Zertifikat kommt dann per E-Mail zurück. Da es manuell erzeugt werden muss, bitte etwas Geduld.

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

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

[Bearbeiten] 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.

[Bearbeiten] 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.

[Bearbeiten] Windows

  • config-Ordner öffnen -->c:\programme\openvpn\config
  • rechte Maustaste --> "Neu" --> "Textdokument"
  • Textdokument.txt öffnen --> in den Editor folgende Angaben einfügen
client
dev tun
proto udp
remote-cert-tls server
remote 192.168.0.247 1600
nobind 
persist-key
persist-tun
ca C:/Programme/OpenVPN/easy-rsa/keys/ca.crt
cert C:/Programme/OpenVPN/easy-rsa/keys/XX.crt
key C:/Programme/OpenVPN/easy-rsa/keys/XX.key
compress
redirect-gateway local
  • XX muss nun durch den jeweiligen Dateinamen von der .crt und .key Datei ersetzt werden --> siehe c:\programme\openvpn\easy-rsa\keys
  • "Speichern" und Editor schließen
  • nun muss Textdokument.txt noch umbenannt werden in z.B. client.ovpn

[Bearbeiten] 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.

[Bearbeiten] MacOS

  • Tunnelblick z.B. per Homebrew installieren: brew cask install tunnelblick
  • in der Tunnelblick Oberfläche die Konfigurationsdatei einfügen (siehe unten)
  • Zertfikikat & Co analog Linux ablegen, die Pfad fuer Tunnelblick ist ~/Libary/openvpn/
  • Verbindung über Tunnelblick starten/stoppen

[Bearbeiten] Konfigurationsdatei (opennet.conf)

[Bearbeiten] Zusammenfassung

client
dev tun
proto udp
remote-cert-tls server
remote <gateway> 1600
nobind
#user nobody  #bei Bedarf weiter unten Details nachlesen, weil diese Option Nebenwirkungen hat
#group nobody #bei Bedarf weiter unten Details nachlesen, weil diese Option Nebenwirkungen hat
persist-key
persist-tun
ca <ca-filepath>
cert <cert-filepath>
key <key-filepath>
compress
route 192.168.0.0 255.255.0.0 net_gateway
redirect-gateway
  • <gateway> durch die IP-Adresse oder DNS-Name des VPN-Servers ersetzen
  • <*-filepath> durch den Pfad zu den Dateien ersetzen

[Bearbeiten] 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
remote-cert-tls server
  • Bestehe auf ein server-type certificate beim peer
remote 192.168.0.<gw-ip> 1600
  • einen Gatewayserver entsprechend Opennet Server eintragen
  • 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
  • Bei der naiven Anwendung unter linux entsteht das Problem das beim Verbindungsabbau, die "ip route add/del" Kommandos fehlschlagen, weil der User nobody keine Rechte hat. Dies resultiert in z.B. einer fehlenden Default Route nach Verindungsabbau. Als Lösung kann man entweder diese Zeilen auskommentieren oder dem nobody User Rechte verschaffen (siehe https://community.openvpn.net/openvpn/wiki/HOWTO#UnprivilegedmodeLinuxonly).
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 ersetzen
  • Das Zertifikat der Opennet-CA server_certchain.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
compress
  • 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

[Bearbeiten] Portmapping

Die Nutzerdokumentation findet sich unter Portforwarding. Die technische Umsetzung wird unter Server Installation/OpenVPN beschrieben.

[Bearbeiten] Externer VPN Zugang

Falls man aus dem Internet sich an das Opennet koppeln will, etwa um Wartungsarbeiten durchzuführen oder einen gesicherten Internet Tunnel aufzubauen, geht man wie oben beschrieben vor. Allerdings ist die Konfiguration leicht abweichend:

remote vpn.opennet-initiative.de 1600

OLSR wird in diesem Fall nicht benötigt.

[Bearbeiten] Hardware Performance Messungen

Wie gut die verschiedenen Embedded Plattformen mit OpenVPN / AES Encryption arbeiten: https://systemausfall.org/wikis/howto/AES-Performance

Meine Werkzeuge
Namensräume

Varianten
Aktionen
Start
Opennet
Kommunikation
Karten
Werkzeuge