Schlagwort-Archive: VPN Tunnel, virtuelles Privates Netzwerk

Der sich daraus ergebende Nutzen eines VPNs kann je nach verwendetem VPN-Protokoll durch eine Verschlüsselung ergänzt werden, die eine abhör- und manipulationssichere Kommunikation zwischen den VPN-Partnern ermöglicht.

Synology OpenVPN Installation

OpenVPN mit Synology DiskStation Installation

Wer eine Synology DiskStation oder RackStation sein eigen nennen darf, dem öffnet sich ein weites Feld an Einsatzmöglichkeiten. Synology NAS sind längst nicht mehr nur Datenspeicher im Netzwerk, viele weitere Anwendungsmöglichkeiten liefert der Hersteller gleich mit, zusätzlich können weitere Pakete kostenlos nachgeladen werden.

VPN (Virtual Privat Network) erfreut sich einer immer breiteren Nutzung, hier kommen Synology NAS als Router und VPN Server gerade richtig, es bietet sich das verbreitete OpenVPN an, um beispielsweise für arbeiten im HomeOffice, oder als Privat Cloud um von überall auf seine Daten zugreifen zu können, es ergeben sich unzählige weitere Anwendungsmöglichkeiten. In diesem Beitrag geht es um den Einsatz und der Anwendung von OpenVPN, der weit verbreitete und kostenlose VPN Client ist für zahlreiche System verfügbar, neben Windows so auch für macOS, iOS, Linux und Android Geräte. OpenVPN ist eine freie Software zum Aufbau eines Virtuellen Privaten Netzwerkes über eine verschlüsselte TLS-Verbindung.

OpenVPN Server Installation Synology DSM

Zu einem VPN Client braucht es ein VPN Server. Im ersten Schritt erfolgt die Installation des OpenVPN Server aus dem Synology DSM Paket-Zentrum. Mit klick oben links auf das Icon im Hauptmenü, im Paket Zentrum wird in das Suchfeld vpn server eingegeben.

OpenVPN mit Synology DiskStation Installation
Abbildung: Synology DSM Paket-Zentrum

Über den Button Installieren wird dann das Paket Installiert.

OpenVPN mit Synology DiskStation Installation

Nun mit klick auf öffnen geht es zu den VPN Server Einstellungen.

OpenVPN mit Synology DiskStation Installation

Das Fenster VPN Server Überblick erscheint.

OpenVPN mit Synology DiskStation Installation

Nun gehen wir zu Allgemeine Einstellungen für die Konfiguration, hier wählen wir lokale Benutzer, die bereits vorhandenen Benutzer sowie nachträglich erstellte Benutzer sollen automatisch zur Nutzung von OpenVPN berechtigt werden. Mit Authentifizierung gegen Windows AD können bei Kontotyp Domainbenutzer gewählt werden.

OpenVPN mit Synology DiskStation Installation

Dann im unteren Abschnitt zu OpenVPN gehen, die Optionen für Komprimierung – und Clients den Server-LAN Zugriff erlauben aktivieren, dann bei der Checkbox den OpenVPN-Server aktivieren und auf Übernehmen klicken.

OpenVPN mit Synology DiskStation Installation

Die Voreinstellungen können übernommen werden, der UDP Port 1194 muss auf der Firewall mit NAT mapping zum NAS konfiguriert werden. Hier bei FortiGate die Virtual IP mit zugehörender Policy.

OpenVPN mit Synology DiskStation Installation
Abbildung: Virtual IP OpenVPN
OpenVPN mit Synology DiskStation Installation
Abbildung: Policy OpenVPN

Mit klick auf Konfigurationsdateien exportieren, werden für den Client im nächsten Schritt die Dateien erstellt und heruntergeladen.

OpenVPN Client Installation auf Windows

OpenVPN für Windows kann von der Community Webseite hier heruntergeladen werden, bei Windows 10 mit Doppelklick auf OpenVPN-2.5.0-I601-amd64.msi das Setup starten.

OpenVPN Setup Windows

Mit Customize geht es durch den Setup-Assistenten, da hier nur die Client Komponenten benötigt werden, selektieren wir die Auswahl.

OpenVPN Setup Customize

OpenVPN Setup abschliessen.

