Archiv der Kategorie: Workaround

UNBLOG Tutorials Usability and Addons Integration with Technical Workarounds and Tutorials for Professionals.

FortiClient VPN Post Login Script

FortiClient SSL VPN aus CLI und Scripts ausführen

Dieser Artikel beschreibt die Verwendung des FortiClient SSL VPN über die Windows Befehlszeile, und der Anwendung aus Batch-Scripts. Der zur FortiGate gehörende FortiClient ist zu jedem gängigen Betriebssystem verfügbar, und kann aus dem Fortinet Support Bereich heruntergeladen werden. Zu dem hier verwendeten FortiClient 6.4.2.1580 für Windows, kommen zusätzlich die FortiClientTools 6.0.9.0277 zum Einsatz.

FortiClient VPN
FortiClient VPN

Nachdem der FortiClient Installiert ist, lässt man die VPN Konfiguration leer. Nun werden die FortiClientTools in ein Verzeichnis entpackt, von Interesse ist der Ordner Inhalt von SSLVPNcmdline, hier die Datei FortiSSLVPNclient.exe zu finden ist, dazu die Microsoft Visual C++ Redistributable mfc140.dll, msvcp140.dll, vcruntime140.dll Laufzeitkomponenten.

Inhalt von SSLVPNcmdline FortiClientTools_6.0.9.0277.zip.

Ausführen von FortiSSLVPNclient.exe öffnet das GUI.

FirtiClientTools
FortiClient SSLVPN

Wir entscheiden uns das unter Settings gespeicherte VPN Verbindungsprofil nicht zu nutzen, stattdessen wird die Verbindung aus dem CLI mit Parameter Übergabe ausgeführt.

FortiSSLVPNclient connect -h 226.62.42.81:10443 -u homer:password123 -i -q -m

Es bietet sich nun an, die VPN Verbindung mit Anmeldung und Netzlaufwerk mapping aus dem Script zu starten, die folgende Batchdatei soll dies ermöglichen.

@echo off
START "" /I FortiSSLVPNclient connect -h 226.62.42.81:10443 -u homer:password123 -i -q -m
timeout 10
net use * /delete /yes
net use R: \\10.10.10.10\data /user:homer password123 /persistent:no
REM weitere Anweisungen!

Mit connect -h wird zum VPN Gateway verbunden, mit der IP Adresse und durch Doppelpunkt getrennt die Portnummer. Der Benutzer -u der sich beim Gateway anmelden soll und dem Passwort nach dem Doppelpunkt. Mit timeout wird 10 Sekunden gewartet, damit die VPN Verbindung steht, bevor das Netzlaufwerk gemappt wird, mglicherweise kann der Wert verkleinert werden, oder er muss erhöht werden.

In der Taskleiste das Symbol, über diesem mit Rechtsklick sich das Kontextmenü öffnet.

Die VPN Verbindung wird getrennt mit folgendem Script.

@echo off
START "" /I FortiSSLVPNclient disconnect

FortiSSLVPNclient Command Line Usage
Usage: FortiSSLVPNclient.exe [options] [args]

FortiSSLVPNclient.exe command line parameters

Quellenlink: Fortinet Knowledge Base

Lets Encrypt-Zertifikat mit ACME2 auf Windows Server

Installation des Lets Encrypt-Zertifikat mit Win-ACME2 auf Windows Server

Let’s Encrypt ist ein Aussteller für freie SSL-Zertifikate, Ende 2015 in Betrieb gegangen, erfreut sich die CA Zertifizierungsstelle für kostenlose Zertifikate grosser Beliebtheit, anfänglich für Linux, gibt es sie nun auch für Windows. Mit ACME 2 lässt sich zudem das Management von SSL/TLS-Zertifikate weitgehend auto­matisieren.

Installation von Win-ACMEv2

win-acme-pluggable

ACMEv2 beinhaltet kein Setup zur Installation, das win-acme Paket wird von hier auf den Server herunter­geladen und in ein beliebiges Verzeichnis entpackt. Das Verzeichnis sollte danach nicht mehr verändert werden, da der Pfad für die Rezertifizierung benötigt wird.

Wie bei der früheren Version handelt es sich bei der aktuellen Version um ein in der Kommando­zeile geführtes Tool mit Menüs, so dass es sich etwa auch unter Server Core ausführen lässt. Gestartet wird win-acme über den Aufruf von wacs.exe.

Lets Encrypt Zertifikat anfordern

Bei der interaktiven Anforderung eines Zertifikats mit win-acme über den Simple Mode ist der Vorgang weitgehend gleich wie mit der vorgänger Version 1. In diesem Beispiel wird ACME 2 auf einem Windows Server 2019 mit der IIS-Rolle ausgeführt.

Für die Verifizierung der Domäne wird hier die Bindung konfiguriert, aus dem Internetinformationsdienste (IIS)-Manager – InetMgr.exe.

Internetinformationsdienste (IIS)-Manager
Abbildung: Internetinformationsdienste (IIS)-Manager

Nach ausführen von wacs.exe wählt man die Option N, um ein neues Zertifikat mit den Standard­einstellungen zu erzeugen. Dabei sucht win-acme nach den Bindungen im IIS. Sind keine Bindungen konfiguriert bricht win-acme den Vorgang ab.

Lets encrypt acme Console bei Windows - letsencrypt.exe

Im nächsten Schritt wählt man die IIS-Website aus, für die man das Zertifikat anfordern und ausstellen möchte.

Im Schritt darauf ist zu entscheiden, ob alle Bindungen oder nur bestimmte IIS-Websites verwendet werden sollen. Im zweiten Fall wählt man diese über einen Filter aus.

Nach einer weiteren Bestätigung startet die Zertifikats­anforderung. Um die Autorität der Domain zu verifizieren, nutzt win-acme die Methode http-01. Dabei erhält der Client von Let’s Encrypt ein Token, diesen er in eine Datei auf dem lokalen Server schreibt, die danach von Let’s Encrypt ausgelesen wird.

   Let’s Encrypt erwartet den Token über HTTP aus der Datei auszulesen. Daher erfordert win-acme auf der Firewall die Freigabe für Port 80 zum Server.

Das Zertifikat befindet sich nach dem erfolgreichen Abschluss des Vorgangs im Zertifikatsspeicher des Servers. Zusätzlich speichert win-acme das Zertifikat im PEM und PFX-Format unter folgendem Pfad ab.

C:\ProgramData\win-acme\acme-v02.api.letsencrypt.org

Die Autorität der Domäne, für die man ein Zertifikat anfordert, muss man nicht nur bei der Erst­ausstellung nachweisen, sondern auch alle 3 Monate für die Erneuerung des Zertifikats.

In den häufigsten Situationen ist es nicht erwünscht, dass ein Server nur für die Anforderung eines Zertifikates ohne Schutz dauerhaft auf Port 80 aus dem Internet erreichbar ist. Hier wäre die Nutzung eines Proxys oder einer temporären Port Freigabe zu erwägen.

Um das Freigeben von Port 80 auf der Firewall zu umgehen, gibt es die Möglichkeit, statt http-01 den Challenge zu wechselen. Hier bietet sich vor allem DNS-01 an, dabei wird das Token als TXT-Record im DNS eingetragen.

_acme-challenge.<MEINE_DOMAIN>

Diese Methode hat zudem den Vorteil, dass sich damit Wildcard-Zertifikate ausstellen lassen. Voraus­setzung für DNS-01 ist natürlich, dass die betreffende Domain extern gehostet wird und somit für Let’s Encrypt zugänglich ist.