OpenConnect csd-wrapper: revidér scriptet før login
Behandl --csd-wrapper som en grænse for kodeudførelse: revidér scriptet, vælg en dedikeret csd-bruger, og verificér hvad gatewayen faktisk ser.
At tilføje --csd-wrapper til en profil giver et lokalt script til en daemon, der kører det under login, så beslutningen foran dig er en kodegennemgang, ikke en præferencetoggle. Indstillingen findes, så en gatewayens host-check-komponent kan erstattes, og den tager en sti til et script, du selv leverer. Alt nedenfor forudsætter, at udrulningsejeren allerede har sagt, hvilken posture-kontrol der kræves; er den del stadig åben, skal du afklare den først. Runbooken har fire trin: find det fejlende trin, læs scriptet, vælg den identitet det kører som, og bevis resultatet.
Trin 1: Find det trin, der fejlede
Klientens sidste besked handler normalt om en cookie, hvilket er enden af en kæde snarere end begyndelsen. Et HTTPS-login, et servercertifikattjek, en autentificeringsudveksling og en posture-komponent står alle foran den besked.
Notér versionen og den loginadresse, der bruges, og gentag så forsøget med udførligt output holdt på din egen terminal. Læs den første fejl, der ikke er et nyt forsøg, ikke den sidste linje i transskriptionen. Hvis loggen stopper, før nogen vurderingskomponent er nævnt, er wrapperen endnu ikke dit problem. At tilføje den på det tidspunkt udvider kun den overflade, du skal forsvare senere.
openconnect --version
openconnect --verbose --user="$VPN_USER" vpn.example.com </dev/nullHold transskriptionen lokalt, for cookies og autentificeringssvar er adgangsmateriale. Et spor, der indsættes i en chattråd, er en lækage af legitimationsoplysninger, selv når vurderingstrinnet ser harmløst ud. Del fejlteksten og det punkt i flowet, hvor den dukkede op, aldrig nyttelasten.
Trin 2: Læs scriptet, før det kommer ind i en profil
En wrapper er kun så pålidelig som den revision, du gennemgik, så fastlås den revision og gem dens hash ved siden af godkendelsesnoten. De to kommandoer nedenfor giver dig et fingeraftryk og et billigt syntakstjek, før du læser en enkelt linje. De giver også den næste person en fast reference, hvilket betyder noget, når filen bor uden for pakkehåndtering. Ingen af kommandoerne fortæller, hvad scriptet gør, så kør dem og bliv ved med at læse.
sha256sum ./vpn-csd-wrapper.sh
bash -n ./vpn-csd-wrapper.shLæs hele filen med fire spørgsmål i tankerne: foretager den udgående HTTP-kald, læser den legitimationsfiler eller miljøvariabler, skriver den uden for en midlertidig mappe, og rapporterer nogen gren en bestået posture uden at måle noget. Det sidste mønster er en politikomgåelse med en loglinje hæftet på. Kopierede wrappere smugler den typisk ind bag et plausibelt udseende tjek. Hvis scriptet beslutter, at enheden er fin, før det ser på enheden, så stop der.
Tjek også for pakkede nyttelaster, fordi en læsbar header ikke beviser noget om resten af filen. At downloade et script fra en forumtråd gør det ikke troværdigt, bare fordi navnet genlyder en rigtig host-check-komponent. Notér, hvem der installerede det, hvor det kom fra, og hvordan det vil blive opdateret.
grep -nE 'base64 -d|xxd -r|eval |curl |wget ' ./vpn-csd-wrapper.shTrin 3: Vælg den identitet, wrapperen kører som
--csd-user sænker privilegierne, mens CSD-, TNCC- eller HIP-programmet kører. Den konto er en del af den lokale udførelsesordning, ikke det brugernavn, der sendes til gatewayen.
Giv wrapperen en dedikeret konto uden interaktiv shell, uden sudo-rettigheder og uden gruppemedlemskaber, den ikke har brug for. Giv læseadgang til scriptet og til de specifikke filer, det inspicerer, og test så nedgraderingen, før du rører VPN-profilen. At finde problemet her er billigere end at finde det inde i klienten.
sudo -u vpn-csd /usr/local/libexec/vpn-csd-wrapper.shAt sænke privilegierne begrænser den skade, et dårligt script kan gøre. Det gennemgår ikke koden, gør ikke rapporten sand eller fastslår, at gatewayadministratoren accepterer denne implementering som opfyldelse af enhedspolitikken.
Trin 4: Hold ændringen reversibel
Tag backup af profilen, før du redigerer den, og hold wrapperen under versionskontrol, så en tilbagerulning gendanner en kendt hash i stedet for at lede efter en kopi. Skriv scriptets sti, hash, udførelsesbruger og godkender ned ét sted.
For at rulle tilbage skal du fjerne indstillingen, genstarte klienten og bekræfte, at den oprindelige fejl vender tilbage. Hvis gatewayen stadig afviser login efter tilbagerulningen, er noget andet også ændret, og at finde den forskel kommer før et nyt forsøg med wrapperen. Behold den tidligere kopi i hele ændringsvinduet, hvilket for de fleste teams betyder indtil næste vedligeholdelsesvindue er passeret.
Efter en vellykket udrulning skal du tjekke to ting i stedet for én: tunnelen kommer op, og en enhed, der burde dumpe posture-kontrollen, afvises stadig. En forbindelse, der virker for alle, er ikke bevis for, at vurderingen overlevede din ændring.
Genveje, der skaber et nyt problem
Lad ikke hjælperen rapportere en compliant tilstand uden at køre de krævede kontroller, og tilsidesæt ikke platformidentiteten for at matche et andet styresystem. At påstå en anden platform er ikke bevis for, at den rigtige enhed opfylder politikken. Det efterlader dig med en klient, der lyver ved hvert fremtidige login.
At slå serververifikation fra, genafspille en gammel cookie og stable ureviderede scripts bytter alle en synlig fejl for en usynlig. Hvis den installerede klient ikke kan gennemføre det understøttede flow, så bed om et godkendt alternativ i stedet for at bøje det, du har.
OpenConnect-manualen beskriver --csd-wrapper og --csd-user hver for sig, og det er det hint, der betyder noget: scriptet og identiteten er to beslutninger. Gennemgå dem hver for sig, og skriv begge ned. Så holder loginprompten op med at være et mysterium, du løser ved at indsætte kode.