OpenVPN Installing Completed
OpenVPN mit Synology DiskStation Installation

OpenVPN starten

openvpn_systry

Ein Blick in die Taskbar zeigt das OpenVPN Symbol

Die zuvor exportierte Konfigurationsdatei openvpn.zip entpacken, es werden die Dateien ca.crt, README.txt und VPNConfig.ovpn extrahiert.

Die Datei VPNConfig.ovpn muss editiert werden, dazu öffnet man diese in Notepad und ändert Zeile 4 bei YOUR_SERVER_IP mit der Public IP Adresse des Routers auf diesem das NAT mapping ist.

OpenVPN mit Synology DiskStation Installation

Nach speichern von VPNConfig.ovpn wird die Konfiguration importiert.

Mit Rechtsklick über dem Icon im Systemtry öffnet sich das Kontextmenü, aus diesem man Datei importieren wählt.

OpenVPN mit Synology DiskStation Installation
Abbildung: OpenVPN Verbindung importieren

 Tip! Wenn man die Konfigurationsdatei VPNConfig.ovpn umbenennt, erscheint zum Verbinden der entsprechende Name als Ziel.

Mit Verbinden aus dem Kontextmenü wird man zur Eingabe von Benutzer und Passwort aufgefordert, es ist dies der Benutzer auf dem Synology NAS.

OpenVPN mit Synology DiskStation Installation Windows
Abbildung: OpenVPN Verbindung



Bei erfolgreicher Verbindung erscheint das Symbol in grün.

OpenVPN auf macOS mit Tunnelblick

Tunnelblick ist ein Verwaltungsprogramm für OpenVPN unter macOS. Es wird in die Taskleiste eingebunden, von wo aus sich Verbindungen per Mausklick starten lassen. OpenVPN und TUN-Treiber sind im Paket enthalten. Tunnelblick ist freie Software und kann hier heruntergeladen werden.

OpenVPN mit Synology DiskStation Installation macOS
Abbildung: macOS Tunnelblick Installation

OpenVPN Installation auf Ubuntu

Die einfachste Möglichkeit den OpenVPN Client zu installieren, ist die Verwendung des Paketverwaltungssystems der jeweiligen Linux-Distribution. Führe dazu einer der folgenden Befehle aus (als root):

# RedHat/CentOS/Fedora
[root@fedora ~]# yum install openvpn
# Debian/Ubuntu
[root@debian ~]# apt-get install openvpn

Ausführen des OpenVPN-Clients mit der heruntergeladenen Konfigurationsdatei, unter verwendung des Argument -config, um die Konfigurationsdatei zu übergeben:

$ openvpn -config VPNConfig.ovpn

Ebenfalls kann die Verbindung auch über ein GUI Client hergestellt werden, das OpenVPN GUI aus der Shell installieren:

$ sudo apt-get install network-manager-openvpn-gnome

Nun kann durch ein Klick auf das Netzwerksymbol – VPN Verbindungen – VPN konfigurieren der Verbindungsmanager aufgerufen werden.

OpenVPN mit Synology DiskStation Installation Ubuntu
Abbildung: OpenVPN GUI Ubuntu

Mit einem Klick auf HinzufügenGespeicherte VPN-Konfiguration importieren – Erstellt man eine neue VPN Verbindung. Im nächsten Schritt importieren wir die zuvor heruntergeladene Konfigurationsdatei VPNConfig.ovpn. Die Verbindung kann nun aus der Taskleiste gestartet werden.

OpenVPN Linux Mint

Bei Linux Mint mit Cinnamon desktop klickt man in der Taskleiste auf das Netzwerk Icon und geht auf Netzwerkeinstellungen.

OpenVPN mit Synology DiskStation Installation Linux Mint
OpenVPN mit Synology DiskStation Installation Linux Mint

Auf + klicken um eine neue Netzwerkverbindung zu erstellen.

OpenVPN mit Synology DiskStation Installation Linux Mint

Gespeicherte VPN-Konfiguration importieren aus der Datei VPNConfig.ovpn. Nach eingabe von Benutzer und Passwort kann die gespeicherte Verbindung in der Taskleiste gestartet werden.

SSH Tunnel Reverse Port forwarding

