Si e shndërron OpenConnect një cookie identifikimi në tunel?
OpenConnect shkëmben një cookie identifikimi në web me një tunel VPN. Cookie është bartës i sesionit, ndaj mbroni dorëzimin, jo vetëm faqen e identifikimit.
OpenConnect lidh dy shkëmbime të veçanta me një vlerë të vetme jetëshkurtër: identifikimin në web dhe tunelin VPN. Shkëmbimi i parë është HTTPS i zakonshëm: kredencialet, një udhëtim SAML ose një token shkojnë te porta, dhe përgjigjja mbart një cookie vërtetimi. Shkëmbimi i dytë i paraqet atë cookie të njëjtës portë si provë se faza e web-it ka ndodhur tashmë, dhe vetëm atëherë ngrihet tuneli.
Gjatë identifikimit nuk negociohet asgjë për tunelin. Kjo është pjesa që ia vlen të kuptohet, sepse shumica e gabimeve në skripte supozojnë se cookie është një fjalëkalim për t'u ruajtur, ose një çelës që mbron trafikun, ndërsa në të vërtetë është një biletë bartëse për një sesion të caktuar të portës.
Çfarë shkëmbejnë klienti dhe porta, sipas radhës
Faza e vërtetimit duket si një sajt i zakonshëm i mbrojtur. OpenConnect dërgon kredencialet e përdoruesit, ose ndjek ridrejtimin e portës drejt një ofruesi identiteti, dhe porta përgjigjet me një dokument që përfshin cookie-n e vërtetimit. Në protokollin AnyConnect kjo vlerë udhëton në një krye cookie në kërkesat pasuese, zakonisht me një emër si webvpn, dhe manuali e trajton si kredencialin që e çon sesionin përpara.
Faza e dytë është një kërkesë CONNECT drejt pikës fundore VPN të portës me atë cookie të bashkangjitur. Porta e verifikon atë, cakton një adresë, dhe klienti nis CSTP mbi TLS, ndërsa DTLS është një shteg të dhënash opsional më i shpejtë sapo sesioni ekziston. Vetëm në këtë pikë vendosen parametrat e tunelit, rrugët, cilësimet e DNS dhe çelësat e trafikut të sesionit. Cookie i dha klientit kalimin nga dera; nuk kriptoi asgjë.
Kjo radhë shpjegon pse ekziston openconnect --authenticate. Ekzekutojeni dhe ai kryen fazën e web-it, shtyp një bllok të vogël variablash shell si COOKIE, HOST, CONNECT_URL dhe FINGERPRINT, dhe pastaj del përpara se të ndërtohet ndonjë tunel. Një skript mbështjellës mund të nisë pastaj lidhjen e vërtetë me ato vlera, dhe pikërisht ky është ndarja që i nevojitet një vendosjeje pa ekran ose me dy kontejnerë.
Cookie është bartës i sesionit, jo çelës
Trajtojeni vlerën ashtu siç do të trajtonit një identifikues sesioni në një aplikacion web. Kushdo që e mban gjatë jetës së tij mund të kërkojë nga porta tunelin për të cilin ai sesion ka të drejtë, ndaj fshehtësia e tij ka rëndësi. Por kopjimi nuk zbulon trafik, sepse konfidencialiteti i tunelit vjen nga shtrëngimi i duarve TLS dhe çelësat e derivuar, jo nga vargu i cookie-t.
Nuk është as një leje e përhershme. Porta dhe ofruesi i identitetit vendosin sa kohë jeton sesioni, dhe një shfletues që ende shfaq një faqe të identifikuar nuk thotë asgjë nëse sesioni i tunelit është ende i vlefshëm. Rilidhja pas skadimit do të thotë të përsëritet faza e web-it dhe të prodhohet një cookie i ri, dhe ky është kuptimi i rivërtetimit, jo një bezdi që duhet anashkaluar me inxhinieri.
Mos e trajtoni cookie-n si zëvendësues universal për kredenciale të tjera. Një pohim SAML, një fjalëkalim shfletuesi dhe një cookie i lëshuar nga një shërbim tjetër janë objekte të ndryshme me audienca të ndryshme, dhe ngjitja e njërit në fushën e tjetrit zakonisht dështon te porta ose, më keq, ka sukses kundër kufirit të gabuar të besimit.
Dorëzimi i cookie-t pa lënë kopje
Dorëzimi mekanik më i sigurt në Linux është hyrja standarde. --cookie-on-stdin e lexon vlerën nga stdin, kështu që cookie nuk shfaqet kurrë në listën e argumenteve të procesit, ku çdo përdorues lokal mund ta lexojë me ps. Një tubacion që vërteton në një proces dhe ushqen tunelin në një tjetër e mban vlerën në një tub dhe jo në një skedar ose variabël mjedisi.
Argumentet dhe variablat e mjedisit janë më të dobëta për arsye të ndryshme. Një argument është i dukshëm në tabelën e proceseve gjatë gjithë jetës së klientit dhe shpesh përfundon në historinë e shell-it. Një variabël mjedisi trashëgohet nga proceset fëmijë, dhe një njësi systemd që e vendos në skedarin e njësisë e ruan sekretin në një konfigurim të lexueshëm. Nëse një skedar është i nevojshëm, kufizojeni atë te llogaria e shërbimit dhe fshijeni kur sesioni të përfundojë.
Mbajeni edhe kufirin e privilegjeve të qëllimshëm. Procesi që flet me ofruesin e identitetit dhe ndoshta hap një shfletues duhet të ekzekutohet si përdoruesi që zotëron atë identifikim. Procesi që konfiguron rrugët, DNS-në dhe pajisjen e tunelit mund të ketë nevojë për më shumë privilegje. Të ekzekutosh të gjithë shfletuesin si root që cookie-t e tij t'i shërbejë një tuneli në pronësi të root është shkëmbimi i gabuar, dhe konfigurimet moderne të OpenConnect mund ta dorëzojnë vlerën përtej atij kufiri në mënyrë të qartë.
Regjistrimi meriton të njëjtën dyshim. Dalja e detajuar e klientit, skriptet ndihmëse dhe diagnostifikimi i portës mund të përsëritin materialin e kërkesës, dhe jo çdo nivel regjistri e fsheh cookie-n. Kapni regjistrin më të vogël të gabimit që ju nevojitet, mbajeni jashtë kanaleve të përbashkëta dhe kontrolloni një mostër të fshehur përpara se t'i bashkëngjitni një tikete.
Verifikimi dhe skadimi në fazën e dytë
Faza e dytë duhet ende të verifikojë serverin. FINGERPRINT që shtyp --authenticate është një fiksim certifikate në formën pin-sha256:, dhe dorëzimi i tij thirrjes së tunelit me --servercert e mban kontrollin të ankoruar te porta ndaj së cilës u vërtetuat. Fikja e kontrollit të certifikatave për të thjeshtuar një skript heq provën e vetme se cookie po dorëzohet te hosti i synuar.
Kur porta e refuzon cookie-n, zgjidhja është një raund i ri vërtetimi, jo një cache më i gjatë. Ruajeni cookie-n vetëm për kohëzgjatjen e lidhjes, fshini skedarët e përkohshëm në dalje dhe përdorni procesin e heqjes së sesionit të ofruesit të identitetit ose të portës kur një sesion ekspozohet ose një pajisje humbet. Një cookie i ruajtur në cache nuk është përjashtim nga MFA.
Përpara se ta automatizoni këtë, verifikoni katër gjëra: tuneli ekzekutohet nën llogarinë e duhur, cookie vjen përmes stdin, gjurma e gishtit e certifikatës është e fiksuar dhe sesioni hidhet kur tuneli mbyllet. Nëse mungon ndonjëra, automatizimi ka zgjeruar besimin te cookie në vend që të riprodhojë rrjedhën manuale.