chroot wuu ku guuldareystaa OpenVPN: xeer AppArmor mise awood?
Ku darista waddo profile AppArmor waligeed ma bixiso CAP_SYS_CHROOT, diidmada chroot-na waxay ka iman kartaa saddex lakab oo gooni ah. Go'aanso kee inaad beddesho.
Daemoonka wuxuu diiwaangeliyaa guuldarro chroot, profile-kuna horey ayuu u muuqdaa mid ballaaran, marka xallinta soo jiidashada leh waa in la ballaariyo xeer waddo oo dib loo bilaabo. Taasi badanaa waxba ma beddesho, sababtoo ah chroot waxaa xira mudnaan uusan profile-ku waligiis gudbin karin. Go'aansashada lakabka la taaban karo waxay u baahan tahay saddex hubin, wayna jaban yihiin: waxa geeddi-socodka loo oggol yahay inuu haysto, waxa siyaasaddu oggol tahay, iyo waxa bilaabaha uu ka saaray ka hor inta midkoodna muhiim noqon.
Laba irid oo gooni ah, mid keliya ayaa ka tirsan AppArmor
chroot wuxuu u baahan yahay CAP_SYS_CHROOT namespace-ka isticmaalaha ee geeddi-socodku ku socdo. Taasi waa mudnaanta caadiga ah ee Linux, oo kernel-ku hubiyo ka hor inta wicitaanku wax ku sameeyo waddooyinka. Si gooni ah, profile AppArmor oo fulinaya ayaa diidi kara awoodda xitaa marka geeddi-socodku haysto, sababtoo ah siyaasadda qasabka ah waxaa la tashadaa dheeraad ahaan xogta aqoonsiga, ee ma aha beddelkeeda. Farqigaani waa muhiim ficil ahaan: labada lakab waxay ku nool yihiin faylal kala duwan oo badanaa dad kala duwan ayaa dayactira.
Labada iridba waxay ku guuldareystaan isla errno. Labaduba waxay soo saaraan EPERM, labadubana waxay u muuqdaan cabasho guud oo ogolaansho ah diiwaanka daemoonka, taasina waa sababta qiyaasta nuxurka profile-ku ay waqti badan u lumiso. Xeerta waddada ee aad ku sii jeclayd inaad ku darto waxay maamushaa gelitaanka faylalka ka dib marka chroot-ku guulaysto; wax saameyn ah kuma laha haddii hawlgalka la oggol yahay iyo in kale.
Irid saddexaad ayaa ka sarreysa labadaba. Haddii maareeyaha adeegga ama duubitaan uu geeddi-socodka bilaabay isagoo aan lahayn awooddaas ururkiisa xadka, ma jiro isbeddel AppArmor oo dib u soo celin kara, ku darista awoodaha profile-kana waxay kaliya diiwaangelisaa ujeeddo uusan kernel-ku sharafayn doonin.
Akhri xaaladda mudnaanta ka hor inta aadan tafatirin siyaasadda
Ka bilow geeddi-socodka socda halkii aad ka bilaabi lahayd qaabeynta aad u malaynayso inay firfircoon tahay. Faylka xaaladdu wuxuu muujinayaa shan maaskar oo awood ah iyo calanka no-new-privileges, waxayna ka jawaabaan su'aalo kala duwan:
grep -E '^(CapInh|CapPrm|CapEff|CapBnd|CapAmb|NoNewPrivs):' /proc/$(pidof openvpn)/status
sudo aa-status | grep -i openvpn
CapEff waa ururka muhiimka u ah wicitaanka: awood ku jirta CapBnd laakiin ka maqan CapEff waxaa oggol xadka sare oo hadda lama hayo. CapAmb waxay muhiim tahay marka binary-ga aanu mudnaan u lahayn macnaha caadiga ah ee setuid, sababtoo ah awoodaha deegaanka ayaa ah habka adeeggu ku hayo mudnaan exec ka gudub ah isagoo aan lahayn awoodaha faylka. CapInh waxay haysaa bits laga yaabo in lagu dhaxlo exec, laakiin kaliya marka ururka dhaxalka ee faylka la fulinayo uu oggol yahay, marka bit halkaas ku jira keligiis waxba ma bixiyo.
Kadib hubi profile-ka dhab ahaan xidhan. Geeddi-socod waxaa lagu xaddidi karaa magac profile aadan filayn, gaar ahaan marka qaybin ay sii daysato unit-keeda iyo profile-keeda wada, akhrinta /proc/PID/attr/current-na tan waxay ku xallinaysaa hal sadar. Isbarbardhigga faylkaaga tafatiran iyo profile-ka uu kernel-ku sheegayo waa farqiga u dhexeeya hagaajinta sababta iyo tafatirka fayl aan cidna soo dejin.
Ku dar xeerta awoodda kaliya marka raadka audit-ku sidaas yiraahdo
Diiwaannada kernel-ka iyo audit-ka waxay magacaabaan lakabka diiday. Raadi diidmo sita hawlgalka capable iyo magaca sys_chroot, oo la socota profile-kii soo saaray. Haddii diiwaankaas jiro, geeddi-socodku horey ayuu u haystay awoodda oo AppArmor ayaa diiday, isbeddelka bartilmaameedka ahna waa xeer awood gudaha profile-ka dhabta ah:
capability sys_chroot,
Ku hay jajab ahaan profile-ka si dhab ah loo xidhay, oo hubi erayga muhiimka ah tixraaca profile apparmor.d halkii aad ka koobi lahayd xeer ka yimid tababar aan la xiriiirin. Ku ridista include la wadaago waxay siinaysaa barnaamij kasta oo xaddidan oo faylkaas soo dejiya, u beddelashada profile-ka qaabka complain waxay qarinaysaa diidmada xigta halkii ay xallin lahayd tan. Xeerta profile-ku waxay meesha ka saartaa diidmo siyaasadeed; ma abuurto mudnaan, marka geeddi-socod aan waligiis lahayn CAP_SYS_CHROOT ururkiisa waxqabadka ayaa weli guuldareysan doona xitaa xeerta oo taagan.
Haddii diiwaanka audit-ku aanu muujin wax diidmo AppArmor ah, jooji tafatirka profile-ka. Waxaad la macaamilaysaa dhibaatada aqoonsiga, shaqada hadhana waxay ku jirtaa unit-ka ama geeddi-socodka waalidka, ee ma aha luqadda siyaasadda.
Maareeyaha adeeggu wuxuu hayaa xadkiisa u gaar ah
systemd wuxuu adeeg kastaa u dejiyaa urur xad awood, oo caadi ahaan ururkaasi waa cidhiidhi. Wax kasta oo halkaas laga reebay waa mid aan geeddi-socodku heli karin si kasta oo profile-ku u sheego, taasina waa sababta unit-yada adkaaday ay ugu guuldareystaan hawlgalkii shaqeynayay markii daemoonka gacan lagu bilaabay. Tilmaamaha khuseeya waa sahlan in unit-ka laga akhriyo oo sahlan in la iloobo marka codsigu isagu soo sheego guuldarrada. Drop-in-yada ay bixiso xirmada qaybinta ayaa ah isha caadiga ah ee xad aan cidna xasuusaneyn inay dejisay.
Kor u qaadista xadka iyo bixinta awoodda waa laba isbeddel, ma aha mid. Diiwaan ku jira ururka xadku wuxuu sheegayaa in geeddi-socodku hayn karo awoodda; kama daro ururka waxqabadka, NoNewPrivs-na waxay hor istaagi kartaa kor u qaadis dambe inay guulaysto xitaa marka wax kasta oo kale is waafaqaan. Ku dar kaliya waxa hawlgalku u baahan yahay, hay adkaynta inta kale oo aan taaban, kana hor istaag waddada gaaban ee bixinta awoodaha oo dhan si hal wicitaan u gudbo.
Nidaamka ayaa halkan sidoo kale muhiim ah. Beddel xadka unit-ka marka hore, hubi in CapEff uu hadda hayo bitka, kadibna go'aanso haddii AppArmor weli diidayo. Labada isbeddel hal mar sameynta waxay kaa dhigaysaa mid mar kale qiyaasaya haddii guuldarradu sii socoto.
Marka diidmadu ka baxdo, hubi xabsiga laftiisa
chroot guulaystay wuxuu ruxaa xididka, marka waddo kasta oo daemoonku taabto kadib waxaa lagu xalliyaa gudaha geedka cusub. Qaabeyn maqan, noodhka qalab oo aan joogin ama galka shahaadooyinka oo aan la koobin ayaa hadda u muuqan doona khalad fayl, khaladkaasna waa dhibaato habayn ee ma aha awood. Akhri dhacdada xigta halkii aad ku dari lahayd ogolaansho ballaaran oo kale. Ruxitaanku wuxuu sidoo kale beddelaa macnaha waddo qaraabo ah, taasina waa sababta hagayaasha adkayntu ay ku adkaystaan waddooyin buuxa qaabeynta daemoonka.
Waxay sidoo kale caawisaa in la xasuusto waxa chroot aanu qaban. Waa xad waddo, ma aha sandbox: geeddi-socod hayaa mudnaanta wuu ka bixi karaa, taasina waa sababta awoodda badanaa la tuuro wicitaanka kadib iyo sababta xaddidnaantu ay tahay inay ku sii jirto daemoonka hareerihiisa. Haynta wadajirka ah ee profile AppArmor, ururka xadka awoodaha iyo xaddidaadaha nidaamka faylka waa ujeedada layliga, ma aha hadh laga saaro marka adeeggu bilaabmo.
Xeerka go'aanku waa gaaban. Haddii diiwaanka audit-ku magacaabo AppArmor, ku dar hal xeer awood profile-ka xidhan. Haddii ururka waxqabadku madhan yahay, hagaaji xadka unit-ka iyo nidaamka tuurista mudnaanta. Haddii profile-ku aanu ahayn kii aad tafatirtay, jooji tafatirka oo raadso kan dhabta ah.