OpenConnect csd-wrapper: verificate lo script prima dell’accesso
Trattate --csd-wrapper come un confine di esecuzione del codice: verificate lo script, scegliete un utente csd dedicato e controllate ciò che il gateway vede davvero.
Aggiungere --csd-wrapper a un profilo consegna uno script locale a un demone che lo esegue durante l’accesso, quindi la decisione davanti a voi è una revisione del codice, non un interruttore di preferenza. L’opzione esiste perché il componente di controllo host del gateway possa essere sostituito, e accetta un percorso verso uno script che fornite voi. Tutto quanto segue presuppone che il proprietario della distribuzione abbia già detto quale controllo di postura è richiesto; se quella parte è ancora aperta, risolvetela prima. Il manuale ha quattro passi: individuare la fase fallita, leggere lo script, scegliere l’identità con cui viene eseguito e dimostrare l’esito.
Passo 1: Individuate la fase che ha fallito
L’ultimo messaggio del client riguarda di solito un cookie, che è la fine di una catena e non l’inizio. Un accesso HTTPS, un controllo del certificato del server, uno scambio di autenticazione e un componente di postura stanno tutti davanti a quel messaggio.
Annotate la versione e l’indirizzo di accesso in uso, poi ripetete il tentativo tenendo l’output dettagliato sul vostro terminale. Leggete il primo errore che non è un nuovo tentativo, non l’ultima riga della trascrizione. Se il registro si ferma prima che sia nominato un componente di valutazione, il wrapper non è ancora il vostro problema. Aggiungerlo a quel punto non fa che allargare la superficie che dovrete difendere più avanti.
openconnect --version
openconnect --verbose --user="$VPN_USER" vpn.example.com </dev/nullTenete la trascrizione in locale, perché i cookie e le risposte di autenticazione sono materiale di accesso. Una traccia incollata in una chat è una fuga di credenziali anche quando il passo di valutazione sembra innocuo. Condividete il testo dell’errore e il punto del flusso in cui è apparso, mai il payload.
Passo 2: Leggete lo script prima che entri in un profilo
Un wrapper è affidabile quanto la revisione che avete esaminato, quindi fissate quella revisione e conservatene l’hash accanto alla nota di approvazione. I due comandi qui sotto vi danno un’impronta e un controllo di sintassi economico prima ancora di leggere una riga. Danno anche alla persona successiva un riferimento fisso, cosa che conta quando il file vive fuori dalla gestione dei pacchetti. Nessuno dei due comandi dice cosa fa lo script, quindi eseguiteli e continuate a leggere.
sha256sum ./vpn-csd-wrapper.sh
bash -n ./vpn-csd-wrapper.shLeggete tutto il file con quattro domande in mente: fa chiamate HTTP in uscita, legge file di credenziali o variabili d’ambiente, scrive fuori da una directory temporanea, e qualche ramo riporta una postura superata senza misurare nulla. Quest’ultimo schema è un aggiramento della politica con una riga di log attaccata. Gli wrapper copiati tendono a farlo passare dietro un controllo dall’aria plausibile. Se lo script decide che il dispositivo va bene prima di guardare il dispositivo, fermatevi lì.
Cercate anche payload impacchettati, perché un’intestazione leggibile non prova nulla sul resto del file. Scaricare uno script da un thread di un forum non lo rende affidabile solo perché il suo nome riecheggia un vero componente di controllo host. Annotate chi l’ha installato, da dove viene e come verrà aggiornato.
grep -nE 'base64 -d|xxd -r|eval |curl |wget ' ./vpn-csd-wrapper.shPasso 3: Scegliete l’identità con cui viene eseguito il wrapper
--csd-user riduce i privilegi mentre viene eseguito il programma CSD, TNCC o HIP. Quell’account fa parte della disposizione locale di esecuzione, non del nome utente inviato al gateway.
Date al wrapper un account dedicato senza shell interattiva, senza diritti sudo e senza appartenenze a gruppi di cui non ha bisogno. Concedete l’accesso in lettura allo script e ai file specifici che ispeziona, poi provate la riduzione prima di toccare il profilo VPN. Trovare il problema qui costa meno che trovarlo dentro il client.
sudo -u vpn-csd /usr/local/libexec/vpn-csd-wrapper.shRidurre i privilegi limita i danni che uno script sbagliato può causare. Non rivede il codice, non rende veritiero il rapporto e non stabilisce che l’amministratore del gateway accetti questa implementazione come conformità alla politica dei dispositivi.
Passo 4: Mantenete la modifica reversibile
Fate un backup del profilo prima di modificarlo e tenete il wrapper sotto controllo di versione, così un rollback ripristina un hash noto invece di cercare una copia. Annotate il percorso dello script, l’hash, l’utente di esecuzione e l’approvatore in un unico posto.
Per tornare indietro, rimuovete l’opzione, riavviate il client e confermate che l’errore originale ricompare. Se il gateway rifiuta ancora l’accesso dopo il rollback, è cambiato anche qualcos’altro, e trovare quella differenza viene prima di riprovare il wrapper. Conservate la copia precedente per tutta la finestra di modifica, che per la maggior parte dei team significa fino al superamento della successiva finestra di manutenzione.
Dopo un rilascio riuscito, controllate due cose invece di una: il tunnel si alza, e un dispositivo che dovrebbe fallire il controllo di postura viene ancora rifiutato. Una connessione che funziona per tutti non è prova che la valutazione sia sopravvissuta alla vostra modifica.
Scorciatoie che creano un secondo problema
Non fate riportare all’helper uno stato conforme senza eseguire i controlli richiesti, e non sovrascrivete l’identità della piattaforma per farla corrispondere a un altro sistema operativo. Dichiarare una piattaforma diversa non è prova che il dispositivo reale rispetti la politica. Vi lascia con un client che mente a ogni accesso futuro.
Disattivare la verifica del server, riprodurre un cookie scaduto e impilare script non revisionati scambiano tutti un guasto visibile con uno invisibile. Se il client installato non riesce a completare il flusso supportato, chiedete un’alternativa approvata invece di piegare quello che avete.
Il manuale di OpenConnect documenta --csd-wrapper e --csd-user separatamente, ed è questo l’indizio che conta: lo script e l’identità sono due decisioni. Esaminateli separatamente e annotate entrambi. Allora la richiesta di accesso smette di essere un mistero che si risolve incollando codice.