chroot ya kasa a kan OpenVPN: Dokar AppArmor ko Ikon?
Ƙara hanya a cikin bayanin AppArmor ba ya taɓa ba da CAP_SYS_CHROOT, kuma hana chroot na iya fitowa daga matakai uku daban-daban. Gano wanne za a canza.
Daemon yana rubuta gazawar chroot kuma bayanin ya riga ya yi kyau, don haka maganin da ya fi jan hankali shi ne faɗaɗa dokar hanya sannan a sake kunnawa. Wannan yawanci ba ya canza komai, domin chroot yana ƙarƙashin izinin da bayanin bai taɓa iya bayarwa ba. Don yanke shawarar wane mataki za a taɓa, ana bukatar bincike uku masu sauƙi: abin da aka ba wa tsari izinin riƙewa, abin da manufa ta yarda, da abin da mai ƙaddamarwa ya cire kafin ɗayan waɗannan ya yi tasiri.
Ƙofofi biyu daban, kuma ɗaya ne kawai na AppArmor
chroot yana bukatar CAP_SYS_CHROOT a cikin sararin sunan mai amfani da tsarin ke gudana a ciki. Wannan izini ne na al'ada na Linux, wanda kernel ke dubawa kafin kiran ya yi wani abu da hanyoyi. A gefe guda, bayanin AppArmor mai aiwatarwa na iya hana ikon ko da tsarin yana da shi, domin ana tuntuɓar manufar tilas tare da shaidar shiga ba a maimakon ta. Bambancin yana da muhimmanci a aikace: matakan biyu suna cikin fayiloli daban-daban kuma yawanci mutane daban-daban ne ke kula da su.
Waɗannan ƙofofi biyu suna kasa da errno ɗaya. Dukansu suna haifar da EPERM, kuma dukansu suna bayyana a matsayin ƙarar izini ta gama gari a cikin tarihin daemon, wanda shine dalilin da yasa yin hasashe kan abin da ke cikin bayanin ke ɓata lokaci mai yawa. Dokar hanyar da kuka yi niyyar ƙarawa tana sarrafa damar shiga fayil bayan chroot ya yi nasara; ba ta da wata alaƙa da ko an yarda da aikin kwata-kwata.
Ƙofa ta uku tana sama da duka biyun. Idan mai sarrafa sabis ko wani marufi ya fara tsarin ba tare da ikon a cikin jerin iyakarsa ba, babu wani canji na AppArmor da zai iya dawo da shi, kuma ƙara iyawa cikin bayanin yana yin takardar nufi ne kawai da kernel ba zai girmama ba.
Karanta yanayin izini kafin gyara manufa
Fara daga tsarin da ke gudana maimakon daga tsarin da kuke tsammanin yana aiki. Fayil ɗin yanayi yana bayyana makullin iyawa biyar da tutar no-new-privileges, kuma suna amsa tambayoyi daban-daban:
grep -E '^(CapInh|CapPrm|CapEff|CapBnd|CapAmb|NoNewPrivs):' /proc/$(pidof openvpn)/status
sudo aa-status | grep -i openvpnCapEff shine jerin da ke da muhimmanci ga kira: ikon da yake cikin CapBnd amma ba ya cikin CapEff, rufin yana yarda da shi kuma a halin yanzu ba a riƙe shi. CapAmb yana da muhimmanci lokacin da binary ba shi da gata a ma'anar setuid ta al'ada, domin iyawar muhalli ita ce hanyar da sabis ke riƙe gata a fadin exec ba tare da iyawar fayil ba. CapInh yana riƙe da bit da za su iya gado a fadin exec, amma kawai lokacin da jerin gado na fayil ɗin da aka aiwatar ya yarda, don haka bit ɗin can ba ya ba da komai shi kaɗai.
Sannan tabbatar da wane bayani ne ke da alaƙa da gaske. Ana iya tsare tsari da sunan bayanin da ba ku tsammani, musamman lokacin da wata rarrabawa ta aiko da fayil ɗin naúrarta da bayaninta tare, kuma karanta /proc/PID/attr/current yana warware hakan a layi ɗaya. Kwatanta fayil ɗin da kuka gyara da bayanin da kernel ke bayarwa shine bambanci tsakanin gyara sanadin da gyara fayil ɗin da babu wanda ke lodawa.
Ƙara dokar iyawa kawai idan tarihin dubawa ya faɗi haka
Rubuce-rubucen kernel da dubawa suna ambaton matakin da ya ƙi. Nemi ƙin da ke ɗauke da aikin capable da sunan sys_chroot, tare da bayanin da ya haife shi. Idan wannan rubutun yana nan, tsarin ya riga ya riƙe ikon kuma AppArmor ya ƙi shi, kuma canjin da aka nufa dokar iyawa ce a cikin ainihin bayanin:
capability sys_chroot,Riƙe shi a matsayin guntun a cikin bayanin da ke da alaƙa da gaske, kuma duba kalmar maɓalli da littafin bayanin apparmor.d maimakon kwafin doka daga koyarwar da ba ta da alaƙa. Saka shi cikin include ɗin da aka raba yana ba da shi ga kowane shirin da aka tsare da ya ja fayil ɗin, kuma sauya bayanin zuwa yanayin complain yana ɓoye ƙin na gaba maimakon warware wannan. Dokar bayanin tana kawar da ƙin manufa; ba ta ƙirƙirar gata ba, don haka tsarin da bai taɓa samun CAP_SYS_CHROOT a cikin jerin sa mai tasiri ba zai kasa ba ko da dokar tana nan.
Idan rubutun dubawa bai nuna ƙin AppArmor kwata-kwata ba, daina gyara bayanin. Kuna fuskantar matsalar shaidar shiga, kuma sauran aikin yana cikin fayil ɗin naúra ko tsarin iyaye, ba cikin harshen manufa ba.
Mai sarrafa sabis yana riƙe da rufinsa
systemd yana saita jerin iyakar iyawa ga kowane sabis, kuma bisa ga tsoho wannan jerin yana daɗaɗɗe. Duk abin da aka cire a can ba ya samuwa ga tsarin komai abin da bayanin ya ce, wanda shine dalilin da yasa rukunin da aka taurare ke iya kasa aikin da ya yi aiki lokacin da aka fara daemon da hannu. Umarnin da suka dace suna da sauƙin karantawa a cikin naúrar kuma suna da sauƙin mantawa lokacin da aikace-aikacen ya ba da rahoton gazawa. Drop-in ɗin da kunshin rarraba ya kawo sune tushen da aka saba gani na rufin da babu wanda ya tuna ya saita.
Ɗaga rufin da ba da iyawa canje-canje biyu ne, ba ɗaya ba. Shigarwa a cikin jerin iyaka tana faɗin tsarin na iya riƙe ikon; ba ta ƙara shi cikin jerin mai tasiri ba, kuma NoNewPrivs na iya hana ɗagawa na gaba yin nasara ko da komai ya daidaita. Ƙara kawai abin da aikin ke bukata, riƙe sauran tauraro, kuma ƙi hanyar gajeriyar ba da kowane iyawa don kira ɗaya ya wuce.
Tsari yana da muhimmanci a nan ma. Canza rufin naúrar da farko, tabbatar cewa CapEff yanzu yana ɗauke da bit ɗin, sannan kawai yanke shawara ko AppArmor yana ƙi har yanzu. Yin canje-canjen biyu lokaci ɗaya yana barin ku cikin hasashe idan gazawar ta ci gaba.
Bayan ƙin ya ɓace, duba gidan yarin kansa
chroot mai nasara yana motsa tushen, don haka kowace hanya da daemon ya taɓa bayan haka ana warware ta cikin sabon itace. Rashin tsari, node ɗin na'ura da ba ya nan ko kundin takardar shaida da ba a kwafa ba yanzu za su bayyana a matsayin kuskuren fayil, kuma wannan kuskure matsalar tsari ne ba matsalar iyawa ba. Karanta abin da ya faru na gaba maimakon ƙara wani izini mai faɗi. Motsin yana canza ma'anar hanya mai alaƙa, wanda shine dalilin da yasa jagororin taurare suke neman hanyoyi cikakke a cikin tsarin daemon.
Hakanan yana taimakawa tuna abin da chroot ba ya yi. Iyaka ce ta hanya, ba akwatin yashi ba: tsarin da ya riƙe gatan na iya tserewa daga gare ta, wanda shine dalilin da yasa yawanci ake jefar da ikon bayan kiran kuma me yasa tsarewar ya kamata ya kasance a kusa da daemon. Riƙe bayanin AppArmor, jerin iyakar iyawa da ƙuntatawar tsarin fayil tare shine manufar wannan aikin, ba ragowar da za a cire da zarar sabis ɗin ya fara ba.
Dokar yanke shawara gajera ce. Idan rubutun dubawa ya ambaci AppArmor, ƙara dokar iyawa ɗaya ga bayanin da ke da alaƙa. Idan jerin mai tasiri babu komai, gyara rufin naúrar da tsarin jefar da gata. Idan bayanin ba shine wanda kuka gyara ba, daina gyarawa kuma nemo na ainihi.