vpncli -s gegen die GUI: Anmeldung bei Cisco Secure Client
vpncli -s liest eine vorbereitete Antwortdatei, die GUI liest einen Menschen. Vergleichen Sie, wann sich das Skript lohnt, was die Datei braucht und wie Sie das belegen.
Cisco Secure Client bietet zwei Wege, dieselben Anmeldeabfragen zu beantworten: eine Person tippt in vpnui.exe, oder ein Skript speist Antworten über die Standardeingabe mit -s in vpncli.exe ein. Der zweite Weg ermöglicht geplante Verbindungen, ohne die GUI abzuscannen, und er verwandelt eine Anmeldung in eine Datei, die wie ein Zugangsdatum geschützt werden muss. Welcher Weg passt, hängt davon ab, ob ein Mensch an der Maschine sitzt und wie oft das Passwort rotiert. Keine der beiden Optionen ändert, was das Gateway abfragt, nur wer antwortet.
Beide Wege enden im selben Tunnel, also geht der Vergleich um den Betrieb, nicht um das Protokoll.
Zwei Wege, dieselben Abfragen zu beantworten
Der GUI-Weg ist von Natur aus interaktiv: Der Client fragt, jemand antwortet, und die Sitzung lebt, solange diese Person sie in Ruhe lässt. Auf einem Laptop, den ein Mensch benutzt, ist das die richtige Wahl, weil sich die Abfragen der Authentifizierungsmethode des Gateways anpassen und niemand ein Klartextpasswort auf der Platte halten muss.
Der Skript-Weg passt zu einem Kiosk, einer Labormaschine oder einer geplanten Aufgabe, bei der niemand zum Tippen da ist. Der Tausch ist ausdrücklich: Sie akzeptieren eine Zugangsdatendatei auf der Platte gegen eine unbeaufsichtigte Verbindung. Bietet das Gateway Zertifikats- oder SAML-Authentifizierung, lohnt sich dieser Tausch meist nicht, denn die Datei existiert nur, um Abfragen zu beantworten, die eine stärkere Methode vermeiden würde.
Mischen Sie beides nicht gleichzeitig auf einer Maschine. Kommandozeile und grafischer Client konkurrieren um denselben Sitzungszustand, und das ist das Problem des nächsten Abschnitts.
Was die Antwortdatei enthalten muss
Der Client fragt der Reihe nach — Gateway, manchmal eine Gruppenauswahl, Benutzername, Passwort und jede Bannerbestätigung. Eine Datei, die alles davon beantwortet, sieht so aus, mit eingesetzten echten Werten:
connect vpn.example.com
MyGroup
alice
correct-horse-battery
yDer zuverlässige Weg, diese Datei zu bauen, ist, sich einmal von Hand zu verbinden, jede getippte Zeile und jedes gedrückte Enter zu notieren und dann genau diese Folge nachzubilden. Installationen, die Gruppe und Benutzername im Profil speichern, brauchen möglicherweise Leerzeilen, wo diese Abfragen nicht mehr erscheinen, und die letzte Zeile braucht weiterhin ihren eigenen Zeilenumbruch. Eine Datei, der eine Zeile fehlt, hängt meist an der letzten Abfrage, statt mit einem klaren Fehler zu scheitern, und deshalb wird es dem Netzwerk angelastet. Vergleichen Sie die Datei zweimal mit Ihrem Protokoll, einmal für die Reihenfolge und einmal für die Leerzeilen.
Halten Sie die Datei außerhalb jedes synchronisierten Ordners und nur für das Konto lesbar, das die Aufgabe ausführt. Dieses Passwort ist Klartext, die Datei ist also ein Zugangsdatum: kein Repository, kein Netzlaufwerk, kein Anhang in einem Ticket. Der Client warnt Sie vor nichts davon.
Warum die GUI zuerst weg muss
Beenden Sie zuerst den GUI-Prozess und starten Sie dann die CLI aus ihrem eigenen Installationsverzeichnis, denn sowohl das Arbeitsverzeichnis als auch der Client-Build zählen. Ein beispielhafter Wrapper:
@echo off
taskkill /IM vpnui.exe /F >nul 2>&1
cd /d "%PROGRAMFILES(x86)%\Cisco\Cisco Secure Client"
vpncli.exe -s < C:\secure\login.txtExit-Codes sind hier kein verlässliches Erfolgssignal. Der Client druckt seinen Fortschritt und hält den Tunnel in einem separaten Prozess, also lesen Sie die Ausgabe auf die Verbindungszustandszeile und beginnen Sie erst dann die Arbeit, die vom VPN abhängt.
Wenn Sie das Beenden der GUI überspringen, kann das Skript zu laufen scheinen, während die bestehende Sitzung in dem Zustand bleibt, in dem der Benutzer sie hinterlassen hat. Dieser Fehler wirkt sporadisch, und genau solche Fehler überleben eine Woche Rätselraten.
Bestätigen Sie eine Sitzung, nehmen Sie sie nicht an
Prüfen Sie nach der Rückkehr des Skripts etwas, das nur innerhalb des Tunnels existiert — einen internen Host oder ein DNS-Suffix, auf das nur der Unternehmens-Resolver antwortet. Lesen Sie auch die Verbindungszustandszeile in der Client-Ausgabe und behandeln Sie alles andere als Fehler statt als langsamen Erfolg. Ein erneuter Lauf der Datei bei bestehender Sitzung kann den Client halb konfiguriert zurücklassen, also trennen Sie zuerst oder überspringen Sie die Anmeldung, wenn die Sitzung vorhanden ist.
Entscheiden Sie dann, wer die Wiederverbindung verantwortet. Eine Schleife, die eine interne Adresse anpingt und die Anmeldung neu startet, kann einen Kiosk monatelang online halten, und sie kann beim ersten Passwortwechsel auch ein Konto sperren. Begrenzen Sie die Versuche, alarmieren Sie beim Überschreiten und lassen Sie das Identity-Team die Datei rotieren, statt ein veraltetes Passwort bis zur Sperre weiterprobieren zu lassen.
Das ältere vpnclient.exe ist nicht dasselbe Werkzeug
Dieselbe Automatisierung erscheint unter einem älteren Namen, und die beiden sind nicht austauschbar. Der ausgemusterte Cisco-IPsec-Client nutzte vpnclient.exe mit Inline-Argumenten wie einem connect-Verb, einem Profilnamen, einem Benutzer und einem Passwort in einer Kommandozeile; vpncli.exe erwartet eine Abfragefolge auf der Standardeingabe mit -s. Ein altes Forum-Skript auf eine heutige Maschine zu kopieren erzeugt daher einen Befehl, der läuft, nichts Sichtbares tut und dem Gateway angelastet wird.
Bevor Sie Argumente ändern, prüfen Sie, welcher Client installiert ist und welchen das Skript tatsächlich aufruft. Der Namensunterschied ist klein genug, um in einer geplanten Aufgabe übersehen zu werden, und er ist das Erste, was zu prüfen ist, wenn ein übernommenes Skript nach einem Upgrade nicht mehr funktioniert.