Wer --csd-wrapper einem Profil hinzufügt, übergibt ein lokales Skript an einen Daemon, der es bei der Anmeldung ausführt; die Entscheidung vor Ihnen ist also eine Codeprüfung, kein Präferenzschalter. Die Option existiert, damit eine Host-Check-Komponente des Gateways ersetzt werden kann, und sie erwartet einen Pfad zu einem Skript, das Sie bereitstellen. Alles Folgende setzt voraus, dass der Betreiber bereits festgelegt hat, welche Posture-Prüfung erforderlich ist; ist dieser Punkt noch offen, klären Sie ihn zuerst. Das Runbook hat vier Schritte: die fehlschlagende Stufe lokalisieren, das Skript lesen, die Identität wählen, unter der es läuft, und das Ergebnis belegen.

Schritt 1: Die fehlgeschlagene Stufe lokalisieren

Die letzte Meldung des Clients betrifft meist ein Cookie, also das Ende einer Kette und nicht deren Anfang. Ein HTTPS-Login, eine Serverzertifikatsprüfung, ein Authentifizierungsaustausch und eine Posture-Komponente stehen alle vor dieser Meldung.

Halten Sie Version und verwendete Anmeldeadresse fest und wiederholen Sie den Versuch mit ausführlicher Ausgabe, die auf Ihrem eigenen Terminal bleibt. Lesen Sie den ersten Fehler, der kein Wiederholungsversuch ist, nicht die letzte Zeile des Mitschnitts. Wenn das Protokoll endet, bevor eine Bewertungskomponente genannt wird, ist der Wrapper noch nicht Ihr Problem. Ihn an diesem Punkt hinzuzufügen, vergrößert nur die Angriffsfläche, die Sie später verteidigen müssen.

openconnect --version
openconnect --verbose --user="$VPN_USER" vpn.example.com </dev/null

Halten Sie den Mitschnitt lokal, denn Cookies und Authentifizierungsantworten sind Zugangsmaterial. Ein in einen Chatverlauf eingefügter Trace ist ein Zugangsdatenleck, selbst wenn der Bewertungsschritt harmlos wirkt. Teilen Sie den Fehlertext und die Stelle im Ablauf, an der er auftrat, niemals die Nutzlast.

Schritt 2: Das Skript lesen, bevor es in ein Profil gelangt

Ein Wrapper ist nur so vertrauenswürdig wie die Revision, die Sie geprüft haben; fixieren Sie diese Revision und legen Sie ihren Hash neben der Freigabenotiz ab. Die beiden folgenden Befehle liefern einen Fingerabdruck und eine billige Syntaxprüfung, bevor Sie eine einzige Zeile lesen. Sie geben auch der nächsten Person eine feste Referenz, was zählt, wenn die Datei außerhalb der Paketverwaltung liegt. Keiner der Befehle sagt, was das Skript tut; führen Sie sie aus und lesen Sie weiter.

sha256sum ./vpn-csd-wrapper.sh
bash -n ./vpn-csd-wrapper.sh

Lesen Sie die ganze Datei mit vier Fragen im Kopf: Macht sie ausgehende HTTP-Aufrufe, liest sie Anmeldedatendateien oder Umgebungsvariablen, schreibt sie außerhalb eines temporären Verzeichnisses, und meldet irgendein Zweig eine bestandene Posture, ohne etwas zu messen. Das letzte Muster ist eine Richtlinienumgehung mit angehängter Logzeile. Kopierte Wrapper schmuggeln es gern hinter eine plausibel wirkende Prüfung. Wenn das Skript das Gerät für in Ordnung erklärt, bevor es das Gerät ansieht, hören Sie dort auf.

Prüfen Sie auch auf gepackte Nutzlasten, denn ein lesbarer Kopf beweist nichts über den Rest der Datei. Ein Skript aus einem Forumsbeitrag herunterzuladen, macht es nicht vertrauenswürdig, nur weil sein Name an eine echte Host-Check-Komponente erinnert. Notieren Sie, wer es installiert hat, woher es kam und wie es aktualisiert wird.