VPN Tunnel mit SSH Port Weiterleitung

SSH ist bei Linux von Beginn an dabei, auch Apple hat Secure Shell in macOS integriert, und Microsoft verpasste ebenfalls OpenSSH unter Windows 10 ab 1803 und Server 2019 als optio­nales Feature. Dazu gibt es SSH-Tunnel und SSH Port forwarding von den seit geraumer Zeit bekannten Tools wie PuTTY und KiTTY. Warum also SSH nicht auch als VPN Tunnel nutzen, dabei stehen nützliche Möglichkeiten für den Einsatz zur Verfügung, beispielsweise wenn ein VPN Tunnel nicht an der Firewall terminiert werden soll, oder wenn in Unternehmensnetzwerke zusätzliche Software nicht installiert werden kann, oder die rechte dazu fehlen. Ein SSH Reverse Tunnel ist immer dann hilfreich, wenn es Zugriff auf ein Remote Computer geben soll, dieser hinter einer Firewall steht.

Anwendung von SSH als VPN Tunnel und Port forwarding mit OpenSSH auf Linux, macOS und Windows

SSH Tunnel zu Remote Host B

Bei diesem Beispiel wird ein Tunnel von Host A zu Host B aufgebaut, Host B ist ein Webserver von diesem die Intranet Seite http://192.168.111.10 auf Host A geöffnet werden soll. Die einzige voraussetzung ist dabei, das es beim Router ein NAT Mapping über Port 22 zu Host B gibt, und das SSH auf jedem Host vorhanden ist.

SSH Tunnel zu Remote Host B
Abbildung: ssh tunnel host A to host B

Das Command im Linux Terminal auf Host A wie folgt ausführen:

$ ssh -NT -L 80:192.168.111.10:80 cherry@172.17.16.15 -p 45680

Auf Host A kann nun die Webseite http://localhost geöffnet werden. Der SSH Tunnel macht die Weiterleitung über TCP Port 80 auf Host B von 192.168.111.10 zum localhost 127.0.0.1 auf Host A, der externe Port ist 45680. Bei Host B authentifizieren wir mit Benutzer cherry.

Die Bedeutung der Parameter:
-L = Lokaler Port.
-N = kein Remote Command ausführen.
-p = Externer SSH Port (NAT Port bei Firewall).
-T = kein Terminal öffnen.

Auf dem Host B muss der SSH Daemon konfiguriert und aktiviert sein, in der Konfigurationsdatei /etc/ssh/sshd_config sind folgende Einstellungen erforderlich, diese bei vielen Linux distributionen der Standard ist.

# Force SSH Protocol 2
Protocol 2

#Turn on Privileged Separation for security
UsePrivilegeSeparation yes

#Deny root login
PermitRootLogin no

#Do not allow empty passwords
PermitEmptyPasswords no

# installations will only check .ssh/authorized_keys
AuthorizedKeysFile      .ssh/authorized_keys

# Forward my X Sessions
X11Forwarding yes
X11DisplayOffset 10

# I hate Motd displays
PrintMotd no

# It's alliivee
TCPKeepAlive yes

#AllowTcpForwarding yes

  Die mit # auskommentierten Zeilen sind default Werte, zB. #AllowTcpForwarding ist per default yes.

Als SSH Server eignen sich viele Geräte, die auf Linux und FreeBSD OS laufen, so auch Synology NAS, FreeNAS, FreePBX Distro, OpenWrt, Raspberry Pi (Raspbian) und nun auch Windows Server, um nur einige zu nennen.

SSH Tunnel zu Remote Host C

In diesem Beispiel wird ein SSH Tunnel von Host A zu Host C aufgebaut, Host C ist ein RDS-Terminalserver, Host B dient als Port forwarder.

In diesem Beispiel wird ein SSH Tunnel von Host A zu Host C aufgebaut
Abbildung: ssh tunnel host A to host C

Das Command im Linux Terminal auf Host A wie folgt ausführen:

$ ssh -NT -L 3389:192.168.111.10:3389 cherry@172.17.16.15 -p 43389

