Kodėl nosuid neleidžia VPN pagalbininkui tapti root
Užšifruotas namų katalogas ir nosuid prijungimas yra skirtingos savybės. Pagalbininkui reikia patikimo diegimo kelio ir paleidimo konteksto, kuris gerbia jo privilegijų bitą.
Disko šifravimas ir nosuid prijungimas skamba kaip tos pačios idėjos variantai, tačiau jie visiškai nesusiję. Vienas saugo ramybės būsenos duomenis, o kitas nusprendžia, ar branduolys gerbs privilegijų bitą tuo momentu, kai programa paleidžiama. Pagalbininkas, kuris nepasiekia laukiamos tapatybės, skundžiasi antruoju. Prielaida, kad kaltas pirmasis, siunčia žmones perdiegti klientų, kurie niekada nebuvo sugedę.
Dvi Nesusijusios Savybės
Disko šifravimas atsako, kas gali skaityti blokus, kai įrenginys išjungtas. Prijungimo parinktis atsako, ką branduolys darys su failo režimo bitais, kai kas nors jį įvykdys. Niekas pirmajame neapriboja antrojo, ir visiškai užšifruotas nešiojamasis kompiuteris gali prijungti failų sistemą su visais apribojimais vietoje.
Jų skaitymas kaip vienos savybės ir sukuria teoriją, kad užšifruotas namų katalogas neleidžia root prieigos. Ta teorija gyvuoja todėl, kad du simptomai pasireiškia tame pačiame įrenginyje, o ne todėl, kad jie turi bendrą priežastį.
Kas Iš Tikrųjų Slopina Perėjimą
execve nuoroda aprašo, kaip vykdomasis failas su set-user-ID pakeičia naujo proceso efektyviąją tapatybę failo savininko tapatybe. Tame pačiame puslapyje išvardytos sąlygos, kurios slopina šį perėjimą, ir jų atitikmuo grupės identifikatoriams: no_new_privs nustatymas, failų sistema, prijungta su nosuid, ir sekamas procesas. Failo galimybės ignoruojamos tomis pačiomis sąlygomis. Tos keturios taisyklės apima beveik visas tokio pobūdžio ataskaitas.
Šis sąrašas paaiškina, kodėl ls spausdinamas režimas niekada nėra visa autorizacijos istorija. Jis nepasako, kuri sąlyga sukėlė konkrečią klaidos žinutę, ir programa gali pranešti apie nesusijusią prisijungimo duomenų operaciją tais pačiais žodžiais. Užrašykite tikslią programą, paleidiklį ir klaidų seką prieš darydami išvadą.
Nustatykite vykdomąjį failą, kurį įdiegė palaikomas paketas, jo savininką, tikrąjį kelią ir jį laikančios failų sistemos politiką. Kopija atsisiuntimų aplanke nėra įdiegtas pagalbininkas, kad ir ką sakytų jos režimas.
Ko Nedaryti
Dėti set-user-ID bitus nepatikrintam binariniam failui ir jį kilnoti, kol apribojimas išnyks, nėra taisymas. Tai pakeičia politiką, kurios nesupratote, privilegija, kurios negalite audituoti, o ta pati technika, pritaikyta pagalbininkui, yra gerai žinomas privilegijų didinimo kelias. nosuid pašalinimas iš prijungimo yra blogiau, nes jis paveikia kiekvieną tos failų sistemos programą, o ne tik vieną.
Palaikomas kelias yra kliento dokumentuotas pagalbininko ar paslaugos diegimas, kurį atlieka administratorius ir kuris padeda binarinį failą ten, kur politikos tikisi. Taip lieka vienas privilegijų mechanizmas, o ne du.
Patvirtinkite Tikrąjį Paleidimo Kontekstą
Po leisto pataisymo paleiskite pagalbininką taip, kaip jį paleidžia produktas, o ne iš root apvalkalo. Sėkmė kaip root nieko neįrodo apie kelią, kurį eina paprastas naudotojas, ir skirtumas tarp šių dviejų kontekstų ir yra būtent tai, apie ką buvo ši klaida.
Tada patvirtinkite tinklo operaciją, kuriai pagalbininkas egzistuoja. Pagalbininkas, kuris paleidžiamas, bet negali sukonfigūruoti sąsajos, perkėlė problemą vienu etapu toliau, o ne ją išsprendė.
findmnt -no TARGET,OPTIONS /home
getcap /usr/libexec/openvpn-helper 2>/dev/null; ls -l /usr/libexec/openvpn-helper
Užrašykite prijungimo parinktis ir pagalbininko nuosavybę toje pačioje pastaboje. Priešingu atveju kitas žmogus, kuris tai derins, šifravimo teoriją pradės iš naujo.