grep -nE 'base64 -d|xxd -r|eval |curl |wget ' ./vpn-csd-wrapper.sh

Schritt 3: Die Identität wählen, unter der der Wrapper läuft

--csd-user senkt die Privilegien ab, während das CSD-, TNCC- oder HIP-Programm läuft. Dieses Konto gehört zur lokalen Ausführungsregelung, nicht zum Benutzernamen, der an das Gateway übermittelt wird.

Geben Sie dem Wrapper ein eigenes Konto ohne interaktive Shell, ohne sudo-Rechte und ohne Gruppenmitgliedschaften, die es nicht braucht. Gewähren Sie Lesezugriff auf das Skript und auf die konkreten Dateien, die es prüft, und testen Sie dann die Rechteabsenkung, bevor Sie das VPN-Profil anfassen. Das Problem hier zu finden ist billiger, als es im Client zu finden.

sudo -u vpn-csd /usr/local/libexec/vpn-csd-wrapper.sh

Privilegien abzusenken begrenzt den Schaden, den ein schlechtes Skript anrichten kann. Es prüft den Code nicht, macht den Bericht nicht wahr und belegt nicht, dass der Gateway-Administrator diese Umsetzung als Erfüllung der Geräterichtlinie akzeptiert.

Schritt 4: Die Änderung umkehrbar halten

Sichern Sie das Profil, bevor Sie es bearbeiten, und halten Sie den Wrapper unter Versionskontrolle, damit ein Rollback einen bekannten Hash wiederherstellt, statt eine Kopie zu suchen. Notieren Sie Skriptpfad, Hash, Ausführungsbenutzer und Freigebenden an einer Stelle.

Zum Zurückrollen entfernen Sie die Option, starten den Client neu und bestätigen, dass der ursprüngliche Fehler zurückkehrt. Wenn das Gateway die Anmeldung nach dem Rollback weiterhin ablehnt, hat sich auch etwas anderes geändert, und diese Differenz zu finden kommt vor einem neuen Versuch mit dem Wrapper. Behalten Sie die vorherige Kopie für die Dauer des Änderungsfensters, was für die meisten Teams bedeutet, bis das nächste Wartungsfenster vorbei ist.

Prüfen Sie nach einer erfolgreichen Einführung zwei Dinge statt einem: Der Tunnel kommt hoch, und ein Gerät, das die Posture-Prüfung nicht bestehen sollte, wird weiterhin abgelehnt. Eine Verbindung, die für alle funktioniert, ist kein Beleg dafür, dass die Bewertung Ihre Änderung überlebt hat.

Abkürzungen, die ein zweites Problem schaffen

Lassen Sie den Helfer keinen konformen Zustand melden, ohne die erforderlichen Prüfungen auszuführen, und überschreiben Sie die Plattformidentität nicht, um einem anderen Betriebssystem zu entsprechen. Eine andere Plattform zu behaupten ist kein Beleg dafür, dass das echte Gerät die Richtlinie erfüllt. Es hinterlässt einen Client, der bei jeder künftigen Anmeldung lügt.

Die Serverprüfung zu deaktivieren, ein altes Cookie erneut abzuspielen und ungeprüfte Skripte zu stapeln, tauscht allesamt einen sichtbaren Fehler gegen einen unsichtbaren. Wenn der installierte Client den unterstützten Ablauf nicht abschließen kann, fragen Sie nach einer freigegebenen Alternative, statt den vorhandenen zu verbiegen.

Das OpenConnect-Handbuch dokumentiert --csd-wrapper und --csd-user getrennt, und das ist der entscheidende Hinweis: Skript und Identität sind zwei Entscheidungen. Prüfen Sie beide getrennt und schreiben Sie beide auf. Dann ist die Anmeldeaufforderung kein Rätsel mehr, das Sie durch Einfügen von Code lösen.

Ähnliche Artikel