Id-daemon jirreġistra falliment ta' chroot u l-profil diġà jidher ġeneruż, għalhekk is-soluzzjoni li tħajjar hija li twessa' regola tal-passaġġ u terġa' tibda. Dan normalment ma jbiddel xejn, għax chroot huwa kkontrollat minn privileġġ li l-profil qatt ma seta' jagħti. Biex tiddeċiedi liema saff għandek tmiss, jeħtieġu tliet verifiki rħisa: x'inhu permess li żżomm il-proċess, x'tippermetti l-politika, u x'neħħa l-istartjar qabel ma xi ħaġa minn dawn saret importanti.

Żewġ gradi separati, u waħda biss hija ta' AppArmor

chroot jeħtieġ CAP_SYS_CHROOT fl-ispazju tal-ismijiet tal-utent li fih qed jaħdem il-proċess. Dan huwa privileġġ Linux konvenzjonali, li l-qalba tivverifika qabel ma s-sejħa tagħmel xi ħaġa mal-passaġġi. B'mod separat, profil AppArmor li jinfurza jista' jiċħad il-kapaċità anki meta l-proċess ikolluha, għax il-politika mandatorja tiġi kkonsultata flimkien mal-kredenzjali u mhux minflokhom. Id-differenza hija importanti fil-prattika: iż-żewġ saffi jgħixu f'fajls differenti u normalment iżommuhom nies differenti.

Dawk iż-żewġ gradi jonqsu bl-istess errno. It-tnejn jipproduċu EPERM, u t-tnejn jidhru bħala lment ġeneriku ta' permess fil-log tad-daemon, u għalhekk l-istimar tal-kontenut tal-profil jaħli daqstant ħin. Ir-regola tal-passaġġ li kont se żżid tikkontrolla l-aċċess għall-fajls wara li chroot jirnexxi; m'għandha x'taqsam xejn ma' jekk l-operazzjoni hijiex permessa.

It-tielet grad jinsab fuq it-tnejn. Jekk il-maniġer tas-servizz jew imgeżwer beda l-proċess mingħajr il-kapaċità fis-sett tal-konfini tiegħu, l-ebda bidla f'AppArmor ma tista' ġġibha lura, u ż-żieda ta' kapaċitajiet fil-profil tiddokumenta biss intenzjoni li l-qalba mhux se tirrispetta.

Aqra l-istat tal-privileġġ qabel ma teditja l-politika

Ibda mill-proċess li qed jaħdem u mhux mill-konfigurazzjoni li taħseb li hija attiva. Il-fajl tal-istat juri ħames maski tal-kapaċità u l-bandiera no-new-privileges, u dawn iwieġbu mistoqsijiet differenti:

grep -E '^(CapInh|CapPrm|CapEff|CapBnd|CapAmb|NoNewPrivs):' /proc/$(pidof openvpn)/status
sudo aa-status | grep -i openvpn

CapEff huwa s-sett li jgħodd għas-sejħa: kapaċità li tinsab f'CapBnd iżda mhijiex f'CapEff hija permessa mis-saqaf u bħalissa mhijiex miżmuma. CapAmb tgħodd meta l-binarju mhuwiex privileġġjat fis-sens tas-soltu ta' setuid, għax il-kapaċitajiet ambjentali huma l-mod kif servizz iżomm privileġġ tul exec mingħajr kapaċitajiet tal-fajl. CapInh iżomm bits li jistgħu jintirtu tul exec, iżda biss meta s-sett li jintiret tal-fajl eżegwit jippermettih, għalhekk bit hemmhekk waħdu ma jagħti xejn.

Imbagħad ikkonferma liema profil huwa tassew imwaħħal. Proċess jista' jkun magħluq b'isem ta' profil li ma kontx tistenna, speċjalment meta distribuzzjoni tibgħat il-fajl tal-unità u l-profil tagħha flimkien, u l-qari ta' /proc/PID/attr/current issolviha f'linja waħda. Li tqabbel il-fajl editjat tiegħek mal-profil li jirrapporta l-qalba huwa id-differenza bejn li tissewwi l-kawża u li teditja fajl li ħadd ma jgħabbi.

Żid ir-regola tal-kapaċità biss meta l-traċċa tal-awditjar tgħid hekk

Ir-rekords tal-qalba u tal-awditjar isemmu s-saff li ċaħad. Fittex ċaħda li ġġorr l-operazzjoni capable u l-isem sys_chroot, flimkien mal-profil li pproduċiha. Jekk dak ir-rekord jeżisti, il-proċess diġà kellu l-kapaċità u AppArmor ċaħadha, u l-bidla mmirata hija regola tal-kapaċità fil-profil veru:

capability sys_chroot,

