Root í flugstöð, hafnað undir SELinux: hvers vegna hookið bregst
Hook sem virkar fullkomlega í höndunum getur verið hafnað inni í þjónustunni. Berið saman léni ferlisins, merkingu skráarinnar og þá heimild sem var hafnað áður en þið breytið.
Þú keyrir up-skriptið sem root, það klárast, og sama skript bregst þegar þjónustan kallar á það. Ekkert hefur breyst í heimildum skráarinnar, svo eðlilega næsta skrefið er að slaka á þeim aftur, sem lagar ekki neitt. Á SELinux vél er ákvörðunarþátturinn oft ekki hver ferlið er heldur í hvaða léni það keyrir, og root inni í takmörkuðu léni er enn takmarkað.
Sama skipun, tvö ólík öryggislén
Framfylgni gerða metur upprunalénið, markmerkinguna og umbeðna aðgerð saman. Tímabundin lotan þín keyrir í ótakmörkuðu eða stjórnunarléni, og púkinn keyrir í því léni sem einingunni hans er úthlutað. Því gefa samhljóða skipanir ólíkar niðurstöður, og munurinn er viljandi en ekki galli í stefnunni.
Þess vegna er samanburður á keyrslunum tveimur aðeins gagnlegur ef þú ber saman samhengi þeirra. Keyrðu sömu skipun úr skelinni og úr hookinu, og skeljarútgáfan sannar að tvíundarskráin sé til og röksemdirnar réttar; hún sannar ekkert um hvort þjónustunni sé heimilt að keyra hana. Keyrðu hana á báða vegu og berðu saman lénín, ekki bara útgangskóðana. Þessi samanburður er það sem breytir óljósum heimildakvörtun í nákvæma spurningu um eitt lén og eina merkingu.
Klassísk mynd þessa galla er hjálparforrit sem kallar á ytra tól. Hookið sjálft getur verið leyfilegt, á meðan tólið sem það kallar á ber merkingu sem léni þjónustunnar er ekki heimilt að keyra, eða skrifar í möppu sem merking hennar bannar.
Lestu AVC-færsluna við hlið hookvillunnar
AVC-höfnun nefnir þá reiti sem ráða úrslitum: upprunasamhengi ferlisins, marksamhengi hlutarins, flokk hlutarins og þá tilteknu heimild sem var hafnað. Lestu alla fjóra áður en þú myndar kenningu, því höfnun á keyrslu og höfnun á skrifum krefjast gjörólíkra lagfæringa.
ausearch -m AVC,USER_AVC -ts recent
ls -Z /usr/local/sbin/vpn-up.sh
ps -eZ | grep openvpn
Upprunasamhengið ætti að passa við lénið sem þjónustan keyrir í raun og veru, og marksamhengið við merkingu skráarinnar eða möppunnar sem aðgerðin snerti. Ef annað þeirra passar ekki við villuna sem þú ert að elta, ertu að lesa aðra atburðarás.
Skrifaðu niður útgáfu stefnunnar og nákvæma slóð keyranlegu skráarinnar við hlið færslunnar. Lénsnafn sem kemur fyrir í stefnu einnar dreifingar er sönnun um þá uppsetningu, ekki ábyrgð á því að önnur bygging sendi sömu reglur. Þetta samhengi er það sem gerir öðrum kleift að endurtaka niðurstöðu þína á sínu eigin vél. Án þess er færslan lesin sem anekdóta frekar en sönnun.
Merking, stilling eða stefna: þrjár lagfæringar
Fyrsta lagfæringin er merking sem passar ekki við uppsetta staðsetningu skráarinnar. Skript sem var afritað á sinn stað með cp eða skrifað af ritli getur borið sjálfgefna merkingu sem lén þjónustunnar getur ekki notað, og endurheimt vænts samhengis lagar það án þess að snerta stefnuna yfirleitt.
Önnur er stillingin. Dreifingin kann að bjóða studda leið til að keyra aðgerðina, skjalfesta möppu fyrir hjálparforritið eða uppfærða stefnupakka sem leyfir hana þegar. Að breyta útliti þínu í það studda er ódýrara en að skrifa stefnu og lifir af uppfærslur.
Þriðja er regla sem virkilega vantar, og hún ætti að vera síðasta úrræðið. Búðu til kandídat með endurskoðunartólunum, lestu hvað það leyfir í raun, þrengðu það að aðgerðinni og léninu sem þú fylgdist með, og láttu annan fara yfir það áður en það nálgast framleiðslu.
Hvers vegna gamalt allow-eining er ekki svarið
Leitarniðurstöður fyrir þennan galla eru fullar af tilbúnum einingum, oft fyrir tól sem hookið kallar ekki lengur á. Að setja eina upp veitir heimildir sem eiga kannski ekkert sameiginlegt með höfnun þinni, og heldur raunverulega misræminu á sínum stað á meðan bætt er við varanlegri holu.
Það felur líka næstu bilun. Eining sem leyfir breiðan flokk aðgerða lætur þessa villu hverfa og gerir þá næstu að einhverju miklu erfiðara að rekja. Að fjarlægja eininguna seinna er líka breyting sem engin vill skipuleggja, svo stuttleiðin hefur tilhneigingu til að verða varanleg.
Hinn agaði samanburður er milli höfnunarinnar sem þú getur lesið og breytingarinnar sem þú leggur til. Handbók Red Hat um úrræði SELinux-vandamála setur merkingar- og stillingaprófanir framar sköpuðu stefnunni einmitt af þessari ástæðu. Ef engin samsvarandi höfnun er í færslunni er SELinux líklega ekki vandamálið þitt, og atriði um slóð, sandbox eða heimildir eru enn opin.