Dodajanje --csd-wrapper v profil preda lokalni skript demonu, ki ga izvaja med prijavo, zato je odločitev pred vami pregled kode, ne stikalo nastavitve. Možnost obstaja zato, da je mogoče zamenjati komponento preverjanja gostitelja na prehodu, in sprejme pot do skripta, ki ga zagotovite. Vse spodaj predpostavlja, da je lastnik uvedbe že povedal, katero preverjanje drže je potrebno; če je ta del še odprt, ga najprej rešite. Vodnik ima štiri korake: poiščite neuspešno stopnjo, preberite skript, izberite identiteto, pod katero teče, in dokažite izid.

Korak 1: Poiščite neuspešno stopnjo

Zadnje sporočilo odjemalca običajno govori o piškotku, kar je konec verige in ne njen začetek. Prijava HTTPS, preverjanje strežniškega potrdila, izmenjava overjanja in komponenta drže stojijo vse pred tem sporočilom.

Zabeležite različico in naslov prijave, ki se uporablja, nato poskus ponovite s podrobnim izpisom, ki ostane na vašem terminalu. Preberite prvo napako, ki ni ponovni poskus, ne zadnje vrstice zapisa. Če se dnevnik ustavi, preden je imenovana katera koli komponenta ocene, ovoj še ni vaša težava. Dodajanje na tej točki samo razširi površino, ki jo boste morali pozneje braniti.

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

Zapis hranite lokalno, ker so piškotki in odgovori overjanja dostopno gradivo. Sled, prilepljena v klepet, je uhajanje poverilnic, tudi ko je korak ocene videti neškodljiv. Delite besedilo napake in točko v toku, kjer se je pojavila, nikoli vsebine.

Korak 2: Preberite skript, preden stopi v profil

Ovoj je le tako zanesljiv, kot je revizija, ki ste jo pregledali, zato to revizijo pripnite in shranite njen hash ob opombi o odobritvi. Spodnja dva ukaza vam dasta prstni odtis in poceni preverjanje skladnje, še preden preberete eno vrstico. Dasta tudi naslednji osebi fiksno referenco, kar je pomembno, ko datoteka živi zunaj upravljanja paketov. Noben ukaz ne pove, kaj skript počne, zato ju zaženite in berite naprej.

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

Preberite celotno datoteko s štirimi vprašanji v mislih: izvaja odhodne klice HTTP, bere datoteke poverilnic ali okoljske spremenljivke, piše zunaj začasne mape in ali katera veja poroča o prestani drži, ne da bi karkoli izmerila. Zadnji vzorec je obhod politike s priloženo vrstico dnevnika. Kopirani ovoji ga radi pretihotapijo za na videz verodostojnim preverjanjem. Če skript odloči, da je naprava v redu, preden si napravo ogleda, se tam ustavite.

Preverite tudi zapakirane vsebine, ker berljiva glava ne dokaže ničesar o preostanku datoteke. Prenos skripta z niti foruma ga ne naredi zanesljivega samo zato, ker njegovo ime spominja na resnično komponento preverjanja gostitelja. Zabeležite, kdo ga je namestil, od kod prihaja in kako bo posodobljen.

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

Korak 3: Izberite identiteto, pod katero teče ovoj

--csd-user zniža privilegije, medtem ko se izvaja program CSD, TNCC ali HIP. Ta račun je del lokalne ureditve izvajanja, ne uporabniško ime, poslano prehodu.

Dajte ovoju namenski račun brez interaktivne lupine, brez pravic sudo in brez članstev v skupinah, ki jih ne potrebuje. Odobrite bralni dostop do skripta in do konkretnih datotek, ki jih pregleduje, nato preizkusite znižanje, preden se dotaknete profila VPN. Iskanje težave tukaj je cenejše od iskanja v odjemalcu.

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

Znižanje privilegijev omeji škodo, ki jo lahko povzroči slab skript. Ne pregleda kode, ne naredi poročila resničnega in ne ugotovi, da skrbnik prehoda sprejema to izvedbo kot izpolnitev politike naprav.

Korak 4: Ohranite spremembo povratno

Pred urejanjem naredite varnostno kopijo profila in ovoj držite pod nadzorom različic, da vračanje obnovi znani hash namesto iskanja kopije. Zabeležite pot skripta, hash, uporabnika izvajanja in odobritelja na enem mestu.

Za vračanje odstranite možnost, znova zaženite odjemalca in potrdite, da se prvotna napaka vrne. Če prehod tudi po vračanju zavrača prijavo, se je spremenilo še kaj drugega, in iskanje te razlike pride pred ponovnim poskusom z ovojem. Obdržite prejšnjo kopijo ves čas okna sprememb, kar za večino ekip pomeni do preteka naslednjega vzdrževalnega okna.

Po uspešni uvedbi preverite dve stvari namesto ene: tunel se dvigne in naprava, ki bi morala pasti pri preverjanju drže, je še vedno zavrnjena. Povezava, ki deluje za vse, ni dokaz, da je ocena preživela vašo spremembo.

Bližnjice, ki ustvarijo drugo težavo

Ne dovolite pomočniku, da poroča o skladnem stanju brez izvajanja zahtevanih preverjanj, in ne prepišite identitete platforme, da bi ustrezala drugemu operacijskemu sistemu. Trditev o drugi platformi ni dokaz, da resnična naprava izpolnjuje politiko. Ostane vam odjemalec, ki laže ob vsaki prihodnji prijavi.

Izklop preverjanja strežnika, predvajanje starega piškotka in kopičenje nepregledanih skriptov vsi zamenjajo vidno napako z nevidno. Če nameščeni odjemalec ne more dokončati podprtega toka, prosite za odobreno alternativo, namesto da upogibate obstoječo.

V priročniku OpenConnect sta --csd-wrapper in --csd-user dokumentirana ločeno, in to je namig, ki šteje: skript in identiteta sta dve odločitvi. Preglejte ju ločeno in zapišite oba. Potem poziv za prijavo ni več uganka, ki jo rešujete z lepljenjem kode.

Sorodni članki