Užbaigiate MFA užklausą, tunelis pakyla, o terminalo uždarymas nutraukia ir ryšį. Tai priežiūros, o ne autentifikavimo problema, ir OpenConnect jau turi jungiklį, kuris ją išsprendžia. Sprendimas – leisti klientui po paleidimo atsišakoti į foną, kai interaktyvioji dalis tikrai baigta. Toliau pateikiama patikrinimų seka: atlikite juos iš eilės ir sustokite ties pirmuoju, kuris netinka jūsų vartams.

Patvirtinkite, ko vartai reikalauja prisijungiant

Prieš rašydami komandą, užsirašykite kredencialų kelią, kurį primeta diegimas. Tik sertifikatas, slaptažodis su žetonu ir naršyklės kelionė per SAML teikėją elgiasi skirtingai, o foninis režimas negali praleisti nė vieno. Ši parinktis keičia tai, kas vyksta po paleidimo, bet niekada – kas vyksta jo metu.

Viliojantis sprendimas – automatizuoti užklausą. Apvalkalas, kuris atpažinęs slaptažodžio užklausą įrašo fiksuotą atsakymą, sulūžta tą akimirką, kai vartai paprašo vienkartinio kodo, ir palieka kredencialus faile, kurį gali skaityti kitos paskyros. Jei sesiją turi patvirtinti žmogus, palikite žmogų procese.

Paleiskite pirmąją sesiją pirmame plane ir perskaitykite išvestį

Prisijunkite kartą įprastai ir leiskite išspausdinti visą rankos paspaudimą. Užsirašykite naudojamą protokolą, sertifikato ar žetono kelią, serverio priskirtą tunelio adresą ir kiekvieną įspėjimą prieš priimant ryšį. Ta išklotinė yra jūsų bazinė linija ir vienintelis pigus būdas vėliau atskirti kliento problemą nuo vartų pakeitimo. Išsaugokite ją už terminalo buferio.

Tada pakartokite tą patį iškvietimą su foniniu režimu ir pridėtu PID failu, pavyzdžiui openconnect --background --pid-file /run/openconnect.pid vpn.example.net, laikydami vartų reikalaujamą protokolą ir autentifikavimo parinktis toje pačioje eilutėje. OpenConnect vadove ši parinktis aprašoma kaip tęsimas fone po paleidimo pabaigos, todėl interaktyvioji fazė turi baigtis pirmoji.

Padarykite veikiantį procesą randamą ir sustabdomą

PID failas yra įrodymas tik tol, kol atitinka gyvą procesą. Įdėkite jį į katalogą, kurį valdo paslaugos paskyra, ir prieš siųsdami signalą palyginkite įrašytą numerį su procesų lentele. Perkrovimai ir strigimai palieka failą, o pasenęs failas yra įprasta priežastis, kodėl sustabdymo scenarijus praneša apie sėkmę, kai tunelis dar veikia. Traktuokite patikrinimą kaip sustabdymo procedūros dalį, o ne pasirenkamą žingsnį.

Siųskite signalą patvirtintam PID, tada patvirtinkite, kad tunelio sąsaja tikrai dingo, o ne pasitikėkite išėjimo būsena. Jei klientui reikia padidintų teisių sąsajai konfigūruoti, signalas turi ateiti iš paskyros, kuriai leidžiama jį siųsti.

Nekraukite foninio režimo po prižiūrėtoju

systemd ir panašūs prižiūrėtojai tikisi valdyti procesą, kurį paleido, todėl atsišakojantis klientas juos klaidina. Prižiūrėtojas mato paleidėją išeinant, o tikrasis ryšys tebeveikia, todėl pakartotinio paleidimo logika, būsenos ataskaitos ir sustabdymo terminai aprašo tai, kas jau netiesa. Rašykite įrenginį palaikomoje pirmo plano struktūroje ir palikite prižiūrėtojui demono darbą.

--background palikite sesijoms, kurias žmogus pradeda ir paskui išeina. Jei reikia tunelio, kuris egzistuoja prieš kam nors prisijungiant, trūksta patvirtintos neinteraktyvios tapatybės ir jos atnaujinimo plano, o joks komandų eilutės parametras neduoda nė vieno. Parametro pridėjimas prie paleidimo scenarijaus sukuria tunelį, kuris tyliai sugenda esant pirmiems pasibaigusiems kredencialams.

Traktuokite sesijos slapuką kaip kredencialus

OpenConnect dokumentuoja atskirą autentifikavimo fazę per --authenticate, o gautą medžiagą galima grąžinti su --cookie-on-stdin. Ši pora skirta integracijos darbui, o tai, ką ji pagamina, yra tokia pat jautri kaip ją sukūręs slaptažodis.

Laikykite vertę už shell istorijos, žurnalų ir bet kurio atidaryto bilieto ribų. Perdavimo scenarijus taip pat turi išsaugoti patvirtintą galinio taško informaciją, kurią klientas gavo su slapuku; jei ją prarasite, vėlesnis paleidimas gali prisijungti prie prieglobos, kurios niekada neautentifikavote, o tai blogiau nei tiesiog nepavykęs ryšys.

Pereikite sąrašą prieš uždarydami terminalą

Turi galioti keturi dalykai: interaktyvus prisijungimas baigėsi pirmame plane, PID failas rodo patvirtintą procesą, prižiūrėtojo klausimas išspręstas viena ar kita kryptimi, o slapukas turi saugojimo planą, kuris nėra paprastas tekstinis failas. Kai visi keturi galioja, pasitraukti nuo terminalo saugu, o tunelis veikia toliau.

Jei vienas nepavyksta, pataisykite tą punktą prieš liesdami kitus, nes likę patikrinimai jo nekompensuos. Išsaugokite ir pirmo paleidimo pirmo plano išklotinę: kai kitą kartą tunelis kris be įspėjimo, būtent ši bazinė linija atskirs vartų pusės pakeitimą nuo kliento pusės.

Susiję straipsniai