OpenConnect csd-wrapper: audito skriptin përpara hyrjes
Trajto --csd-wrapper si kufi të ekzekutimit të kodit: audito skriptin, zgjidh një përdorues csd të dedikuar dhe verifiko çfarë sheh vërtet porta.
Shtimi i --csd-wrapper në një profil i dorëzon një skript lokal një daemon që e ekzekuton gjatë hyrjes, pra vendimi përpara jush është një rishikim kodi, jo një ndërprerës preferencash. Opsioni ekziston që komponenti i kontrollit të hostit të portës të mund të zëvendësohet, dhe pranon një shteg drejt një skripti që e siguroni ju. Çdo gjë më poshtë supozon se pronari i vendosjes ka thënë tashmë cili kontroll qëndrimi kërkohet; nëse ajo pjesë është ende e hapur, zgjidhni atë fillimisht. Udhëzuesi ka katër hapa: gjeni fazën që dështoi, lexoni skriptin, zgjidhni identitetin nën të cilin ekzekutohet dhe provoni rezultatin.
Hapi 1: Gjeni fazën që dështoi
Mesazhi i fundit i klientit zakonisht ka të bëjë me një cookie, që është fundi i një zinxhiri dhe jo fillimi. Hyrja HTTPS, kontrolli i certifikatës së serverit, shkëmbimi i autentikimit dhe një komponent qëndrimi qëndrojnë të gjithë përpara atij mesazhi.
Regjistroni versionin dhe adresën e hyrjes në përdorim, pastaj përsëritni përpjekjen duke mbajtur daljen e detajuar në terminalin tuaj. Lexoni gabimin e parë që nuk është një ripërpjekje, jo rreshtin e fundit të transkriptit. Nëse regjistri ndalon përpara se të emërtohet ndonjë komponent vlerësimi, mbështjellësi nuk është ende problemi juaj. Shtimi i tij në atë pikë vetëm zgjeron sipërfaqen që do të duhet të mbroni më vonë.
openconnect --version
openconnect --verbose --user="$VPN_USER" vpn.example.com </dev/nullMbajeni transkriptin lokalisht, sepse cookie-t dhe përgjigjet e autentikimit janë material aksesi. Një gjurmë e ngjitur në një bisedë është rrjedhje kredencialesh edhe kur hapi i vlerësimit duket i padëmshëm. Ndani tekstin e gabimit dhe pikën në rrjedhë ku u shfaq, kurrë ngarkesën.
Hapi 2: Lexoni skriptin përpara se të hyjë në një profil
Një mbështjellës është vetëm aq i besueshëm sa rishikimi që shqyrtuat, prandaj fiksoni atë rishikim dhe ruani hash-in e tij pranë shënimit të miratimit. Dy komandat më poshtë ju japin një gjurmë gishti dhe një kontroll sintakse të lirë përpara se të lexoni një rresht të vetëm. Ato i japin personit tjetër edhe një referencë fikse, gjë që ka rëndësi kur skedari jeton jashtë menaxhimit të paketave. Asnjëra komandë nuk thotë çfarë bën skripti, prandaj ekzekutoni ato dhe vazhdoni të lexoni.
sha256sum ./vpn-csd-wrapper.sh
bash -n ./vpn-csd-wrapper.shLexoni të gjithë skedarin me katër pyetje në mendje: a bën thirrje HTTP dalëse, a lexon skedarë kredencialesh ose variabla mjedisi, a shkruan jashtë një drejtorie të përkohshme dhe a raporton ndonjë degë një qëndrim të kaluar pa matur asgjë. Modeli i fundit është një anashkalim politike me një rresht regjistri të bashkangjitur. Mbështjellësit e kopjuar priren ta kontrabandojnë atë pas një kontrolli që duket i besueshëm. Nëse skripti vendos se pajisja është në rregull përpara se të shikojë pajisjen, ndaloni aty.
Kontrolloni edhe ngarkesat e paketuara, sepse një kokë e lexueshme nuk provon asgjë për pjesën tjetër të skedarit. Shkarkimi i një skripti nga një temë forumi nuk e bën atë të besueshëm vetëm sepse emri i tij jehon një komponent të vërtetë të kontrollit të hostit. Regjistroni kush e instaloi, nga erdhi dhe si do të përditësohet.
grep -nE 'base64 -d|xxd -r|eval |curl |wget ' ./vpn-csd-wrapper.shHapi 3: Zgjidhni identitetin nën të cilin ekzekutohet mbështjellësi
--csd-user ul privilegjet ndërsa ekzekutohet programi CSD, TNCC ose HIP. Ai llogari është pjesë e rregullimit lokal të ekzekutimit, jo emri i përdoruesit që i dorëzohet portës.
Jepini mbështjellësit një llogari të dedikuar pa guaskë interaktive, pa të drejta sudo dhe pa anëtarësi në grupe që nuk i nevojiten. Jepni akses leximi skriptit dhe skedarëve konkretë që ai inspekton, pastaj provoni uljen e privilegjeve përpara se të prekni profilin e VPN. Gjetja e problemit këtu kushton më pak se gjetja brenda klientit.
sudo -u vpn-csd /usr/local/libexec/vpn-csd-wrapper.shUlja e privilegjeve kufizon dëmin që mund të shkaktojë një skript i keq. Por nuk e rishikon kodin, nuk e bën raportin të vërtetë dhe nuk vërteton që administratori i portës e pranon këtë zbatim si përmbushje të politikës së pajisjeve.
Hapi 4: Mbajeni ndryshimin të kthyeshëm
Bëni një kopje rezervë të profilit përpara se ta redaktoni dhe mbajeni mbështjellësin nën kontrollin e versioneve, që një kthim prapa të rikthejë një hash të njohur në vend që të kërkojë një kopje. Shkruani shtegun e skriptit, hash-in, përdoruesin e ekzekutimit dhe miratuesin në një vend.
Për të kthyer prapa, hiqni opsionin, rinisni klientin dhe konfirmoni që gabimi origjinal kthehet. Nëse porta vazhdon ta refuzojë hyrjen pas kthimit, diçka tjetër ka ndryshuar gjithashtu, dhe gjetja e asaj diference vjen përpara një prove të re me mbështjellësin. Mbajeni kopjen e mëparshme gjatë gjithë dritares së ndryshimit, që për shumicën e ekipeve do të thotë derisa të kalojë dritarja tjetër e mirëmbajtjes.
Pas një vendosjeje të suksesshme, kontrolloni dy gjëra në vend të një: tuneli ngrihet dhe një pajisje që duhet të dështojë në kontrollin e qëndrimit vazhdon të refuzohet. Një lidhje që funksionon për të gjithë nuk është provë që vlerësimi i mbijetoi ndryshimit tuaj.
Shkurtore që krijojnë një problem të dytë
Mos lejoni që ndihmësi të raportojë një gjendje konforme pa ekzekutuar kontrollet e kërkuara dhe mos e anashkaloni identitetin e platformës që të përputhet me një sistem tjetër operativ. Pohimi i një platforme tjetër nuk është provë që pajisja reale përmbush politikën. Ju lë me një klient që gënjen në çdo hyrje të ardhshme.
Çaktivizimi i verifikimit të serverit, riprodhimi i një cookie të vjetër dhe grumbullimi i skripteve të paaudituar i ndërrojnë të gjitha një dështim të dukshëm me një të padukshëm. Nëse klienti i instaluar nuk mund ta përfundojë rrjedhën e mbështetur, kërkoni një alternativë të miratuar në vend që të përkulni atë që keni.
Manuali i OpenConnect dokumenton --csd-wrapper dhe --csd-user veçmas, dhe ky është indici që ka rëndësi: skripti dhe identiteti janë dy vendime. Rishikojini veçmas dhe shkruajini të dyja. Atëherë kërkesa e hyrjes pushon së qeni enigmë që e zgjidhni duke ngjitur kod.