Die byvoeging van --csd-wrapper by ’n profiel gee ’n plaaslike skrip aan ’n daemon wat dit tydens aanmelding laat loop, so die besluit voor jou is ’n kode-oudit, nie ’n voorkeur-skakelaar nie. Die opsie bestaan sodat ’n gateway se gasheer-kontrolekomponent vervang kan word, en dit neem ’n pad na ’n skrip wat jy verskaf. Alles hieronder veronderstel dat die ontplooiingseienaar reeds gesê het watter postuur-kontrole vereis word; as daardie deel nog oop is, besleg dit eerste. Die prosedure het vier stappe: vind die mislukte stadium, lees die skrip, kies die identiteit waaronder dit loop, en bewys die uitkoms.

Stap 1: Vind die stadium wat misluk het

Die kliënt se laaste boodskap gaan gewoonlik oor ’n koekie, wat die einde van ’n ketting is eerder as die begin daarvan. ’n HTTPS-aanmelding, ’n bediener-sertifikaatkontrole, ’n verifikasie-uitruiling en ’n postuur-komponent staan alles voor daardie boodskap.

Teken die weergawe en die aanmeldadres wat in gebruik is vas, en herhaal dan die poging met breedsprakige uitvoer wat op jou eie terminaal gehou word. Lees die eerste fout wat nie ’n herprobeerslag is nie, nie die laaste reël van die transkripsie nie. As die logboek stop voordat enige assesseringskomponent genoem word, is die wrapper nog nie jou probleem nie. Om dit op daardie punt by te voeg, verbreed net die oppervlak wat jy later moet verdedig.

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

Hou die transkripsie plaaslik, want koekies en verifikasie-antwoorde is toegangsmateriaal. ’n Spoor wat in ’n kletsdraad geplak word, is ’n geloofsbrief-lek selfs wanneer die assesseringsstap onskadelik lyk. Deel die fouteks en die punt in die vloei waar dit verskyn het, nooit die vrag nie.

Stap 2: Lees die skrip voordat dit ’n profiel betree

’n Wrapper is net so betroubaar soos die weergawe wat jy nagegaan het, so pen daardie weergawe vas en stoor sy hash langs die goedkeuringsnota. Die twee opdragte hieronder gee jou ’n vingerafdruk en ’n goedkoop sintakskontrole voordat jy ’n enkele reël lees. Hulle gee ook die volgende persoon ’n vaste verwysing, wat saak maak wanneer die lêer buite pakketbestuur leef. Nie een van die opdragte sê wat die skrip doen nie, so voer hulle uit en hou aan lees.

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

Lees die hele lêer met vier vrae in gedagte: maak dit uitgaande HTTP-oproepe, lees dit geloofsbrieflêers of omgewingsveranderlikes, skryf dit buite ’n tydelike gids, en rapporteer enige tak ’n slaagpostuur sonder om iets te meet. Daardie laaste patroon is ’n beleid-omseiling met ’n logreël aangeheg. Gekopieerde wrappers smokkel dit gewoonlik in agter ’n geloofwaardig-voorkomende kontrole. As die skrip besluit die toestel is reg voordat dit na die toestel kyk, stop daar.

Kontroleer ook vir verpakte vragte, want ’n leesbare koptekst bewys niks oor die res van die lêer nie. Om ’n skrip van ’n forumdraad af te laai maak dit nie betroubaar net omdat sy naam ’n werklike gasheer-kontrolekomponent weerspieël nie. Teken aan wie dit geïnstalleer het, waar dit vandaan kom, en hoe dit opgedateer sal word.

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

Stap 3: Kies die identiteit waaronder die wrapper loop

--csd-user laat privileges val terwyl die CSD-, TNCC- of HIP-program uitvoer. Daardie rekening is deel van die plaaslike uitvoerreëling, nie die gebruikersnaam wat aan die gateway voorgelê word nie.

Gee die wrapper ’n toegewyde rekening met geen interaktiewe skulp, geen sudo-regte en geen groepildmaatskappe wat dit nie nodig het nie. Verleen leestoegang tot die skrip en tot die spesifieke lêers wat dit inspekteer, en toets dan die val voordat jy aan die VPN-profiel raak. Om die probleem hier te vind is goedkoper as om dit binne die kliënt te vind.

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

Om privileges te laat val beperk die skade wat ’n slegte skrip kan aanrig. Dit hersien nie die kode nie, maak nie die verslag waar nie, en stel nie vas dat die gateway-administrateur hierdie implementering as voldoening aan toestelbeleid aanvaar nie.

Stap 4: Hou die verandering omkeerbaar

Maak ’n rugsteun van die profiel voordat jy dit wysig, en hou die wrapper in weergawebeheer sodat ’n terugrol ’n bekende hash herstel eerder as om na ’n kopie te soek. Skryf die skrippad, hash, uitvoergebruiker en goedkeurder op een plek neer.

Om terug te rol, verwyder die opsie, herbegin die kliënt en bevestig dat die oorspronklike fout terugkeer. As die gateway die aanmelding ná die terugrol steeds verwerp, het iets anders ook verander, en om daardie verskil te vind kom voor die herprobeer van die wrapper. Hou die vorige kopie vir die duur van die veranderingsvenster, wat vir die meeste spanne beteken tot die volgende onderhoudsgleuf verby is.

Ná ’n suksesvolle ontplooiing, kontroleer twee dinge eerder as een: die tonnel kom op, en ’n toestel wat die postuur-kontrole behoort te faal word steeds geweier. ’n Verbinding wat vir almal werk is nie bewys dat die assessering jou verandering oorleef het nie.

Kortpaaie wat ’n tweede probleem skep

Moenie die helper ’n voldoenende toestand laat rapporteer sonder om die vereiste kontroles te laat loop nie, en moenie die platform-identiteit oorheers om by ’n ander bedryfstelsel te pas nie. Om ’n ander platform te eis is nie bewys dat die werklike toestel aan beleid voldoen nie. Dit laat jou met ’n kliënt wat by elke toekomstige aanmelding lieg.

Om bedienerverifikasie te deaktiveer, ’n verouderde koekie te herspeel en onnagegane skripte te stapel, ruil almal ’n sigbare mislukking vir ’n onsigbare een. As die geïnstalleerde kliënt nie die ondersteunde vloei kan voltooi nie, vra vir ’n goedgekeurde alternatief eerder as om die een wat jy het te buig.

Die OpenConnect-handleiding dokumenteer --csd-wrapper en --csd-user afsonderlik, wat die leidraad is wat saak maak: die skrip en die identiteit is twee besluite. Hersien hulle afsonderlik en skryf albei neer. Dan hou die aanmeldprompt op om ’n raaisel te wees wat jy oplos deur kode te plak.

Verwante artikels