OpenConnect csd-wrapper: revider skriptet før innlogginga
Handsam --csd-wrapper som ei grense for kodekøyring: revider skriptet, vel ein dedikert csd-brukar, og verifiser kva gatewayen faktisk ser.
Å leggje --csd-wrapper til ein profil gjev eit lokalt skript til ein daemon som køyrer det under innlogging, så avgjerda framfor deg er ein kodegjennomgang, ikkje ein preferansebrytar. Alternativet finst for at vertskontrollkomponenten til gatewayen skal kunne erstattast, og det tek ei sti til eit skript du leverer. Alt nedanfor føreset at utrullingseigaren allereie har sagt kva posturkontroll som krevst; om den delen framleis er open, avgjer du han først. Køyreboka har fire trinn: finn trinnet som feila, les skriptet, vel identiteten det køyrer som, og prov resultatet.
Trinn 1: Finn trinnet som feila
Den siste meldinga frå klienten handlar vanlegvis om ein informasjonskapsel, som er slutten på ei kjede og ikkje byrjinga. Ei HTTPS-innlogging, ein servercertifikatkontroll, ei autentiseringsutveksling og ein posturkomponent står alle framfor den meldinga.
Noter versjonen og innloggingsadressa som blir brukte, og gjenta så forsøket med utfyllande utdata halde på din eigen terminal. Les den første feilen som ikkje er eit nytt forsøk, ikkje den siste linja i transkripsjonen. Om loggen stoppar før nokon vurderingskomponent er namngjeven, er wrapperen enno ikkje problemet ditt. Å leggje han til på det tidspunktet utvidar berre flata du må forsvare seinare.
openconnect --version
openconnect --verbose --user="$VPN_USER" vpn.example.com </dev/nullHald transkripsjonen lokalt, fordi informasjonskapslar og autentiseringssvar er tilgangsmateriale. Eit spor som blir lima inn i ein chatttråd, er ein lekkasje av påloggingsinformasjon sjølv når vurderingstrinnet ser harmlaust ut. Del feilteksten og punktet i flyten der han dukka opp, aldri nyttelasta.
Trinn 2: Les skriptet før det går inn i ein profil
Ein wrapper er berre så påliteleg som revisjonen du gjekk gjennom, så fest den revisjonen og lagre hashen ved sida av godkjenningsnotatet. Dei to kommandoane nedanfor gjev deg eit fingeravtrykk og ein billeg syntakssjekk før du les ei einaste linje. Dei gjev også neste person ein fast referanse, noko som betyr noko når fila lever utanfor pakkehandtering. Ingen av kommandoane seier kva skriptet gjer, så køyr dei og hald fram med å lese.
sha256sum ./vpn-csd-wrapper.sh
bash -n ./vpn-csd-wrapper.shLes heile fila med fire spørsmål i tankane: gjer ho utgåande HTTP-kall, les ho påloggingsfiler eller miljøvariablar, skriv ho utanfor ein mellombels katalog, og rapporterer noka grein ein bestått postur utan å måle noko. Det siste mønsteret er ei omgåing av policyen med ei logglinje fest til. Kopierte wrappar smuglar det gjerne inn bak ein kontroll som ser plausibel ut. Om skriptet avgjer at eininga er fin før det ser på eininga, stopp der.
Sjekk også for pakka nyttelaster, fordi ein lesbar header ikkje provar noko om resten av fila. Å laste ned eit skript frå ein forumtråd gjer det ikkje påliteleg berre fordi namnet gjenklangar ein ekte vertskontrollkomponent. Noter kven som installerte det, kvar det kom frå, og korleis det vil bli oppdatert.
grep -nE 'base64 -d|xxd -r|eval |curl |wget ' ./vpn-csd-wrapper.shTrinn 3: Vel identiteten wrapperen køyrer som
--csd-user senkjer privilegia medan CSD-, TNCC- eller HIP-programmet køyrer. Den kontoen er ein del av den lokale køyretidsordninga, ikkje brukarnamnet som blir sendt til gatewayen.
Gje wrapperen ein dedikert konto utan interaktivt skal, utan sudo-rettar og utan gruppemedlemskap han ikkje treng. Gje lesetilgang til skriptet og til dei bestemte filene det inspiserer, og test deretter senkinga før du rører VPN-profilen. Å finne problemet her er billegare enn å finne det inne i klienten.
sudo -u vpn-csd /usr/local/libexec/vpn-csd-wrapper.shLågare privilegiar grensar skaden eit dårleg skript kan gjere. Det reviderer ikkje koden, gjer ikkje rapporten sann, eller slår ikkje fast at gatewayadministratoren godtek denne implementeringa som oppfylling av einingarpolicyen.
Trinn 4: Hald endringa reversibel
Ta tryggleikskopi av profilen før du redigerer han, og hald wrapperen under versjonskontroll slik at ei tilbakerulling gjenopprettar ein kjend hash i staden for å leite etter ein kopi. Skriv ned stien til skriptet, hashen, køyrebrukaren og godkjenaren på eitt sted.
For å rulle tilbake, fjern alternativet, start klienten på nytt og stadfest at den opphavlege feilen kjem tilbake. Om gatewayen framleis avviser innlogginga etter tilbakerullinga, er noko anna også endra, og å finne den skilnaden kjem før eit nytt forsøk med wrapperen. Hald den førre kopien gjennom heile endringsvindauget, som for dei fleste team betyr til neste vedlikehaldsvindauge er passert.
Etter ein vellukka utrulling, sjekk to ting i staden for éin: tunnelen kjem opp, og ei eining som skal feile posturkontrollen blir framleis avvist. Ei tilkopling som verkar for alle, er ikkje prov for at vurderinga overlevde endringa di.
Snarvegar som skapar eit nytt problem
Ikkje la hjelparen rapportere ein samsvarande tilstand utan å køyre dei påkravde kontrollane, og ikkje overstyr plattformidentiteten for å matche eit anna operativsystem. Å hevde ein annan plattform er ikkje prov for at den verkelege eininga oppfyller policyen. Det lèt deg sitje att med ein klient som lyg ved kvar framtidig innlogging.
Å slå av serververifisering, spele av ein gammal informasjonskapsel på nytt og stable ureviderte skript byter alle ein synleg feil mot ein usynleg. Om den installerte klienten ikkje kan fullføre den støtta flyten, be om eit godkjent alternativ i staden for å bøye det du har.
OpenConnect-handboka dokumenterer --csd-wrapper og --csd-user kvar for seg, og det er hintet som betyr noko: skriptet og identiteten er to avgjerder. Gå gjennom dei kvar for seg og skriv ned båe. Då sluttar innloggingsspørsmålet å vere eit mysterium du løyser ved å lime inn kode.