OpenConnect csd-wrapper: patikrinkite scenarijų prieš prisijungimą
Traktuokite --csd-wrapper kaip kodo vykdymo ribą: patikrinkite scenarijų, pasirinkite atskirą csd naudotoją ir patvirtinkite, ką vartai iš tikrųjų mato.
Pridėjus --csd-wrapper prie profilio, vietinis scenarijus perduodamas demonui, kuris jį vykdo prisijungimo metu, todėl sprendimas prieš jus yra kodo peržiūra, o ne nuostatos jungiklis. Parinktis egzistuoja tam, kad būtų galima pakeisti vartų pagrindinio kompiuterio tikrinimo komponentą, ir priima kelią į jūsų pateiktą scenarijų. Viskas žemiau daro prielaidą, kad diegimo savininkas jau nurodė, kokio laikysenos tikrinimo reikia; jei ta dalis dar atvira, pirmiausia ją išspręskite. Vadove yra keturi žingsniai: rasti nepavykusį etapą, perskaityti scenarijų, pasirinkti tapatybę, kuria jis vykdomas, ir įrodyti rezultatą.
1 žingsnis: Raskite nepavykusį etapą
Paskutinis kliento pranešimas paprastai susijęs su slapuku, o tai grandinės pabaiga, o ne pradžia. HTTPS prisijungimas, serverio sertifikato patikra, autentifikavimo mainai ir laikysenos komponentas visi stovi prieš tą pranešimą.
Užfiksuokite naudojamą versiją ir prisijungimo adresą, tada pakartokite bandymą išsamią išvestį palikdami savo terminale. Skaitykite pirmąją klaidą, kuri nėra pakartotinis bandymas, o ne paskutinę įrašo eilutę. Jei žurnalas sustoja dar nenurodžius jokio vertinimo komponento, tada apvalkalas dar ne jūsų problema. Jo pridėjimas tuo metu tik praplės paviršių, kurį vėliau turėsite ginti.
openconnect --version
openconnect --verbose --user="$VPN_USER" vpn.example.com </dev/nullLaikykite įrašą vietoje, nes slapukai ir autentifikavimo atsakymai yra prieigos medžiaga. Į pokalbį įklijuotas pėdsakas yra prisijungimo duomenų nutekėjimas net tada, kai vertinimo žingsnis atrodo nekenksmingas. Bendrinkite klaidos tekstą ir vietą sraute, kur ji pasirodė, niekada – turinio.
2 žingsnis: Perskaitykite scenarijų prieš jam patenkant į profilį
Apvalkalas yra tik tiek patikimas, kiek jūsų peržiūrėta versija, todėl užfiksuokite tą versiją ir laikykite jos maišą šalia patvirtinimo pastabos. Du žemiau pateikti įsakymai duoda piršto atspaudą ir pigią sintaksės patikrą dar neskaičius nė vienos eilutės. Jie taip pat duoda kitam žmogui fiksuotą nuorodą, o tai svarbu, kai failas gyvena už paketų valdymo ribų. Nė vienas įsakymas nepasako, ką scenarijus daro, todėl juos paleiskite ir skaitykite toliau.
sha256sum ./vpn-csd-wrapper.sh
bash -n ./vpn-csd-wrapper.shSkaitykite visą failą turėdami omenyje keturis klausimus: ar jis daro išeinančius HTTP kvietimus, ar skaito prisijungimo duomenų failus arba aplinkos kintamuosius, ar rašo už laikino katalogo ribų, ir ar kuri nors šaka praneša apie praėjusią laikyseną nieko neišmatavusi. Paskutinis modelis yra politikos apėjimas su prijungta žurnalo eilute. Nukopijuoti apvalkalai linkę jį paslėpti už patikimai atrodančios patikros. Jei scenarijus nusprendžia, kad įrenginys geras, dar nepažiūrėjęs į įrenginį, sustokite ten.
Patikrinkite ir supakuotus turinius, nes perskaitoma antraštė nieko neįrodo apie likusią failo dalį. Scenarijaus atsisiuntimas iš forumo temos nepadaro jo patikimo vien todėl, kad jo pavadinimas primena tikrą pagrindinio kompiuterio tikrinimo komponentą. Užrašykite, kas jį įdiegė, iš kur jis atėjo ir kaip bus atnaujinamas.
grep -nE 'base64 -d|xxd -r|eval |curl |wget ' ./vpn-csd-wrapper.sh3 žingsnis: Pasirinkite tapatybę, kuria vykdomas apvalkalas
--csd-user sumažina privilegijas, kol vykdoma CSD, TNCC arba HIP programa. Ta paskyra yra vietinės vykdymo tvarkos dalis, o ne vartams pateikiamas naudotojo vardas.
Duokite apvalkalui atskirą paskyrą be interaktyvios apvalkalo, be sudo teisių ir be grupės narysčių, kurių jam nereikia. Suteikite skaitymo prieigą prie scenarijaus ir konkrečių failų, kuriuos jis tikrina, tada išbandykite privilegijų sumažinimą prieš liesdami VPN profilį. Problemą rasti čia pigiau nei rasti ją kliento viduje.
sudo -u vpn-csd /usr/local/libexec/vpn-csd-wrapper.shPrivilegijų sumažinimas riboja žalą, kurią gali padaryti blogas scenarijus. Jis neperžiūri kodo, nepadaro ataskaitos teisingos ir nenustato, kad vartų administratorius priima šį įgyvendinimą kaip atitinkantį įrenginių politiką.
4 žingsnis: Išsaugokite pakeitimą grįžtamą
Pasidarykite profilio atsarginę kopiją prieš jį redaguodami ir laikykite apvalkalą versijų kontrolėje, kad atsukimas atkurtų žinomą maišą, o ne ieškotų kopijos. Užrašykite scenarijaus kelią, maišą, vykdymo naudotoją ir tvirtintoją vienoje vietoje.
Norėdami atsukti, pašalinkite parinktį, paleiskite klientą iš naujo ir patvirtinkite, kad pradinė klaida grįžta. Jei vartai vis dar atmeta prisijungimą po atsukimo, kažkas kita taip pat pasikeitė, ir to skirtumo radimas ateina prieš bandant apvalkalą dar kartą. Laikykite ankstesnę kopiją visą pakeitimo langą, o daugumai komandų tai reiškia iki kito techninės priežiūros lango pabaigos.
Po sėkmingo diegimo patikrinkite du dalykus, o ne vieną: tunelis pakyla, ir įrenginys, kuris turėtų nepraeiti laikysenos tikrinimo, vis dar atmetamas. Ryšys, kuris veikia visiems, nėra įrodymas, kad vertinimas išgyveno jūsų pakeitimą.
Trumpieji keliai, kurie sukuria antrą problemą
Neleiskite pagalbininkui pranešti atitinkančios būsenos neįvykdžius reikalaujamų patikrų, ir neperrašykite platformos tapatybės, kad ji atitiktų kitą operacinę sistemą. Teigimas apie kitą platformą nėra įrodymas, kad tikrasis įrenginys atitinka politiką. Tai palieka jus su klientu, kuris meluoja kiekvieno būsimo prisijungimo metu.
Išjungus serverio patikrą, pakartojus pasenusį slapuką ir sukraunant neperžiūrėtus scenarijus, visais atvejais matoma nesėkmė keičiama nematoma. Jei įdiegtas klientas negali užbaigti palaikomo srauto, prašykite patvirtintos alternatyvos, o ne lenkite turimą.
OpenConnect vadovas atskirai dokumentuoja --csd-wrapper ir --csd-user, ir tai yra svarbi užuomina: scenarijus ir tapatybė yra du sprendimai. Peržiūrėkite juos atskirai ir užrašykite abu. Tada prisijungimo raginys nustoja būti mįsle, kurią sprendžiate įklijuodami kodą.