Acabeu el missatge MFA, el túnel s'aixeca i tancar el terminal estira la connexió cap avall. És un problema de supervisió, no d'autenticació, i OpenConnect ja incorpora l'interruptor que el resol. La solució és deixar que el client es bifurqui en segon pla quan l'arrencada hagi acabat, un cop la part interactiva hagi acabat de veritat. A continuació hi ha una seqüència de comprovacions: feu-les en ordre i atureu-vos a la primera que no compleixi el vostre gateway.

Confirmeu què exigeix el gateway en iniciar sessió

Abans d'escriure una ordre, anoteu el camí de credencials que imposa el desplegament. Només certificat, contrasenya més testimoni, i un anar i tornar pel navegador a través d'un proveïdor SAML es comporten de manera diferent, i el mode de segon pla no pot saltar-se'n cap. L'opció canvia què passa després de l'arrencada, mai què passa durant.

La solució temptadora és automatitzar el missatge. Un embolcall que escriu una resposta fixa quan reconeix un missatge de contrasenya es trenca en el moment que el gateway demana un codi d'un sol ús, i deixa una credencial en un fitxer que altres comptes poden llegir. Si una persona ha d'aprovar la sessió, manteniu la persona al circuit.

Executeu la primera sessió en primer pla i llegiu la sortida

Connecteu-vos normalment una vegada i deixeu que s'imprimeixi tot l'handshake. Anoteu el protocol en ús, el camí del certificat o del testimoni, l'adreça del túnel que assigna el servidor i cada avís emès abans que s'accepti la connexió. Aquesta transcripció és la vostra línia de base i l'única manera barata de distingir més endavant un problema del client d'un canvi al gateway. Deseu-la fora del búfer del terminal.

Després repetiu la mateixa invocació amb el mode de segon pla i un fitxer PID afegit, per exemple openconnect --background --pid-file /run/openconnect.pid vpn.example.net, mantenint el protocol i les opcions d'autenticació que el vostre gateway requereix a la mateixa línia. El manual d'OpenConnect descriu aquesta opció com a continuació en segon pla un cop completada l'arrencada, i és exactament per això que la fase interactiva s'ha d'haver acabat primer.

Feu que el procés en execució sigui localitzable i aturable

Un fitxer PID només és prova mentre coincideix amb un procés viu. Poseu-lo en un directori propietat del compte de servei i compareu el número registrat amb la taula de processos abans de senyalitzar res. Els reinicis i les caigudes deixen el fitxer enrere, i un fitxer obsolet és la raó habitual que un script d'aturada informi d'èxit mentre el túnel encara està aixecat. Tracteu la comprovació com a part del procediment d'aturada, no com un pas opcional.

Senyalitzeu el PID verificat i després confirmeu que la interfície del túnel ha desaparegut realment en lloc de confiar en l'estat de sortida. Si el client necessita privilegis elevats per configurar la interfície, el senyal ha de venir d'un compte autoritzat a enviar-lo.

No apileu el mode de segon pla sota un supervisor

systemd i supervisors similars esperen posseir el procés que han llançat, i per això un client que es bifurca els confon. El supervisor veu sortir un llançador mentre la connexió real continua viva, així que la lògica de reinici, els informes d'estat i els temps d'espera d'aturada descriuen una cosa que ja no és certa. Escriviu la unitat en l'esquema de primer pla admès i deixeu que el supervisor faci la feina de dimoni.

Reserveu --background per a sessions que una persona inicia i després abandona. Si el requisit és un túnel que existeixi abans que ningú iniciï sessió, la peça que falta és una identitat no interactiva aprovada més un pla per renovar-la, i cap indicador de línia d'ordres forneix cap de les dues. Afegir l'indicador a un script d'arrencada produeix un túnel que falla en silenci a la primera credencial caducada.

Tracteu la galeta de sessió com una credencial

OpenConnect documenta una fase d'autenticació separada mitjançant --authenticate, i el material resultant es pot retornar amb --cookie-on-stdin. Aquest parell existeix per a treball d'integració, i el que produeix és tan sensible com la contrasenya que el va crear.

Manteniu el valor fora de l'historial de l'intèrpret, fora dels registres i fora de qualsevol tiquet que obriu. Un script de lliurament també ha de preservar la informació verificada del punt final que el client va rebre amb la galeta; si la perdeu, una execució posterior pot connectar-se a un amfitrió que mai vau autenticar, cosa pitjor que una connexió que simplement falla.

Passeu per la llista abans de tancar el terminal

Quatre coses han de ser certes: l'inici de sessió interactiu va acabar en primer pla, el fitxer PID apunta a un procés que heu verificat, la qüestió del supervisor està resolta en un sentit o en l'altre i la galeta té un pla d'emmagatzematge que no és un fitxer de text pla. Quan les quatre es compleixen, allunyar-se del terminal és segur i el túnel continua funcionant.

Si una falla, arregleu aquest element abans de tocar els altres, perquè les comprovacions restants no el poden compensar. Conserveu també la transcripció de primer pla de la primera execució: la propera vegada que el túnel caigui sense avís, aquesta línia de base és el que separa un canvi del costat del gateway d'un del costat del client.

Articles relacionats