Żommha bħala framment fil-profil li huwa tassew imwaħħal, u vverifika l-kelma ewlenija kontra ir-referenza tal-profili apparmor.d minflok ma tikkopja regola minn tutorial mhux relatat. It-tqegħid tagħha f'include kondiviża jagħtiha lil kull programm magħluq li jiġbed dak il-fajl, u t-tibdil tal-profil għal mod complain jaħbi ċ-ċaħda li jmiss minflok ma ssolvi din. Ir-regola tal-profil tneħħi ċaħda tal-politika; ma tipproduċix privileġġ, għalhekk proċess li qatt ma kellu CAP_SYS_CHROOT fis-sett effettiv tiegħu xorta jonqos bil-regola preżenti.

Jekk ir-rekord tal-awditjar ma jurix xi ċaħda ta' AppArmor xejn, waqqaf l-editjar tal-profil. Qed tara problema ta' kredenzjali, u x-xogħol li jibqa' jinsab fil-fajl tal-unità jew fil-proċess ġenitur, mhux fil-lingwa tal-politika.

Il-maniġer tas-servizz iżomm is-saqaf tiegħu stess

systemd jistabbilixxi sett tal-konfini tal-kapaċitajiet għal kull servizz, u b'mod awtomatiku dak is-sett huwa dejjaq. Kull ma jitwarrab hemmhekk mhuwiex disponibbli għall-proċess tkun xi tkun il-politika tal-profil, u għalhekk unitajiet imwebbsin jistgħu jonqsu f'operazzjoni li kienet taħdem meta d-daemon tħaddem bl-idejn. Id-direttivi rilevanti huma faċli jinqraw fl-unità u faċli jiġu injorati meta l-applikazzjoni tirrapporta l-falliment. Il-fajls drop-in li jibgħat pakkett tad-distribuzzjoni huma s-sors tas-soltu ta' saqaf li ħadd ma jiftakar li kkonfigura.

Li tgħolli s-saqaf u li tagħti l-kapaċità huma żewġ bidliet, mhux waħda. Entrata fis-sett tal-konfini tgħid li l-proċess jista' jżomm il-kapaċità; ma żżidhiex mas-sett effettiv, u NoNewPrivs jista' jostakola li elevazzjoni aktar tard tirnexxi anki meta kollox ieħor jaqbel. Żid biss dak li teħtieġ l-operazzjoni, żomm il-bqija tal-imwebbsin, u rreżisti l-qasira li tagħti kull kapaċità biex tgħaddi sejħa waħda.

L-ordni tgħodd hawn ukoll. Ibdel l-ewwel is-saqaf tal-unità, ivverifika li CapEff issa fih il-bit, u biss imbagħad iddeċiedi jekk AppArmor għadux jiċħad. Li tagħmel iż-żewġ bidliet fl-istess ħin iħallik terġa' tistma jekk il-falliment jippersisti.

Wara li tiġi eliminata ċ-ċaħda, iċċekkja l-ħabs innifsu

chroot li jirnexxi jċaqlaq l-għerq, għalhekk kull passaġġ li d-daemon imiss wara jiġi solvut ġewwa s-siġra l-ġdida. Konfigurazzjoni nieqsa, nodu tal-apparat assenti jew direttorju taċ-ċertifikati li ma ġiex kopjat issa jidhru bħala żball tal-fajl, u dak iż-żball huwa problema tat-tqassim u mhux tal-kapaċità. Aqra l-avveniment li jmiss minflok ma żżid permess ieħor wiesa'. Iċ-ċaqliq ibiddel ukoll it-tifsira ta' passaġġ relattiv, u għalhekk il-gwidi tal-imwebbsin jinsistu fuq passaġġi assoluti fil-konfigurazzjoni tad-daemon.

Jgħin ukoll li tiftakar x'ma jagħmilx chroot. Huwa konfini tal-passaġġ, mhux sandbox: proċess li jżomm il-privileġġ jista' jaħrab minnu, u għalhekk il-kapaċità normalment titbaxxa wara s-sejħa u għalhekk il-konfinament għandu jibqa' madwar id-daemon. Iż-żamma flimkien tal-profil AppArmor, tas-sett tal-konfini tal-kapaċitajiet u tar-restrizzjonijiet tas-sistema tal-fajls hija l-għan ta' dan l-eżerċizzju, mhux fdal li jitneħħa meta s-servizz jibda.

Ir-regola tad-deċiżjoni hija qasira. Jekk ir-rekord tal-awditjar isemmi AppArmor, żid regola waħda tal-kapaċità mal-profil imwaħħal. Jekk is-sett effettiv huwa vojt, sewwi s-saqaf tal-unità u l-ordni tal-ħruġ tal-privileġġ. Jekk il-profil mhuwiex dak li editjajt, waqqaf l-editjar u sib dak veru.

Artikli relatati