Tre pyetje e vendosin këtë, dhe vetëm tre. A krijon klienti një zë lidhjeje në sistemin operativ që i mbijeton një rindezjeje? A ofron një rresht komande që mund të marrë një sekret nga diçka tjetër përveç listës së argumenteve të tij? A e detyron kërkesa e tij për identitet një njeri të përgjigjet një kërkese të shfletuesit? Përgjigjuni në atë rend dhe zgjedhja pushon së qeni çështje shije, sepse një punë e planifikuar mund të jetë vetëm aq pa kokë sa lejon përgjigjja më e dobët e të trejave.

Përputhni klientin me tre shtresat e skriptueshme

Një profil vendas i OS, një CLI furnizuesi, një klient vetëm me GUI dhe një klient me SSO të shfletuesit kërkojnë katër qasje të ndryshme. Dy të parët i mbijetojnë rindezjeve pa mbikëqyrje, dhe rindezja pa mbikëqyrje është e gjithë çështja. Dy të tjerët kërkojnë një vendim projektimi para se të kërkojnë një skript.

What the client exposesWhat to scriptWhat still bites
OS-native connection entryrasdial, scutil --nc, nmcliTunnel is up before DNS and routes settle
Vendor CLI reading stdinCLI wrapped by the scheduler, secret from the credential storePrompt text changes between releases
GUI onlyPinned version plus a state assertionLocale and DPI break the click targets

Rruga e parë: profilin e zotëron tashmë sistemi operativ

Kjo është rruga më e lirë dhe ajo që shumica e anashkalon. Në Windows, rasdial "Office" lidhet dhe rasdial "Office" /disconnect e mbyll; rasphone -d "Office" drejton të njëjtën zë përmes ndërfaqes së telefonimit. macOS liston shërbimet e ruajtura me scutil --nc list dhe nis një me scutil --nc start. Linux ia dorëzon punën NetworkManager.

rasdial "Office" user *
scutil --nc start "Office"
nmcli connection up id Office
nmcli -t -f GENERAL.STATE connection show Office

Këto ndërfaqe njohin vetëm profile në pronësi të OS, prandaj nuk mund të drejtojnë një klient arbitrar të palës së tretë. Kur profili mungon, krijojeni një herë dhe lëreni skriptin ta kontrollojë, në vend që ta rikrijoni në çdo ekzekutim. Bëjeni skriptin idempotent: lexoni gjendjen aktuale, lidhuni vetëm kur është i shkëputur, dhe më pas provoni emrin privat që puna me të vërtetë ka nevojë.

Rruga e dytë: furnizuesi ofron një rresht komande

Disa klientë ekspozojnë mjaftueshëm rresht komande për t u mbështjellë: Cisco AnyConnect ka pasur prej vitesh një ndihmës vetëm për lidhje, dhe OpenConnect flet protokollet AnyConnect, GlobalProtect dhe Pulse nga një binar i vetëm. Kërkesa që ka rëndësi nuk është lista e flamujve, por nga vjen sekreti, sepse një fjalëkalim në listën e argumenteve mund ta lexojë kushdo që mund të listojë proceset.

printf '%s\n' "$VPN_PASS" | openconnect --protocol=anyconnect \
  --user "$VPN_USER" --passwd-on-stdin vpn.example.com

FortiClient dhe disa ndërtime të GlobalProtect nuk kanë fare CLI të mbështetur, dhe një klient i komunitetit ose një zëvendësues i licencuar nga furnizuesi është një vendim prokurimi, jo një anashkalim. Në CI, jepini llogarisë së shërbimit të drejta pikërisht mbi atë binar dhe jo mbi një shell, që një argument i injektuar të mos mund të bëhet komandë root.

Rruga e tretë: automatizimi i GUI, dhe pse vjen i fundit

Kur klienti zyrtar nuk ka ndërfaqe, skriptet klikojnë butona përmes mesazheve të dritares ose SendKeys. Kjo është e brishtë ndaj versionit dhe gjuhës, mund të lërë një sesion gjysmë të lidhur dhe dështon në heshtje kur një dialog shfaqet në gjuhën e gabuar. Nëse zgjidhni këtë rrugë, fiksoni versionin e klientit, më pas verifikoni gjendjen e lidhjes që rezulton dhe mbani një plan manual të dokumentuar pranë skriptit.

I njëjti kujdes vlen për shkëputjen me forcë të një klienti duke vrarë procesin e tij. Tuneli mund t i mbijetojë procesit, ose një mbikëqyrës mund ta rinisë atë, prandaj vrit-dhe-rinis nuk është as rivendosje e besueshme.

Çfarë prishet pasi tuneli është ngritur

Një telefonim i suksesshëm vërteton vetëm vërtetimin dhe asgjë tjetër. Provoni burimin për të cilin ekziston puna, me protokollin e vet dhe një afat të shkurtër, dhe emërtoni fazën në mesazhin e dështimit. Profilet, certifikatat dhe kredencialet e ruajtura të dukshme në desktopin tuaj mund të jenë të padukshme për sesionin e shërbimit, prandaj ekzekutoni punën një herë nën llogarinë e vetë planifikuesit para se t i besoni.

Kufizoni përsëritjet. Një cikël që përsërit kredenciale të refuzuara bllokon llogaritë, dhe një kërkesë MFA nuk mund të përgjigjet nga një punë pa kokë pa një projekt regjistrimi; përsëritjet me skript kundër një rrjedhe SSO të shfletuesit thjesht djegin përpjekje. Preferoni një ngarkesë VPN të dorëzuar përmes MDM ose një profil konfigurimi për një flotë, ku platforma zotëron ciklin e jetës së kredencialeve, dhe mbani skriptet për klientët që nuk mund të menaxhohen ashtu.

Regjistroni kodin e daljes dhe burimin e parë që dështon, jo faktin që skripti u ekzekutua. Pikërisht ai rresht i vetëm e kthen një alarm të planifikuesit në një diagnozë pesë minutëshe.

Artikuj të ngjashëm