Anleitung. zur Einrichtung & Konfiguration von OpenVPN-Server. auf einem Cubieboard 2/3. 2015 Stefan W. Lambert kontakt@stefanius.



Ähnliche Dokumente
VPN Tunnel Konfiguration. VPN Tunnel Konfiguration IACBOX.COM. Version Deutsch

Howto Anleitung zum Update von Docker für armhf basierte Einplatinencomputer 2015 Stefan W. Lambert

Tutorial. zur Umstellung von Seafile http auf Apache Webserver. und zur Aktivierung der Seafile Webdav Erweiterung

Tutorial. zur Einbindung einer Seafile Bibliothek in das Linux-Dateisystem. (gültig für 'Dual Cubie Homeserver SD-Card Images' V3n u.

Zusammenfassung aus How To Aufbau einer Wireless Richtfunkstreckemit Hilfe von Linksys und DD-WRT

Anleitung. zur Einrichtung & Konfiguration von Baikal (CalDAV / CardDAV Server) auf einem Cubieboard 2/ Stefan W. Lambert kontakt@stefanius.

OpenVPN mit CAcert. Graben eines VPN-Tunnels mittels freien Zertifikaten

Collax VPN. Howto. Vorraussetzungen Collax Security Gateway Collax Business Server Collax Platform Server inkl. Collax Modul Gatekeeper

HowTo für ein VPN mit X.509 Zertifikaten Intranator <=> Lancom (LCOS v6.x)

1. Voraussetzungen S Installation des OpenVPN Clients S OpenVPN Client installieren S Entpacken des Zip Ordners S.

Installation Messerli MySQL auf Linux

OP-LOG

LuXeria. VPN für die LuXeria. Emanuel Duss Emanuel Duss LuXeria / 21

Anbindung des eibport an das Internet

Diese Anleitung erläutert die Einrichtung des Active Directory Modus im DNS-343.

Update Messerli MySQL auf Linux

VPN-Verbindung zwischen LANCOM und integrierten VPN-Client im MacOS X 10.6 Snow Leopard

NAS 323 NAS als VPN-Server verwenden

Aufruf der Weboberflache des HPM- Warmepumpenmanagers aus dem Internet TIPPS

Einrichtung von VPN für Mac Clients bei Nortel VPN Router

Einrichtungsanleitung Router MX200

Shellfire OpenVPN Setup Windows

Kommunikations-Parameter

How-to: VPN mit L2TP und dem Windows VPN-Client. Securepoint Security System Version 2007nx

ANYWHERE Zugriff von externen Arbeitsplätzen

Netzwerkeinstellungen unter Mac OS X

Anbinden der Visualisierung GILLES TOUCH (VNC)

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein: - Ein Bootimage ab Version Optional einen DHCP Server.

Collax PPTP-VPN. Howto

Stecken Sie Ihren USB Stick oder Ihre externe USB Festplatte in den USB Steckplatz des Sinus 154 DSL SE.

How to install freesshd

Installationsanleitung für pcvisit Server (pcvisit 15.0)

Dynamisches VPN mit FW V3.64

Collax NCP-VPN. Howto

VPN (Virtual Private Network)

Benutzerhinweise IGW/920-SK/92: Einsatz als VPN-Client

Wissenswertes über LiveUpdate

Anleitung zur Anmeldung mittels VPN

Anleitung zur Konfiguration eines NO-IP DynDNS-Accounts mit der TOOLBOXflex-3.2

msm net ingenieurbüro meissner kompetent - kreativ - innovativ

2. Die eigenen Benutzerdaten aus orgamax müssen bekannt sein

Konfigurationsbeispiel

Lehrveranstaltung Grundlagen von Datenbanken

FTP-Leitfaden RZ. Benutzerleitfaden

VPN-Client für Windows installieren und konfigurieren

8. Bintec Router Redundancy Protocol (BRRP) 8.1 Einleitung

How-to: VPN mit PPTP und dem Windows VPN-Client. Securepoint Security System Version 2007nx

Technical Note ewon über DSL & VPN mit einander verbinden

a.i.o. control AIO GATEWAY Einrichtung

Shellfire L2TP-IPSec Setup Windows XP

Comtarsia SignOn Familie

Installationsanleitung für pcvisit Server (pcvisit 12.0)

Diese Anleitung beschreibt das Vorgehen mit dem Browser Internet Explorer. Das Herunterladen des Programms funktioniert in anderen Browsern ähnlich.

Anleitung zur Nutzung des SharePort Utility

Grundlegende Informationen zur Einrichtung des SSLVPN beim DSR-500N/1000N (FW 1.04Bxx).

Anleitung Captain Logfex 2013

Nutzung der VDI Umgebung

Folgende Einstellungen sind notwendig, damit die Kommunikation zwischen Server und Client funktioniert:

Installation mit Lizenz-Server verbinden

Authentication Policy. Konfigurationsbeispiel ZyXEL ZyWALL USG-Serie. Juni 2010 / HAL


Der NCP-Client kann sowohl für den Wireless LAN-Zugang als auch für den VPN-Dienst der BTU Cottbus genutzt werden.

VPN IPSec Tunnel zwischen zwei DI-804HV / DI-824VUP+

SFTP SCP - Synology Wiki

-Bundle auf Ihrem virtuellen Server installieren.

Tutorial -

Seite Wireless Distribution System (Routing / Bridging) 3.1 Einleitung

ELV Elektronik AG Leer Tel.:+49-(0)491/ Fax:+49-(0)491/7016 Seite 1 von 10

Powermanager Server- Client- Installation

Dieses Dokument erläutert die Einrichtung einer VPN-Verbindung zwischen einem LANCOM Router (ab LCOS 7.6) und dem Apple iphone Client.

Um zu prüfen welche Version auf dem betroffenen Client enthalten ist, gehen Sie bitte wie folgt vor:

Schnellstart. MX510 mit public.ip via OpenVPN

OpenVPN unter Linux mit KVpnc Stand: 16. Mai 2013

SSH Authentifizierung über Public Key

Installation KVV Webservices

Checkliste Installation. Novaline Bautec.One

MailUtilities: Remote Deployment - Einführung

DynDNS Router Betrieb

[Geben Sie Text ein] ISCSI Targets mit der Software FreeNAS einrichten

Grundlegende Informationen zur Einrichtung des SSLVPN beim DSR-1000N/DSR-500N(FW 1.03B27).

Das Handbuch zu KNetAttach. Orville Bennett Übersetzung: Thomas Bögel

snom Auto-Provisioning

Anleitung: Confixx auf virtuellem Server installieren

Firewalls für Lexware Info Service konfigurieren

IPCOP OPENVPN TUTORIAL

How-to: VPN mit L2TP und Zertifikaten und dem Mac OSX VPN-Client. Securepoint Security System Version 2007nx. Seite 1

1. IPSec Verbindung zwischen 2 Gateways mit dynamischen IP Adressen

Konfigurationsanleitung Network Address Translation (NAT) Funkwerk. Seite Copyright Stefan Dahler Oktober 2008 Version 1.

0. VORBEMERKUNG VORBEREITUNG DES SYSTEMS INSTALLATION UND KONFIGURATION VON PD-ADMIN Installation...3

Zentrale Installation

NTCS Synchronisation mit Exchange

Adressen der BA Leipzig

Um DynDNS zu konfigurieren, muss ausschließlich folgendes Menü konfiguriert werden:

Installationsanleitung OpenVPN

Installation. Danach wählen Sie das Installationsverzeichnis für den VPN-Client aus. Stand: Erstellt: M. Döring Seite 1

VPN und WLAN an der FH Köln - Schnelleinstieg

Firewalls für Lexware Info Service konfigurieren

ViPNet Coordinator (Linux Debian) Virtual Appliance Installation und Einrichtung

Bitte beachten Sie. Nur für Kabelmodem! - 1 -

IAC-BOX Netzwerkintegration. IAC-BOX Netzwerkintegration IACBOX.COM. Version Deutsch

Transkript:

Anleitung zur Einrichtung & Konfiguration von OpenVPN-Server 2015 Stefan W. Lambert kontakt@stefanius.de

Copyright-Hinweis Dieses Dokument obliegt den Bestimmungen der GNU-Lizenz für freie Dokumentation (GNU Free Documentation License Version 1.2) und darf unter Beachtung der Bestimmungen dieser Lizenz frei genutzt werden. Haftungsausschluß Die Nutzung dieses Dokumentes erfolgt auf eigene Gefahr. Der Autor übernimmt keinerlei Haftung für Schäden, die durch die Verwendung des Dokumentes entstehen. Ebenso übernimmt der Autor keinerlei Haftung für inhaltliche oder fachliche Mängel des Dokumentes Autor Stefan W. Lambert kontakt@stefanius.de Stand: 02.02.15 - Seite 2 - Ersteller: Stefan W. Lambert

Inhaltsverzeichnis 0. Vorbemerkung...5 1. Voraussetzungen...7 2. Einrichtung des OpenVPN Servers...8 2.1 Installation...8 2.2 Konfiguration...9 2.2.1 Server-Zertifikate und Keys generieren...9 2.2.2 Server Konfiguration anpassen...15 2.2.3 Routing zwischen OpenVPN und Heimnetzwerk aktivieren und konfigurieren...17 2.2.4 Portweiterleitung (UDP 1194) am Router einrichten...19 2.2.5 Reboot ausführen...19 3. OpenVPN Client Konfigurationsdateien erstellen...20 3.1 Client-Zertifikate und Keys generieren...20 3.2 Client-Konfigurationsdateien erstellen...23 3.2 Client-Konfigurationsdateien zusammenfassen...25 Stand: 02.02.15 - Seite 3 - Ersteller: Stefan W. Lambert

Stand: 02.02.15 - Seite 4 - Ersteller: Stefan W. Lambert

0.Vorbemerkung Dieses Dokument beschreibt die notwendigen Arbeitsschritte zur Installation und Konfiguration von OpenVPN Server (mit CubieNAS V4.03 SD-Card Image). Als Betriebssystem dient Ubuntu 14.04.01 LTS, so dass diese Anleitung für alle Ubuntu basierten Linuxsysteme (auch x86) gelten sollte. Dies ist jedoch nicht getestet. Dieses Dokument enthält keine Grundlagen zum Thema 'VPN' und keine Anleitung zur Einrichtung der OpenVPN Clientsoftware Die folgende Abbildung beschreibt das, dieser Anleitung zugrundeliegende Szenario Abbildung: OpenVPN-Verbindung Stand: 02.02.15 - Seite 5 - Ersteller: Stefan W. Lambert

In diesem Howto wird von folgenden Gegebenheiten ausgegangen: Der Router des Heimnetzwerkes ist vom Internet über einen Dynamic DNS-Namen (im Beispiel 'mustermann.dyndns.de') erreichbar Der OpenVPN Server ist nicht zugleich das Gateway (Router) des Heimnetzwerkes Auf dem Router des Heimnetzwerkes wird eine Portweiterleitung (UDP-Port 1194) zum OpenVPN-Server eingerichtet Das Heimnetzwerk nutzt den (privaten) IP-Adressbereich 192.168.1.0/24 Der Domainname des Heimnetzwerkes lautet 'mynet.home' Da im Netzwerk Webservices wie z. B. Seafile oder Baikal per Vhost eingerichtet sind, verfügt das Heimnetzwerk über einen eigenen DNS-Server (DNSMasq) Alle Rechner im Heimnetzwerk sind für die OpenVPN Clients zugänglich Der gesamte Netzwerkverkehr der OpenVPN Clients wird über die OpenVPN Verbindung geleitet. Dadurch wird auch in unsicheren Netzwerkumgebungen, wie z. B. öffentlichen Wlan's der gesamte Datenverkehr des OpenVPN Clients vor dem Zugriff unberechtigter Dritter geschützt. Stand: 02.02.15 - Seite 6 - Ersteller: Stefan W. Lambert

1.Voraussetzungen Zur Einrichtung eines VPN wird entweder eine öffentliche IP-Adresse oder ein Dynamic DNS-Name für den Router (Gateway) des Heimnetzwerkes benötigt. Dies gewährleistet, dass der Router immer unter der gleichen IP-Adresse vom Internet erreicht werden kann. Mehr Informationen zu Dynamic DNS sind unter http://de.wikipedia.org/wiki/dynamisches_dns zu finden. Als DDNS-Dienst nutze ich seit einiger Zeit das Angebot der Firma TwoDNS (http://twodns.de/de ). Das Unternehmen hat seinen Firmensitz in Deutschland, bietet bis zu fünf kostenlose Dynamic DNS Adressen und nervt seine Kunden nur selten mit Werbemails. Grundsätzlich kann jedoch jeder beliebige Dynamic DNS Anbieter genutzt werden. Stand: 02.02.15 - Seite 7 - Ersteller: Stefan W. Lambert

2. Einrichtung des OpenVPN Servers 2.1 Installation Cubieboard starten, anmelden (an der Konsole oder per ssh) und per sudo -i zum Benutzer root wechseln Welcome to CubieNAS V4.3n based on Ubuntu 14.04.1 LTS (GNU/Linux 3.4.104- sun7i+ armv7l) * Documentation: https://help.ubuntu.com/ Last login: Mon Oct 13 16:21:03 2014 from akl14zorin.example.com linaro@cubienas:~$ sudo -i Benötigte Programmpakete installieren root@cubienas:~# apt-get install openvpn easy-rsa openssl Openvpn-Dienst stoppen root@cubienas:~# service openvpn stop Die Beispielkonfiguration nach '/etc/openvpn' kopieren und entpacken root@cubienas:~# cp /usr/share/doc/openvpn/examples/sample-configfiles/server.conf.gz /etc/openvpn/ root@cubienas:~# gunzip /etc/openvpn/server.conf.gz Das Verzeichnis zur Schlüsselerzeugung nach /etc/openvpn/easy-rsa2 kopieren root@cubienas:~# cp -r /usr/share/easy-rsa /etc/openvpn/easy-rsa2 Stand: 02.02.15 - Seite 8 - Ersteller: Stefan W. Lambert

2.2 Konfiguration 2.2.1 Server-Zertifikate und Keys generieren Sicherheitskopie der Datei 'vars' im Verzeichnis '/etc/openvpn/easy-rsa2' erstellen root@cubienas:~# cd /etc/openvpn/easy-rsa2 root@cubienas:/etc/openvpn/easy-rsa2# cp vars vars.org Datei 'vars' anpassen root@cubienas:/etc/openvpn/easy-rsa2# nano vars Folgende Einstellungen müssen in der Datei an das Heimnetzwerk angepasst werden export KEY_COUNTRY="US" export KEY_PROVINCE="CA" export KEY_CITY="SanFrancisco" export KEY_ORG="Fort-Funston" export KEY_EMAIL="me@myhost.mydomain" export KEY_OU="MyOrganizationalUnit" export KEY_CN="CommonName" export KEY_NAME="EasyRSA" Geänderte Einstellungen für das Szenario in diesem Howto export KEY_COUNTRY="DE" export KEY_PROVINCE="Hessen" export KEY_CITY="Frankfurt" export KEY_ORG="MeinVPN" export KEY_EMAIL="admin@MeinVPN.de" export KEY_OU="MeinVPN" export KEY_NAME="MeinVPN" Anmerkung: Die Angaben sind beliebig Ab Ubuntu 14.04 muss folgende Einstellung der Datei hinzugefügt werden export KEY_ALTNAMES="Irgendwas" Zusätzliche Einstellung für das Szenario in diesem Howto export KEY_ALTNAMES="AlternativVPN" Stand: 02.02.15 - Seite 9 - Ersteller: Stefan W. Lambert

Inhalt der Datei 'vars' nach der Anpassung # easy-rsa parameter settings # NOTE: If you installed from an RPM, # don't edit this file in place in # /usr/share/openvpn/easy-rsa -- # instead, you should copy the whole # easy-rsa directory to another location # (such as /etc/openvpn) so that your # edits will not be wiped out by a future # OpenVPN package upgrade. # This variable should point to # the top level of the easy-rsa # tree. export EASY_RSA="`pwd`" # # This variable should point to # the requested executables # export OPENSSL="openssl" export PKCS11TOOL="pkcs11-tool" export GREP="grep" # This variable should point to # the openssl.cnf file included # with easy-rsa. export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA` # Edit this variable to point to # your soon-to-be-created key # directory. # # WARNING: clean-all will do # a rm -rf on this directory # so make sure you define # it correctly! export KEY_DIR="$EASY_RSA/keys" # Issue rm -rf warning echo NOTE: If you run./clean-all, I will be doing a rm -rf on $KEY_DIR # PKCS11 fixes export PKCS11_MODULE_PATH="dummy" export PKCS11_PIN="dummy" # Increase this to 2048 if you # are paranoid. This will slow # down TLS negotiation performance # as well as the one-time DH parms # generation process. export KEY_SIZE=2048 # In how many days should the root CA key expire? export CA_EXPIRE=3650 Stand: 02.02.15 - Seite 10 - Ersteller: Stefan W. Lambert

# In how many days should certificates expire? export KEY_EXPIRE=3650 # These are the default values for fields # which will be placed in the certificate. # Don't leave any of these fields blank. export KEY_COUNTRY="DE" export KEY_PROVINCE="Hessen" export KEY_CITY="Frankfurt" export KEY_ORG="MeinVPN" export KEY_EMAIL="admin@MeinVPN.de" export KEY_OU="MeinVPN" # X509 Subject Field export KEY_NAME="MeinVPN" # PKCS11 Smart Card # export PKCS11_MODULE_PATH="/usr/lib/changeme.so" # export PKCS11_PIN=1234 # If you'd like to sign all keys with the same Common Name, uncomment the KEY_CN export below # You will also need to make sure your OpenVPN server config has the duplicate-cn option set export KEY_CN="DynDNS-Domainname" # # Ergänzung export KEY_ALTNAMES="AlternativVPN" Anmerkung für die Bedienung des Texteditors: zum Speichern: gleichzeitiges Drücken der <strg>-taste und 'o' zum Schließen des Editors: gleichzeitiges Drücken der <strg>-taste und 'x' Überprüfen ob das Verzeichnis '/etc/openvpn/easy-rsa2/keys' vorhanden ist und gegebenenfalls anlegen root@cubienas:/etc/openvpn/easy-rsa2# ls keys (wenn nichts angezeigt wird mit 'mkdir keys' anlegen) Stand: 02.02.15 - Seite 11 - Ersteller: Stefan W. Lambert

'Master Certificate Authority (CA) ' erstellen root@cubienas:/etc/openvpn/easy-rsa2# source vars root@cubienas:/etc/openvpn/easy-rsa2#./clean-all root@cubienas:/etc/openvpn/easy-rsa2#./build-ca Generating a 2048 bit RSA private key..+++...+++ writing new private key to 'ca.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) [DE]: State or Province Name (full name) [Hessen]: Locality Name (eg, city) [Frankfurt]: Organization Name (eg, company) [MeinVPN]: Organizational Unit Name (eg, section) [MeinVPN]: Common Name (eg, your name or your server's hostname) [MeinVPN]: mustermann.dyndns.de Name [MeinVPN]: Email Address [admin@meinvpn.de]: Anmerkung: Alle Abfragen außer 'Common Name' werden mit der <Return>-Taste bestätigt. Bei 'Common Name' muss der Dynamic DNS-Name des Heimnetzwerkes (im Beispiel 'mustermann.dyndns.de') eingetragen werden Stand: 02.02.15 - Seite 12 - Ersteller: Stefan W. Lambert

Serverzertifikat & Key erzeugen root@cubienas:/etc/openvpn/easy-rsa2#./build-key-server MeinVPNServer Generating a 2048 bit RSA private key...+++...+++ writing new private key to 'MeinVPNServer.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) [DE]: State or Province Name (full name) [Hessen]: Locality Name (eg, city) [Frankfurt]: Organization Name (eg, company) [MeinVPN]: Organizational Unit Name (eg, section) [MeinVPN]: Common Name (eg, your name or your server's hostname) [MeinVPNServer]: mustermann.dyndns.de Name [MeinVPN]: Email Address [admin@meinvpn.de]: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: Using configuration from /etc/openvpn/easy-rsa2/openssl-1.0.0.cnf Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryname :PRINTABLE:'DE' stateorprovincename :PRINTABLE:'Hessen' localityname :PRINTABLE:'Frankfurt' organizationname :PRINTABLE:'MeinVPN' organizationalunitname:printable:'meinvpn' commonname :PRINTABLE:'group64-home.dynvpn.de' name :PRINTABLE:'MeinVPN' emailaddress :IA5STRING:'admin@MeinVPN.de' Certificate is to be certified until Dec 2 11:10:09 2024 GMT (3650 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated Anmerkung: Der Name des Zertikat (im Beispiel 'MeinVPNServer' ist beliebig. Alle Abfragen (auch die Abfrage 'Challenge Passwort') außer 'Common Name' werden mit der <Return>-Taste bestätigt. Bei 'Common Name' muss der Dynamic DNS-Name des Heimnetzwerkes (im Beispiel 'mustermann.dyndns.de') eingetragen werden Stand: 02.02.15 - Seite 13 - Ersteller: Stefan W. Lambert

Diffie Hellmann Werte (für die Kryptographie-Funktionen des VPNs nötig) berechnen root@cubienas:/etc/openvpn/easy-rsa2#./build-dh Generating DH parameters, 2048 bit long safe prime, generator 2 This is going to take a long time... +... +......+...+... +......+... +...+... +... +......+...+.. +... +...++*++* Anmerkung: Der Vorgang kann eine Stunde dauern. Nicht die Geduld verlieren!!! Zertifikate und Schlüssel von '/etc/openvpn/easy-rsa2/keys' nach /etc/openvpn/ kopieren root@cubienas:/etc/openvpn/easy-rsa2# cd keys/ root@cubienas:/etc/openvpn/easy-rsa2/keys# cp dh2048.pem MeinVPNServer.crt MeinVPNServer.key ca.crt /etc/openvpn/ Zusätzlichen Schlüssel für 'HMAC' Firewall (erhöhte Verbindungssicherheit) im Verzeichnis '/etc/openvpn' erzeugen root@cubienas:/etc/openvpn/easy-rsa2/keys# cd /etc/openvpn root@cubienas:/etc/openvpn/# openvpn genkey secret ta.key Für OpenVPN einen eigenen Systembenutzer und Systemgruppe anlegen root@cubienas:/etc/openvpn/# addgroup --system --no-create-home --disabled-login --group openvpn Adding group `openvpn' (GID 120)... Done. root@cubienas:/etc/openvpn/# adduser --system --no-create-home --disabled-login --ingroup openvpn openvpn Adding system user `openvpn' (UID 112)... Adding new user `openvpn' (UID 112) with group `openvpn'... Not creating home directory `/home/openvpn'. Stand: 02.02.15 - Seite 14 - Ersteller: Stefan W. Lambert

2.2.2 Server Konfiguration anpassen Original-Konfigurationsdatei sichern root@cubienas:/etc/openvpn/# cp server.conf server.conf.org Konfigurationsänderungen vornehmen root@cubienas:/etc/openvpn/# nano server.conf Anmerkung: Die nachfolgend aufgeführte Konfigurationsdatei ist 'verkürzt', enthält jedoch alle notwendigen Einstellungen zum Betrieb von OpenVPN in der unter 'Punkt 0 (Vorbemerkung)' beschriebenen Beispielszenario. Die Datei enthält in den Kommentar-Zeilen ausführliche Erläuterungen zu den Konfigurationseinstellungen. Die betreffenden Einstellungen müssen an die Gegebenheiten im eigenen Heimnetzwerk angepasst werden. Falls gewünscht kann die Datei unter folgendem Link heruntergeladen werden. http://dl.stefanius.de/cubie/software/openvpn/server.conf Inhalt der Datei '/etc/openvpn/server.conf' # genutzter Protokolltyp # TCP od. UDP proto udp # TCP/IP-Port port 1194 # tun oder tap Device # tun = erstellen eines IP-Tunnels # tap = erstellen eines Ethernet Tunnels dev tun # Zugriffspfad zu den Zertifikaten ca /etc/openvpn/ca.crt cert /etc/openvpn/meinvpnserver.crt key /etc/openvpn/meinvpnserver.key # Dffie Hellmann Parameter dh /etc/openvpn/dh2048.pem # VPN Netzwerk + Netzwerkmaske server 10.8.0.0 255.255.255.0 # Clients bekommen immer die selbe IP-Adresse ifconfig-pool-persist ipp.txt Stand: 02.02.15 - Seite 15 - Ersteller: Stefan W. Lambert

# VPN-Clients dürfen auf alle Rechner im # Heimnetzwerk zugreifen (an eigenes Heimnetzwerk anpassen) # Route ins interne Netzwerk push "route 192.168.1.0 255.255.255.0" # # DNS-Server des Heimnetzwerkes (an eigenes Heimnetzwerk anpassen) push "dhcp-option DNS 192.168.1.2" # # 2. DNS-Server (beliebig, im Beispiel ein Google DNS-Server) push "dhcp-option DNS 8.8.8.8" # # gesamten Client-Traffic über Heimnetz leiten # falls nicht gewünscht die folgende Zeile mit '#'-Zeichen auskommentieren push "redirect-gateway def1 bypass-dhcp" # VPN-Clients können sich gegenseitig 'sehen' client-to-client # Test der VPN-Verbindung mit 'VPN-Ping' mit max. Wartezeit 120sec. keepalive 10 120 # Extra Verbindungssicherheit per 'HMAC-Firewall' # mit 'ta.key' # muss sowohl auf dem Server, wie auf den Clients vorhanden sein # Als zweiter Parameter muss # beim Server '0' # bei den Clients '1' # hinzugefügt werden tls-auth ta.key 0 # Komprimierung comp-lzo # max. Anzahl VPN-Clients max-clients 10 # Benutzer & Gruppe unter dem der openvpn Daemon läuft user openvpn group openvpn # The persist options will try to avoid # accessing certain resources on restart # that may no longer be accessible because # of the privilege downgrade. persist-key persist-tun # Status-Datei bestimmen status /var/log/openvpn-status.log 30 # 'Log-Level' verb 3 Die markierten Textzeilen müssen an die Gegebenheiten im eigenen Heimnetzwerk angepasst werden. Stand: 02.02.15 - Seite 16 - Ersteller: Stefan W. Lambert

2.2.3 Routing zwischen OpenVPN und Heimnetzwerk aktivieren und konfigurieren Wichtige Anmerkung: In dem unter 'Punkt 0 (Vorbemerkung)' beschriebenen Beispielszenario können die VPN Clients auf alle Rechner und Services im Heimnetzwerk zugreifen. Damit dies funktioniert müssen die Datenpakete vom OpenVPN-Netzwerk (IP-Bereich 10.8.0.0/24) ins Heimnetzwerk (IP-Bereich 192.168.1.0/24) und umgekehrt, geroutet werden. Die notwendigen Arbeitsschritte dazu werden nachfolgend beschriebenen Falls der VPN-Clients ausschließlich auf den OpenVPN-Server zugreifen sollen, darf keiner der unter 2.2.3 aufgeführten Arbeitsschritte ausgeführt werden. IP-Forwarding aktivieren root@cubienas:/etc/openvpn/# nano /etc/sysctl.conf => in der Datei #net.ipv4.ip_forward=1 ändern in net.ipv4.ip_forward=1 Eine IP-Tables Regel erstellen root@cubienas:/etc/openvpn/# iptables -I FORWARD -i tun0 -o br0 -s 10.8.0.0/24 -d 192.168.64.0/24 -m conntrack --ctstate NEW -j ACCEPT Wichtige Anmerkung: Diese Anleitung wurde für einem Cubietruck mit dem HomeNAS V4.03n SD-Card Image erstellt. In diesem Image sind die Netzwerkschnittstellen eth0 und wlan0 zur Netzwerkbrücke br0 zusammengefasst. Bei der Verwendung eines anderen SD-Card Images oder einem anderen Rechnersystem muss die Bezeichung der Netzwerkschnittstelle 'br0' gegebenenfalls z. B. durch 'eth0' ersetzt werden. Dies gilt ebenfalls für die farblich markierten Befehlsoptionen. Stand: 02.02.15 - Seite 17 - Ersteller: Stefan W. Lambert

Die IP-Tables Regel in eine Datei speichern root@cubienas:/etc/openvpn/# iptables-save > /etc/iptables-vpn.up.rules Im Verzeichnis '/etc/network/if-pre-up.d' die Datei 'iptables' erstellen root@cubienas:/etc/openvpn/# nano /etc/network/if-pre-up.d/iptables Inhalt der Datei #!/bin/sh iptables-restore < /etc/iptables-vpn.up.rules exit 0 Die IP-Tables Regel beim Hochfahren des Rechners automatisch laden root@cubienas:/etc/openvpn/# chmod +x /etc/network/if-pre-up.d/iptables Im Router (Gateway) des Heimnetwerkes eine statische Route für das Netzwerk 10.8.0.0/24 zum OpenVPN Server mit folgenden Angaben einrichten IP-Netzwerk 10.8.0.0 Netzwerkmaske 255.255.255.0 Gateway 192.168.1.4 (OpenVPN Server, an eigenes Heimnetzwerk anpassen) Bei einer FRITZ!Box wird die statische Route unter 'Heimnetz Netzwerk Reiter 'Netzwerkeinstellungen'' konfiguriert Stand: 02.02.15 - Seite 18 - Ersteller: Stefan W. Lambert

2.2.4 Portweiterleitung (UDP 1194) am Router einrichten Als letzter Arbeitsschritt wird vom Router (Gateway) eine Portweiterleitung (UTP Port 1194) zum OpenVPN Server eingerichtet. Bei einer FRITZ!Box befindet sich die benötigte Konfigurationsoption unter 'Internet Freigaben Reiter 'Portfreigaben'' 2.2.5 Reboot ausführen root@cubienas:/etc/openvpn/# reboot Neu anmelden (an der Konsole oder per ssh) und per sudo -i zum Benutzer root wechseln Welcome to CubieNAS V4.3n based on Ubuntu 14.04.1 LTS (GNU/Linux 3.4.104- sun7i+ armv7l) * Documentation: https://help.ubuntu.com/ Last login: Mon Oct 13 16:21:03 2014 from akl14zorin.example.com linaro@cubienas:~$ sudo -i Überprüfen ob der OpenVPN-Server läuft root@cubienas:~# service openvpn status * VPN 'server' is running Der OpenVPN-Server läuft => alles ok. In das Verzeichnis '/etc/openvpn' wechseln root@cubienas:~# cd /etc/openvpn Stand: 02.02.15 - Seite 19 - Ersteller: Stefan W. Lambert

3. OpenVPN Client Konfigurationsdateien erstellen 3.1 Client-Zertifikate und Keys generieren Anmerkung: Jeder OpenVPN-Client Rechner benötigt ein eigenes Zertifikat und Key. Der Name des Zertifikats (im Beispiel 'Win7Client' und 'LinuxClient' ist frei wählbar Ins Verzeichnis '/etc/openvpn/easy-rsa2' wechseln root@cubienas:/etc/openvpn/# cd easy-rsa2 Zertifikat für Client 'Win7Client' erstellen root@cubienas:/etc/openvpn/easy-rsa2# source vars NOTE: If you run./clean-all, I will be doing a rm -rf on /etc/openvpn/easyrsa2/keys root@cubienas:/etc/openvpn/easy-rsa2#./build-key Win7Client Generating a 2048 bit RSA private key...+++...+++ writing new private key to 'Win7Client.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) [DE]: State or Province Name (full name) [Hessen]: Locality Name (eg, city) [Frankfurt]: Organization Name (eg, company) [MeinVPN]: Organizational Unit Name (eg, section) [MeinVPN]: Common Name (eg, your name or your server's hostname) [Win7Client]: Name [MeinVPN]: Email Address [admin@meinvpn.de]: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: Using configuration from /etc/openvpn/easy-rsa2/openssl-1.0.0.cnf Check that the request matches the signature Signature ok Stand: 02.02.15 - Seite 20 - Ersteller: Stefan W. Lambert

The Subject's Distinguished Name is as follows countryname :PRINTABLE:'DE' stateorprovincename :PRINTABLE:'Hessen' localityname :PRINTABLE:'Frankfurt' organizationname :PRINTABLE:'MeinVPN' organizationalunitname:printable:'meinvpn' commonname :PRINTABLE:'Win7Client' name :PRINTABLE:'MeinVPN' emailaddress :IA5STRING:'admin@MeinVPN.de' Certificate is to be certified until Dec 2 12:00:34 2024 GMT (3650 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated Anmerkung: Der Name des Zertikats (im Beispiel 'Win7Client' ist beliebig. Alle Abfragen (auch die Abfrage 'Challenge Passwort') werden mit der <Return>-Taste bestätigt. Die Abfragen 'Sign the certificate? [y/n]' und '1 out of 1 certificate requests certified, commit?' werden jeweils mit 'y' bestätigt Zertifikat für Client 'LinuxClient' erstellen root@cubienas:/etc/openvpn/easy-rsa2#./build-key LinuxClient Generating a 2048 bit RSA private key...+++...+++ writing new private key to 'LinuxClient.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) [DE]: State or Province Name (full name) [Hessen]: Locality Name (eg, city) [Frankfurt]: Organization Name (eg, company) [MeinVPN]: Organizational Unit Name (eg, section) [MeinVPN]: Common Name (eg, your name or your server's hostname) [LinuxClient]: Name [MeinVPN]: Email Address [admin@meinvpn.de]: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: Stand: 02.02.15 - Seite 21 - Ersteller: Stefan W. Lambert

Using configuration from /etc/openvpn/easy-rsa2/openssl-1.0.0.cnf Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryname :PRINTABLE:'DE' stateorprovincename :PRINTABLE:'Hessen' localityname :PRINTABLE:'Frankfurt' organizationname :PRINTABLE:'MeinVPN' organizationalunitname:printable:'meinvpn' commonname :PRINTABLE:'LinuxClient' name :PRINTABLE:'MeinVPN' emailaddress :IA5STRING:'admin@MeinVPN.de' Certificate is to be certified until Dec 2 12:00:34 2024 GMT (3650 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated Folgende Dateien wurden im Verzeichnis '/etc/openvpn/easy-rsa2/keys' erstellt: Win7Client.csr Win7Client.crt Win7Client.key LinuxClient.csr LinuxClient.crt LinuxClient.key Stand: 02.02.15 - Seite 22 - Ersteller: Stefan W. Lambert

3.2 Client-Konfigurationsdateien erstellen Ebenso wie der OpenVPN Server benötigen auch die OpenVPN Clients eine Konfigurationsdatei. Die hat jedoch, je nach verwendetem Betriebssystem unterschiedliche Inhalte für Windows und Linux/Android Clients. Anmerkung dazu Wie w. o. festgelegt, wird der gesamte Netzwerkverkehr des Clients bei aktivierten VPN- Verbindung über den VPN-Server geleitet. Um dies zu gewährleisten enthält die Client- Konfigurationsdatei für einen Windows-Client zusätzliche Einstellungen, die für Linux/Android Clients nicht benötigt werden. Die Konfigurationsdateien für Linux und Android-Clients sind identisch. Die nachfolgend aufgeführten OpenVPN Client-Konfigurationsdateien können unter folgenden Links heruntergeladen werden. Für Linux/Android-Clients http://dl.stefanius.de/cubie/software/openvpn/linuxclient.ovpn Für Windows-Clients http://dl.stefanius.de/cubie/software/openvpn/win7client.ovpn Zum Erstellen der Datei 'LinuxClient.ovpn' folgendermaßen vorgehen Textdatei mit 'nano' erstellen root@cubienas:/etc/openvpn/easy-rsa2# cd keys root@cubienas:/etc/openvpn/easy-rsa2/keys# nano LinuxClient.ovpn Inhalt der Datei dev tun client proto udp remote mustermann.dynvpn.de 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert Linux.Client.crt key Linux.Client.key tls-auth ta.key 1 comp-lzo verb 3 Die markierten Einstellungen müssen an die Gegebenheiten im Heimnetzwerk angepasst werden Anmerkung für die Bedienung des Texteditors: zum Speichern: gleichzeitiges Drücken der <strg>-taste und 'o' zum Schließen des Editors: gleichzeitiges Drücken der <strg>-taste und 'x' Stand: 02.02.15 - Seite 23 - Ersteller: Stefan W. Lambert

Zum Erstellen der Datei 'Win7Client.ovpn' folgendermaßen vorgehen Textdatei mit 'nano' erstellen root@cubienas:/etc/openvpn/easy-rsa2/keys# nano Win7Client.ovpn Inhalt der Datei dev tun client proto udp remote mustermann.dynvpn.de 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert Win7Client.crt key Win7Client.key tls-auth ta.key 1 comp-lzo verb 3 route-method exe route-delay 30 route-metric 512 route 0.0.0.0 0.0.0.0 Die markierten Einstellungen müssen an die Gegebenheiten im Heimnetzwerk angepasst werden Stand: 02.02.15 - Seite 24 - Ersteller: Stefan W. Lambert

3.2 Client-Konfigurationsdateien zusammenfassen Als letzter Arbeitsschritt werden alle benötigten Konfigurationsdateien separiert für jeden Client in unterschiedlichen Verzeichnissen zusammengefasst. Wichtige Anmerkung!!! Dabei gilt es folgenden Sicherheitsaspekt zu beachten. Die OpenVPN-Clients authentifizieren sich am OpenVPN-Server ausschließlich per Zertifikat. Es wird kein Passwort abgefragt. Aus dem Grund sollten die Zertifikate und Schlüsseldateien vor dem Zugriff unberechtigter Personen geschützt werden. Dazu wird im '/root'-verzeichnis für jeden Client ein separates Unterverzeichnis erstellt und die OpenVPN-Client Konfigurationsdateien dorthin kopiert bzw. verschoben. Zur Installation eines VPN-Clientrechners hat der Anwender die Wahl die Konfigurationsdateien 'so wie sie sind' oder mit einem Archivierungsprogramm 'gepackt', auf einen externen Datenträger zu übertragen. Auch hier gilt es den o. g. Sicherheitsaspekt zu beachten. So ist das Packen der Konfigurationsdateien (inkl. Passwortschutz) sicher die erste Wahl. Letztendlich bleibt das jedoch jedem Anwender selbst überlassen. Dieses Dokument beschreibt lediglich die Arbeitschritte zum kopieren/verschieben der benötigten Konfigurationsdateien nach '/root'. Weitergehende Informationen zum Thema 'archivieren und Passwortschutz' sind unter folgenden Links zu finden : http://de.wikipedia.org/wiki/liste_von_datenkompressionsprogrammen http://wiki.ubuntuusers.de/archivmanager?redirect=no Zur Konfiguration des/der OpenVPN-Clients werden folgende Dateien benötigt Für Windows ca.crt (im Verzeichnis /etc/openvpn) Win7Client.crt (im Verzeichnis /etc/openvpn/easy-rsa2/keys) Win7Client.key (im Verzeichnis /etc/openvpn/easy-rsa2/keys) Win7Client.ovpn (im Verzeichnis /etc/openvpn/easy-rsa2/keys) ta.key (im Verzeichnis /etc/openvpn) Für Linux/Android ca.crt (im Verzeichnis /etc/openvpn) LinuxClient.crt (im Verzeichnis /etc/openvpn/easy-rsa2/keys) LinuxClient.key (im Verzeichnis /etc/openvpn/easy-rsa2/keys) LinuxClient.ovpn (im Verzeichnis /etc/openvpn/easy-rsa2/keys) ta.key (im Verzeichnis /etc/openvpn) Stand: 02.02.15 - Seite 25 - Ersteller: Stefan W. Lambert

Auszuführende Arbeitsschritte Erstellung der 'Konfigurationsverzeichnissen' unter '/root' root@cubienas:/etc/openvpn/easy-rsa2/keys# mkdir /root/vpn-win7client root@cubienas:/etc/openvpn/easy-rsa2/keys# mkdir /root/vpn- LinuxClient Verschieben der Konfigurationsdateien für den 'Win7Client' root@cubienas:/etc/openvpn/easy-rsa2/keys# mv Win7Client. {crt,key,ovpn} /root/vpn-win7client Verschieben der Konfigurationsdateien für den 'LinuxClient' root@cubienas:/etc/openvpn/easy-rsa2/keys# mv LinuxClient. {crt,key,ovpn} /root/vpn-linuxclient Wechsel in das Verzeichnis '/etc/openvpn' root@cubienas:/etc/openvpn/easy-rsa2/keys# cd /etc/openvpn Kopieren der Dateien 'ca.crt' und 'ta.key' für den 'Win7Client' root@cubienas:/etc/openvpn# cp ca.crt ta.key /root/vpn-win7client Kopieren der Dateien 'ca.crt' und 'ta.key' für den 'LinuxClient' root@cubienas:/etc/openvpn# cp ca.crt ta.key /root/vpn-linuxclient Damit sind alle benötigten OpenVPN-Client Konfigurationsdateien zusammengefasst, die Installation der OpenVPN-Clients kann beginnen. Stand: 02.02.15 - Seite 26 - Ersteller: Stefan W. Lambert