pixel
Seite wählen

VPN-Einrichtung leicht gemacht

von | Dez 18, 2020 | NETWAYS

Ziel des IT Service Managements ist es, Nutzer*innen durch automatisierte Prozesse möglichst viel Arbeit abzunehmen. NETWAYS hat bereits vor geraumer Zeit auf die aktuelle Corona-Situation reagiert und alle Mitarbeitenden ins Home Office geschickt.

Um auch Zuhause weiterhin auf firmeninterne Adressen zugreifen zu können, ist ein VPN (Virtuelles Privates Netzwerk) nötig und die Mehrheit nutzt eine “openVPN”-Lösung, welche aufgrund unserer Netzgegebenheiten aber weniger leistungsstark, als ein “L2TP” abschneiden kann. Um den Kolleg*innen den Umstieg von openVPN auf L2TP zu erleichtern, haben wir es uns zum Ziel gesetzt, einen automatisierten Ablauf zu schaffen, welcher dem*r User*in im Grunde genommen ermöglicht, den VPN-Zugang lediglich per “Knopfdruck” auf dem eigenen Windows-Gerät zu installieren.

 

Die Umsetzung

Da wir uns auf einer Windows-Plattform bewegen, stand außer Frage, dass ein Powershell-Script benötigt wird, um unsere VPN-Verbindung in das System einzubinden. Microsoft bietet unter “docs.microsoft.com” eine wundervolle Dokumentation zum Thema Powershell an. Unter anderem kann man dort nach einzelnen “tags” suchen und sich die dazu passenden Funktionen samt Syntax anzeigen lassen. Und so habe ich nach kurzer Suche die Funktion “Add-VpnConnection” gefunden!

Schnell wurde mir klar, dass ich fast mein gesamtes Konzept in einer Zeile Powershell umsetzen konnte. Es ist möglich, die Funktion mit verschiedensten Parametern zu beeinflussen. Man kann zum Beispiel den Namen, Typ des VPNs, einen Pre-Shared-Key (PSK) und noch vieles mehr einbinden. Eine besondere Erwähnung meinerseits erhält an dieser Stelle der Parameter “-SplitTunneling”, welcher erlaubt, das VPN nur dann zu nutzen, wenn die Netzwerkressourcen auch wirklich benötigt werden. Beim Verbinden zu nicht-internen Internetdiensten werden die Standardrouten des Clients und Providers genutzt. Dieses Feature war für mich bei der herkömmlichen Einrichtung eines VPNs, unter der grafischen Oberfläche von Windows, nicht ersichtlich. Nachdem man die einzelnen Routen in das Script mit aufgenommen hat, funktioniert das Ganze auch problemlos.

 

Die Herausforderung

Nachdem ich das VPN Script getestet hatte und die Einrichtung ohne Hindernisse funktionierte, stellten sich mir zwei Fragen: Wie meldet sich der*die Endbenutzer*in mit seinem AD-Account in dem VPN an und wie lässt sich ein Powershellscript ausführen ohne Powershell nutzen zu müssen?

Das Problem mit dem User-Login löste sich beim Probieren von selbst: Sobald das VPN installiert ist und der*die Nutzer*in auf “Verbinden” drückt, startet Windows eine Benutzer/Passwortabfrage. Wenn man in der Funktion noch den Parameter “-RememberCredential” implementiert hat, werden die eingegebenen Daten automatisch gespeichert und aus dem Cache entnommen.

Bei dem Ausführen der .ps1 Powershell-Datei gab es für mich nun zwei Möglichkeiten: Es gibt eine Vielzahl an Konvertern, die eine .ps1-Datei in ein .exe Format umwandeln. Dabei könnte die Datei aber durch eventuelle Fremdsysteme laufen. Da ich einen PSK zur Authentifizierung in das Script eingebunden habe, entschied ich mich gegen diese Lösung. Dafür fiel meine Wahl auf die zweite Option, nämlich eine Batch-Datei (.bat) anzulegen, mit der man die .ps1 in Powershell ausführt.

 

In der .bat-Datei selbst befinden sich drei Komponenten

Der Pfad zu Powershell, in dem unsere Datei ausgeführt werden soll:

  • C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

Ein Kommando zum Ausführen:

  • executionpolicy bypass

Und dieser kryptische Name:

  • %~dp0%~n0.ps1

 

Diese Bezeichnung macht das Batch-Script zu einem dynamischen Script, welches, unabhängig von Location, ausgeführt werden kann ohne im eigentlichen Script etwas ändern zu müssen.

Wir haben zwei Batch-Variablen, die wir uns dafür zu Nutze machen. Mit “%~dp0 “ sucht man im aktuellen Pfad, in welchem die Batch ausgeführt wurde, nach dem Namen, den die Batch-Datei trägt (“%~n0”) . Da ich aber nicht die Batch-Datei selber öffnen möchte, nutze ich das “.ps1 “ Anhängsel unserer Powershell-Datei.

# Batch-Script zum Ausführen
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -executionpolicy bypass %~dp0%~n0.ps1

Und damit kommen wir zu den Voraussetzungen, die erfüllt sein müssen, damit die Batch- und Powershell-Datei funktionieren: Beide müssen denselben Namen tragen und sich im selben Verzeichnis befinden!

Fast geschafft! Am Ende lässt sich das Script einfach ausführen und kann – ohne weitere Eingaben in die Powershell/CMD – den VPN-Zugang anlegen. Die beiden Dateien müssten sich – wie oben beschrieben – nur im selben Pfad befinden und die Batch-Datei ausgeführt werden.

 

Das Script

#Add VPN

Add-VpnConnection -Name "L2TP-VPN" -Server_Address "Server_adresse" -TunnelType "L2tp" -EncryptionLevel "Required" -L2tpPsk "Generic_Key" -Force -RememberCredential -PassThru

#Setting Name
$MyVPNName = "L2TP-VPN"

#Call VPN via Name + SplitTunneling
Set-VpnConnection -Name $MyVPNName -SplitTunneling $TRUE;

#Routes
Add-VpnConnectionRoute -ConnectionName $MyVPNName -PassThru -DestinationPrefix IP.IP.IP.IP/Netzanteil #Beispiel-Route
André Paskowski
André Paskowski
Junior Systems Engineer

André startete im Herbst 2020 seine Ausbildung zum Fachinformatiker für Systemintegration im Bereich des NETWAYS IT Service Managements. Dort ist er zuständig für interne Angelegenheiten sowie Problembehebungen und Verbesserungen. Vor seiner IT-Ausbildung bei NETWAYS war André im sozialen Bereich der Erziehung tätig und hat zudem auch eine Ganztagsbetreuung geleitet. Wenn er nicht gerade Games am PC oder Retro-Konsolen spielt, bemalt und baut er Modellfiguren. Zudem ist er stolzer Besitzer einiger Reptilien, denen er ein liebevolles...
Mehr Beiträge zum Thema NETWAYS

Vom Auszubildenden zum Consultant

Ich bin jetzt schon ein paar Jahre bei der NETWAYS Professional Services GmbH angestellt, aber erst ein paar Monate nicht mehr als Auszubildender, sondern eben als Consultant. Doch mir ist eben gerade erst aufgefallen das ich noch gar nicht richtig reflektiert habe....

OSMC 2021: Contribute & Benefit

Be a part of OSMC 2021 The Open Source Monitoring Conference is the leading event in the field of open source monitoring. This fall will be the 15th edition of the well-known industry expert gathering. Get in touch with the international open source monitoring...