Die Remotedesktop Sitzung zu Host C wird über localhost auf Host A aufgebaut, durch drücken der Taste Win + R wird Ausführen geöffnet, dazu die Eingabe mstsc /v:localhost mit OK bestätigen.

 In diesem Beispiel wird der Standard TCP Port 3389 für RDP als interner sowie auch als externer Port verwendet. Es können alle unprivilegierte Ports (-L) höher als 1024 verwendet werden, kommt ein anderer Port als 3389 zur Anwendung, dann muss der Port zur ausführung an RDP übergeben werden, zB: mstsc /v:localhost:44389

Bei Host B muss der Kernel für IP forwarding aktiviert sein, das Command hierfür in der Shell als root ist:

$ net.ipv4.ip_forward = 1

Alternativ wird mit echo in der Shell Console das selbe bewirkt:

$ echo 1 > /proc/sys/net/ipv4/ip_forward

Den aktuellen IPv4 forward Status wie folgt abfragen:

$ sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

Mit 1 wird die aktivierung bestätigt, 0 gilt für die deaktivierung. Die Änderung ist nicht Boot persistent, damit nach dem nächsten start das IP forwarding wieder aktiv ist, editiert man mit nano oder mit sudo vi /etc/sysctl.conf

# Controls IP packet forwarding
net.ipv4.ip_forward = 1

Es empfiehlt sich zur Authentifizierung ein SSH Schlüssel zu verwenden, ein Schlüsselpaar kann wie folgt erzeugt werden:

$ ssh-keygen -f ~/.ssh/key_rsa -t rsa -b 4096

Den Public Key ~/.ssh/key_rsa.pub speichert man im Home Pfad des Benutzers, hier in diesem Beispiel auf dem Host B unter dem Pfad in der Datei ~/.ssh/authorized_keys, mehr dazu in diesem Artikel hier.

  Die Authentifizierung unter Verwendung von SSH Schlüssel ist nicht nur sicherer, es bieten sich weitere vorteile, Beispielweise wird der Anwender nicht aufgefordert ein Passwort eingeben zu müssen, auch lässt sich so der SSH Tunnel und weitere Commands aus einem Script ausführen.

SSH Tunnel unter macOS

Bei Apple macOS steht SSH erst nach der Aktivierung zur Verfügung, dies im Terminal wie folgt zur Ausführung kommt:

$ sudo systemsetup -setremotelogin on

Danach kann der SSH Tunnel unter macOS aufgebaut werden.

$ ssh -i ~/.ssh/key_rsa -NT -R 3389:192.168.111.11:3389 cherry@172.17.16.15 -p 43389

Mit dem Remote Desktop for Mac wird jetzt bei Gateway localhost eingetragen und die RDP Session aufgebaut, auf diese weise sind Terminalserver geschützt und nur über SSH erreichbar.

macOS bietet auch die möglichkeit zur automatisierung und nutzt dazu launchd und die launch system services, folgendes Script wird angelegt unter:
@/Library/LaunchDaemons/server.hostc.client.cherry.home.plist mit folgendem Inhalt:

<plist version="1.0">
   <dict>
   <key>Label</key>
   <string>server.hostc.client.cherry.home</string>
   <key>ProgramArguments</key>
   <array>
	  <string>ssh</string>
	  <string>-NTC</string>
	  <string>-o ServerAliveInterval=60</string>
	  <string>-o ExitOnForwardFailure=yes</string>
	  <string>-i</string>
	  <string>/Users/cherry/.ssh/key_rsa</string>
	  <string>-R 3389:192.168.111.11:3389</string>
	  <string>cherry@172.17.16.15</string>
          <string>-p 43389</string>
   </array>
   <key>UserName</key>
   <string>cherry</string>
   <key>RunAtLoad</key>
   <true>
   <key>KeepAlive</key>
   <true>
</true></true></dict>
</plist>

OpenSSH-Server Installation aus PowerShell

Bei Windows Server 2019 kann der OpenSSH-Server auch mit erhöhten Rechte aus der PowerShell als Administrator bereitgestellt werden.

PS C:\> Get-WindowsCapability -Online | ? name -like *OpenSSH.Server* | Add-WindowsCapability -Online
  Bei Windows 10 ist der OpenSSH Client in den Einstellungen zu finden, unter Apps & Features – Optionale Features – OpenSSH-Client.