Adăugarea --csd-wrapper la un profil predă un script local unui demon care îl execută la autentificare, așa că decizia din fața dumneavoastră este o revizuire de cod, nu un comutator de preferință. Opțiunea există pentru ca componenta de verificare a gazdei a gateway-ului să poată fi înlocuită și acceptă o cale către un script pe care îl furnizați. Tot ce urmează presupune că proprietarul implementării a spus deja ce verificare de postură este necesară; dacă acea parte este încă deschisă, rezolvați-o mai întâi. Procedura are patru pași: găsiți etapa care a eșuat, citiți scriptul, alegeți identitatea sub care rulează și demonstrați rezultatul.

Pasul 1: Găsiți etapa care a eșuat

Ultimul mesaj al clientului este de obicei despre un cookie, adică sfârșitul unui lanț, nu începutul. O autentificare HTTPS, o verificare a certificatului serverului, un schimb de autentificare și o componentă de postură stau toate în fața acelui mesaj.

Notați versiunea și adresa de autentificare folosite, apoi repetați încercarea păstrând ieșirea detaliată pe terminalul dumneavoastră. Citiți prima eroare care nu este o reîncercare, nu ultima linie a transcrierii. Dacă jurnalul se oprește înainte de a fi numită vreo componentă de evaluare, wrapperul încă nu este problema dumneavoastră. Adăugarea lui în acel moment doar lărgește suprafața pe care va trebui să o apărați mai târziu.

openconnect --version
openconnect --verbose --user="$VPN_USER" vpn.example.com </dev/null

Păstrați transcrierea local, pentru că cookie-urile și răspunsurile de autentificare sunt material de acces. O urmă lipită într-o conversație este o scurgere de credențiale chiar și atunci când pasul de evaluare pare inofensiv. Partajați textul erorii și punctul din flux în care a apărut, niciodată conținutul.

Pasul 2: Citiți scriptul înainte de a intra într-un profil

Un wrapper este doar atât de sigur cât revizia pe care ați examinat-o, așa că fixați acea revizie și păstrați hash-ul ei lângă nota de aprobare. Cele două comenzi de mai jos vă dau o amprentă și o verificare sintactică ieftină înainte de a citi o singură linie. De asemenea, îi dau următoarei persoane o referință fixă, ceea ce contează când fișierul trăiește în afara administrării pachetelor. Niciuna dintre comenzi nu spune ce face scriptul, așa că rulați-le și continuați să citiți.

sha256sum ./vpn-csd-wrapper.sh
bash -n ./vpn-csd-wrapper.sh

Citiți tot fișierul cu patru întrebări în minte: face apeluri HTTP de ieșire, citește fișiere de credențiale sau variabile de mediu, scrie în afara unui director temporar și vreo ramură raportează o postură trecută fără să măsoare nimic. Ultimul model este o ocolire a politicii cu o linie de jurnal atașată. Wrapperele copiate tind să o strecoare în spatele unei verificări care pare plauzibilă. Dacă scriptul decide că dispozitivul este în regulă înainte de a se uita la dispozitiv, opriți-vă acolo.

Verificați și încărcăturile ambalate, pentru că un antet lizibil nu dovedește nimic despre restul fișierului. Descărcarea unui script de pe un fir de forum nu îl face de încredere doar pentru că numele lui rezonează cu o componentă reală de verificare a gazdei. Notați cine l-a instalat, de unde a venit și cum va fi actualizat.

grep -nE 'base64 -d|xxd -r|eval |curl |wget ' ./vpn-csd-wrapper.sh

Pasul 3: Alegeți identitatea sub care rulează wrapperul

--csd-user scade privilegiile în timp ce programul CSD, TNCC sau HIP rulează. Acest cont face parte din aranjamentul local de execuție, nu din numele de utilizator trimis gateway-ului.

Dați wrapperului un cont dedicat fără shell interactiv, fără drepturi sudo și fără apartenențe la grupuri de care nu are nevoie. Acordați acces de citire la script și la fișierele specifice pe care le inspectează, apoi testați reducerea privilegiilor înainte de a atinge profilul VPN. Găsirea problemei aici costă mai puțin decât găsirea ei în interiorul clientului.

sudo -u vpn-csd /usr/local/libexec/vpn-csd-wrapper.sh

Reducerea privilegiilor limitează daunele pe care le poate produce un script prost. Nu revizuiește codul, nu face raportul adevărat și nu stabilește că administratorul gateway-ului acceptă această implementare ca îndeplinire a politicii dispozitivelor.

Pasul 4: Păstrați modificarea reversibilă

Faceți o copie de siguranță a profilului înainte de a-l edita și țineți wrapperul sub controlul versiunilor, astfel încât o revenire să restaureze un hash cunoscut în loc să caute o copie. Notați calea scriptului, hash-ul, utilizatorul de execuție și aprobatorul într-un singur loc.

Pentru a reveni, eliminați opțiunea, reporniți clientul și confirmați că eroarea originală revine. Dacă gateway-ul încă respinge autentificarea după revenire, s-a schimbat și altceva, iar găsirea acelei diferențe vine înainte de a reîncerca wrapperul. Păstrați copia anterioară pe toată durata ferestrei de schimbare, ceea ce pentru majoritatea echipelor înseamnă până la trecerea următoarei ferestre de mentenanță.

După o implementare reușită, verificați două lucruri în loc de unul: tunelul se ridică și un dispozitiv care ar trebui să eșueze la verificarea posturii este în continuare refuzat. O conexiune care funcționează pentru toți nu este dovada că evaluarea a supraviețuit modificării dumneavoastră.

Scurtături care creează o a doua problemă

Nu lăsați ajutorul să raporteze o stare conformă fără a rula verificările cerute și nu suprascrieți identitatea platformei pentru a se potrivi cu alt sistem de operare. Afirmarea unei alte platforme nu este dovada că dispozitivul real respectă politica. Vă lasă cu un client care minte la fiecare autentificare viitoare.

Dezactivarea verificării serverului, reluarea unui cookie vechi și stivuirea scripturilor nerevizuite schimbă toate un eșec vizibil cu unul invizibil. Dacă clientul instalat nu poate finaliza fluxul acceptat, cereți o alternativă aprobată în loc să îndoiți cea pe care o aveți.

Manualul OpenConnect documentează --csd-wrapper și --csd-user separat, și acesta este indiciul care contează: scriptul și identitatea sunt două decizii. Revizuiți-le separat și notați-le pe amândouă. Atunci promptul de autentificare încetează să mai fie un mister pe care îl rezolvați lipind cod.

Articole similare