Mit Citrix Gateway bzw. ADC (Netscaler) besteht ab der Version 12 die Möglichkeit für eine Native One-Time-Password (OTP) Integration mit einer Authenticator App (Google, Microsoft usw.) für eine Zweifaktorauthentifizierung. Dabei liefert der Authenticator eine Nummer als zweiten Faktor. Das jeweilige Gerät (Mobiltelefon mit App) muss zuvor für einen Anwender registriert werden. Informationen zum OTP werden im Benutzerkonto des jeweiligen Benutzers gespeichert. Das Management von Benutzern und Geräten ist nicht immer einfach. Eigentlich kann das mit einer GUI nur der Benutzer selber auf dem Citrix Gateway. Daher haben wir ein Tool für ein zentrales Management erstellt.
In diesem Blog findet Ihr die Beschreibung des Tools, das Tool selber und weitere Hintergründe.
Warum ein zweiter Faktor?
In Umgebungen, auf die remote zugegriffen wird, war es schon immer sinnvoll, den Zugriff durch einen zweiten Faktor abzusichern. Der erste Faktor ist das Kennwort (Wissen) der zweite ein Gerät (Besitz). Nu mit einer Kombination aus beidem sollte auf eine geschützte Unternehmensumgebung zugegriffen werden. Citrix hat es ab der Version 12.1 des Citrix Gateway ermöglicht statt eines Hardwaretokens ein Mobiltelefon zur Generierung des zweiten Faktors (ohne einen zusätzlichen Radius-Server) zu nutzen. Die Vorteile liegen auf der Hand:
- Einsparung von kosten für Hardwaretokens
- Schnell skalierbar – vermeidet Zeitverlust
- Wir als Citrix Solution Provider können Citrix Gateway / ADC Zugänge u.a. kostengünstig monatlich vermieten (auch in einer höheren Edition). Das funktioniert auch, wenn kein Citrix Virtual Apps & Desktops genutzt wird. So kann der aktuelle Engpass überbrückt werden.
Was ist ein OTP im Gateway und wie wird dieses genutzt?
Die Anmeldeseite am Gateway zeigt sich nach der Einrichtung von Native OTP mit einem weiteren Feld für den Passcode. Hier kann man beispielsweise FreeOTP https://apps.apple.com/de/app/freeotp-authenticator/id872559395 oder auch den Google Authenticator nutzen, um den zweiten Faktor für eine Anmeldung zu generieren. Anmerkung: Die Bilderkennung funktioniert mit dem Google Authenticator erheblich besser. Ein Benutzer kann ein Gerät registrieren, indem er die Webseite des Gateway mit /ManageOtp aufruft. Idealerweise verhindert ein Regelwerk, dass das auch aus dem HomeOffice passieren kann. Ohne ein spezielles Tool (unser Tool) geht es bisher nicht anders.
Einrichten des Native OTP auf einem Citrix ADC
Anleitungen gibt es dazu genügend. Gerne können wir hier auch weiterhelfen:-) Ansonsten hier die wichtigsten Informationen zur Einrichtung:
- Carls Anleitung zur Einrichtung: https://www.carlstalhood.com/netscaler-gateway-12-native-one-time-passwords-otp
- Den Zugriff auf bestimmte AD Gruppen beschränken: https://support.citrix.com/article/CTX111079
- Citrix Netscaler Advanced (aka Enterprise) mit Firmware 12.1 build 49 und neuer bietet „native OTP“-Funktion und der Möglichkeit „nFactor“ zu konfigurieren.
- Citrix Workspace App 1809 ist notwendig. Ältere Receiver oder ältere Firmwareversionen (zwischen 12.0 build 51.24 und 12.1 build 49) müssen zwingend html5 nutzen
Einschränkung: Auch das Gateway in der Version 13.x beherscht die genannten Funktionen. Jedoch werden die Attribute im ActiveDirectory verschlüsselt. Im Prinzip können wir so etwas auch für das Tool umsetzen (vielleicht später). Jedoch ist es möglich, die Verschlüsselung bei Citrix Gateway 13.x wieder zu deaktivieren.
OTP-Edit ein Management Tool für OTP Geräte und Benutzer
Für das, was bisher am OTP gestört hat, haben wir nun ein Managementtool gebaut. Dieses Tool bietet die folgenden Usecases:
- Reporten aller Benutzer die ein Gerät für den OTP Zugriff konfiguriert haben
- Finden von Benutzern mit einem OTP
- Zentrales löschen von zugeordneten OTP Geräte (Mobiltelefone) im Active Directory
- Anzeigen und speichern der QR-Codes für die Authenticator App
- Versenden von E-Mails mit dem QR-Codes für die Authenticator App
- Neuerstellung von QR-Codes mit einer zufällig generierten Zahl und zusenden per E-Mail. Der Benutzer muss sich damit nicht mehr selber am Gateway registrieren!
Anleitung / Installation
Als Voraussetzung muss das AD Powershell Modul installiert sein. Auf einem Server kann dann beispielsweise mit dem folgenden Befehl erfolgen:
Add-WindowsFeature RSAT-AD-Tools -IncludeManagementTools
Nach dem Start erscheint ein Dialog mit den Standardeinstellungen aus der lokal im Programmverzeichnis liegenden Datei OTPEditConfig.xml. Hier ist es wichtig, zunächst einmal einen LDAP Server anzugeben (die Domäne bzw. Domänencontroller).
Wenn ihr ein anderes LDAP Attribut als „Userparameters“ nutzt, ist das auch hier zu konfigurieren. Das macht durchaus Sinn, da in „Userparameters“ auch die Remote Desktop Einstellungen für ein Benutzerkonto gespeichert sein können (wenn genutzt)! Damit das Tool einwandfrei funktioniert, muss des Feld (UserProperties) leer sein oder mit einem oder mehreren OTP Geräte Strings gefüllt werden. Andere Daten führen hier zu Fehlern.
Werte wie SMTP sind, denke ich selbstsprechend und für die Funktion zunächst nicht notwendig.
Nach dem Speichern mit „OK“ wird eine neue Konfigurationsdatei unter %appdata%\AndreasNick\OTPEdit erzeugt. Wenn also mal etwas nicht funktioniert einfach diese Datei löschen.
Nach dem Laden und wenn alles korrekt konfiguriert ist, sehen wir auf der linken Seite Benutzer, denen ein OTP-Gerät zugeordnet ist. Über das Tab „All Users“ werden alle Benutzer der Domäne Aufgelistet. Mit dem Suchfilter „Filter“ kann die Auswahl eingeschränkt werden.
Die Funktion „ExportCSV“ exportiert eine Übersicht aller Benutzer, denen Geräte zugeordnet sind. Mit dem Kontextmenü (rechte Maustaste) kann ein neues Gerät angelegt werden.
„Add Device“ zeigt einen Dialog in dem der Gerätename sowie die E-Mail Adresse festgelegt werden, an die der QR-Code verschickt werden soll. Als E-Mail Adresse wird dabei das AD Attribut „Mail“ genutzt. Wenn das nicht gesetzt sein sollte, wird der UserPrincipalName des Benutzerkontos eingetragen.
Der Gerätename muss eindeutig sein und darf sich nicht für einen Benutzer wieder holen. Mit „Save“ kann der QU-Code als PNG gespeichert werden. „Send“ hingegen erledigt mehrere Dinge. Zunächst wird das Gerät im Active Directory Attribut eingetragen. Dazu erscheint in dieser Version immer ein Dialog mit dem PowerShell-Befehl der zum Ändern des Attributes ausgeführt werden muss.
Erst nach einem erfolgreichen Eintrag im AD Objekt des Benutzers kommt die Frage nach dem E-Mail Versand.
Für den Versand werden die Daten aus der Konfigurationsdatei genutzt. Wenn die GUI hier einfrieren sollte oder es etwas länger dauert, dann stimmen die Daten nicht. Bitte zwei Minuten abwarte. Nach dieser Zeit kommt eine Fehlermeldung.
So eine E-Mail schaut wie folgt aus:
Weitere Funktionen wie „Remove Device“ und „View Device“ verhalten sich ähnlich. In jedem Fall wird vor einer Aktion nachgefragt. Mit ViewDevice kann im nachhinein eine QR-Code E-Mail erneut verschickt werden.
E-Mail Versand
Gerade bei E-Mail versand und bei der Formatierung der E-Mails kann nicht immer alles berücksichtigt werden. Daher habe ich diesen Teil gleich in ein kleines PowerSehll Skript ausgelagert. Ihr könnt dieses im Programmverzeichnis beliebig anpassen oder auch eine andere Methode zum Versand der Nachrichten nutzen.
Function Send-QRCodeEMail { <# .SYNOPSIS A simple function to send notifications with a QRCode #> [CmdletBinding()] param ( [Parameter(Mandatory=$true)] [String] $SMPTServer, [Parameter(Mandatory=$true)] [int] $SMTPPort, [bool] $SMTPUseSSL = $True, [String] $SMTPMailuser, [String] $SMTPMailPassword, [String] $From = "", [Parameter(Mandatory=$true)] [String] $To, [String] $Subject = "QRCode Mail", [String] $UserName = "Rudi", [Parameter(Mandatory=$true)] [Byte[]] $QRCode ) $ImageBase64 = [Convert]::ToBase64String($QRCode) $secure_pwd = $SMTPMailPassword | ConvertTo-SecureString -AsPlainText -Force $creds = New-Object System.Management.Automation.PSCredential -ArgumentList $SMTPMailuser, $secure_pwd # # Als als html Mail # [String] $htmlDoc = $null #Bachground $htmlDoc += '<style>' $htmlDoc += 'body {background-color:#d2E0EF;}' $htmlDoc += 'h1 {color: blue;}' $htmlDoc += 'strong {color:blue;}' $htmlDoc += '* {font-family: Consolas;}' $htmlDoc += '</style>' $htmlDoc += '</head>' $htmlDoc += '<body>' #Headline $htmlDoc += '<h1>OTP QR Code for: ' + $UserName + '</h1>' $htmlDoc += '<h2>Please scan the code with an Authenticator (Microsoft, Google etc.)</h2>' $htmlDoc += '<img src="/images/easyblog_articles/123/30d844c0f3cf8c64afb9060ec1f64e44.png" />' $htmlDoc += '</body>' Send-MailMessage -From $From -To $To -Subject $Subject -SmtpServer $SMPTServer -Port $SMTPPort -Credential $creds ` -Body $htmlDoc -UseSsl:$SMTPUseSSL -Encoding UTF8 -BodyAsHtml -ErrorAction Stop }
Download
Das Tool ist vollständig in PowerShell programmiert und mit Hilfe der ISE-Seroids (http://powertheshell.com) erstellt. Die Anwendung ist digital signiert und in eine Exe gerwappt. U.a. ist hier eine neue Basis für Citrix und AD ManagementTools entstanden.
Wichtig: wir/ich übernehmen keinerlei Haftung für Schäden, die durch die Nutzung des Tools entstehen. In der aktuellen Version wird jede Aktion noch einmal abgefragt, bevor diese ausgeführt wird. Den gleichen Hinweis gibt es auch noch einmal vor dem Download!
Version 1.0
* Kleinere Bugs beseitigt
* Neustrukturierung der Software und Aufteilung in Module
* Mehr Informationen in den benachrichtigungs E-Mails
OTPEdit
The OTPEdit tool allows to manage entries for a One Time Password in AD