Root terminale, atmesta pagal SELinux: kodėl hook nepavyksta
Hook, kuris rankiniu būdu veikia nepriekaištingai, gali būti atmestas paslaugos viduje. Prieš redaguodami palyginkite proceso domeną, failo žymą ir atmestą leidimą.
Jūs paleidžiate up scenarijų kaip root, jis baigiasi, o tas pats scenarijus nepavyksta, kai paslauga jį iškviečia. Failo leidimuose niekas nepasikeitė, todėl natūralus kitas žingsnis yra juos vėl atlaisvinti, o tai nieko neištaiso. SELinux hoste lemiamas veiksnys dažnai yra ne tai, kas yra procesas, o tai, kuriame domene jis veikia, o root ribotame domene vis tiek lieka ribotas.
Ta pati komanda, du skirtingi saugumo domenai
Tipų vykdymas kartu vertina šaltinio domeną, tikslo žymą ir prašomą operaciją. Jūsų terminalo sesija veikia neribotame arba administraciniame domene, o demonas veikia tame domene, kuris priskirtas jo vienetui. Todėl identiškos komandos duoda skirtingus sprendimus, ir šis skirtumas yra tyčinis, o ne politikos klaida.
Štai kodėl dviejų paleidimų palyginimas naudingas tik tada, kai lyginate jų kontekstus. Paleiskite tą pačią komandą iš apvalkalo ir iš hook, o apvalkalo versija įrodo, kad dvejetainis failas egzistuoja ir argumentai teisingi; ji nieko neįrodo apie tai, ar paslaugai leidžiama jį vykdyti. Paleiskite abiem būdais ir palyginkite domenus, ne tik išėjimo kodus. Būtent šis palyginimas neaiškų leidimų skundą paverčia konkrečiu klausimu apie vieną domeną ir vieną žymą.
Klasikinė šios gedimo forma yra pagalbinė programa, kuri kviečia išorinį įrankį. Pats hook gali būti leidžiamas, o įrankis, kurį jis kviečia, turi žymą, kurios paslaugos domenas negali vykdyti, arba rašo į katalogą, kurio žyma tai draudžia.
Skaitykite AVC įrašą šalia hook klaidos
AVC atmetimas įvardija laukus, kurie sprendžia bylą: proceso šaltinio kontekstą, objekto tikslo kontekstą, objekto klasę ir konkretų atmestą leidimą. Perskaitykite visus keturis prieš kurdami teoriją, nes atmetimas dėl vykdymo ir atmetimas dėl rašymo turi visiškai skirtingus taisymus.
ausearch -m AVC,USER_AVC -ts recent
ls -Z /usr/local/sbin/vpn-up.sh
ps -eZ | grep openvpn
Šaltinio kontekstas turėtų atitikti domeną, kuriame paslauga iš tikrųjų veikia, o tikslo kontekstas – failo ar katalogo, kurį palietė operacija, žymą. Jei nors vienas iš jų neatitinka klaidos, kurią sekate, jūs skaitote kitą įvykį.
Šalia įrašo pasižymėkite politikos versiją ir tikslų vykdomojo failo kelią. Domeno vardas, pasirodantis vienos distribucijos politikoje, yra to įdiegimo įrodymas, o ne garantija, kad kitas rinkinys pateikia tas pačias taisykles. Būtent šis kontekstas leidžia kam nors kitam atkartoti jūsų išvadą savo hoste. Be jo įrašas skaitomas kaip anekdotas, o ne kaip įrodymas.
Žyma, konfigūracija ar politika: trys taisymai
Pirmasis taisymas – žyma, kuri neatitinka failo įdiegimo vietos. Scenarijus, nukopijuotas į vietą su cp arba parašytas redaktoriaus, gali turėti numatytąją žymą, kurios paslaugos domenas negali naudoti, ir laukiamo konteksto atkūrimas tai ištaiso visiškai neliečiant politikos.
Antrasis – konfigūracija. Distribucija gali siūlyti palaikomą būdą operacijai vykdyti, dokumentuotą katalogą pagalbinei programai arba atnaujintą politikos paketą, kuris ją jau leidžia. Pakeisti savo išdėstymą į palaikomą yra pigiau nei rašyti politiką, ir tai išgyvena atnaujinimus.
Trečiasis – iš tikrųjų trūkstama taisyklė, ir tai turėtų būti paskutinė priemonė. Sugeneruokite kandidatą audito įrankiais, perskaitykite, ką ji iš tikrųjų leidžia, susiaurinkite ją iki operacijos ir domeno, kuriuos stebėjote, ir paprašykite kito žmogaus ją peržiūrėti, kol ji nepriartėjo prie produkcijos.
Kodėl senas allow modulis nėra atsakymas
Šios gedimo paieškos rezultatai pilni paruoštų modulių, dažnai įrankiui, kurio hook nebekviečia. Įdiegus vieną suteikiami leidimai, kurie gali neturėti nieko bendra su jūsų atmetimu, ir tikrasis neatitikimas paliekamas vietoje, tuo pačiu pridedant nuolatinę skylę.
Jis taip pat paslepia kitą gedimą. Modulis, leidžiantis plačią operacijų klasę, privers šią klaidą išnykti ir pavers kitą daug sunkiau priskiriamu. Modulio pašalinimas vėliau taip pat yra pokytis, kurio niekas nenori planuoti, todėl trumpasis kelias linkęs tapti nuolatiniu.
Disciplinuotas palyginimas yra tarp atmetimo, kurį galite perskaityti, ir pakeitimo, kurį siūlote. Red Hat SELinux trikčių šalinimo vadovas žymėjimo ir konfigūracijos patikras iškelia prieš sugeneruotą politiką būtent dėl šios priežasties. Jei įraše nėra atitinkamo atmetimo, SELinux greičiausiai nėra jūsų problema, ir kelio, sandbox ar leidimų klausimai vis dar atviri.