Како пребацити OpenConnect у позадину после интерактивне пријаве
Завршите пријаву у предњем плану, па предајте тунел сопственом позадинском режиму клијента. Провере које га држе пронађљивим и заустављивим.
Завршите MFA упит, тунел се подигне и затварање терминала обори везу са собом. То је проблем надзора, не аутентификације, и OpenConnect већ испоручује прекидач који га решава. Решење је пустити клијента да се рачва у позадину након завршетка покретања, када је интерактивни део заиста готов. Следи низ провера: прођите их редом и зауставите се на првој која не важи за ваш гејтвеј.
Потврдите шта гејтвеј захтева при пријави
Пре него што откуцате наредбу, запишите путању акредитива коју уводи постава. Само сертификат, лозинка плус токен и обилазак кроз прегледач преко SAML провајдера понашају се различито и позадински режим не може прескочити ниједан. Опција мења шта се дешава након покретања, никада шта се дешава током њега.
Примамљиво решење је аутоматизовати упит. Омотач који уписује фиксни одговор кад препозна упит за лозинку сломи се оног тренутка када гејтвеј затражи једнократни код и оставља акредитив у датотеци коју други рачуни могу читати. Ако особа мора одобрити сесију, задржите особу у петљи.
Покрените прву сесију у предњем плану и прочитајте излаз
Повежите се једном нормално и пустите да се испише цело руковање. Забележите протокол који се користи, путању сертификата или токена, адресу тунела коју сервер додељује и свако упозорење пре прихватања везе. Тај запис је ваша основна линија и једини јефтин начин да касније разликујете проблем клијента од промене на гејтвеју. Сачувајте га изван бафера терминала.
Затим поновите исти позив с позадинским режимом и додатом PID датотеком, на пример openconnect --background --pid-file /run/openconnect.pid vpn.example.net, држећи протокол и опције аутентификације које ваш гејтвеј захтева у истом реду. OpenConnect приручник описује ту опцију као наставак у позадини након завршетка покретања, и управо зато интерактивна фаза мора бити завршена прва.
Учините покренути процес пронађљивим и заустављивим
PID датотека је доказ само док одговара живом процесу. Ставите је у директоријум који поседује сервисни рачун и упоредите забележени број с табелом процеса пре него што пошаљете сигнал. Рестартови и падови остављају датотеку, а застарела датотека је уобичајен разлог да скрипта за заустављање јави успех док је тунел још подигнут. Третирајте проверу као део процедуре заустављања, не као опциони корак.
Пошаљите сигнал провереном PID-у, затим потврдите да је интерфејс тунела заиста нестао уместо да верујете излазном статусу. Ако клијенту требају повишене привилегије за конфигурацију интерфејса, сигнал мора доћи с рачуна који га сме послати.
Не слажите позадински режим под надзорником
systemd и слични надзорници очекују да поседују процес који су покренули, зато клијент који се рачва збуњује их. Надзорник гледа како покретач излази док права веза живи даље, па логика рестарта, извештавање о статусу и рокови заустављања описују нешто што више није тачно. Напишите јединицу у подржаном предњем распореду и пустите надзорника да ради демонски посао.
Сачувајте --background за сесије које особа покрене и затим оде. Ако је захтев тунел који постоји пре него се било ко пријави, део који недостаје је одобрени неинтерактивни идентитет плус план за његово обнављање, а ниједан флаг наредбеног реда не даје ниједно. Додавање флага у boot скрипту ствара тунел који тихо пада на првом истеклом акредитиву.
Третирајте колачић сесије као акредитив
OpenConnect документује одвојену фазу аутентификације кроз --authenticate, а добијени материјал се може вратити с --cookie-on-stdin. Тај пар постоји за интеграцијски рад, а оно што производи осетљиво је као и лозинка која га је створила.
Држите вредност изван историје љуске, изван логова и изван сваког тикета који отворите. Скрипта за предају такође мора сачувати проверене информације о крајњој тачки које је клијент добио уз колачић; изгубите ли их, касније покретање може се повезати с хостом на којем се никада нисте аутентификовали, што је горе од везе која једноставно падне.
Прођите кроз листу пре него затворите терминал
Четири ствари треба да буду истините: интерактивна пријава завршена је у предњем плану, PID датотека показује на процес који сте проверили, питање надзорника решено је на једну или другу страну и колачић има план складиштења који није обична текстуална датотека. Када све четири важе, одлазак од терминала је безбедан и тунел наставља да ради.
Ако једна од њих падне, поправите ту ставку пре него дирате остале, јер преостале провере то не могу надокнадити. Сачувајте и запис предњег плана из првог покретања: следећи пут када тунел падне без упозорења, та основна линија раздваја промену на страни гејтвеја од оне на страни клијента.