Mga Permiso sa File sa Linux

Kumusta tanan. Aktibo kami nga nagtrabaho ug nag-andam na sa daghang kusog nga paglansad sa Enero. Lakip sa uban, ang pagpalista gipahibalo alang sa usa ka bag-ong sapa sa paborito nga kurso sa tanan. "Linux Administrator". Sa pagpaabot sa paglusad, naandan namong ipaambit ang mga hubad sa mapuslanong materyal.

Mga Permiso sa File sa Linux

Ang mga permiso sa file nagtanyag og luwas nga alternatibo sa mga SUID executable, pero morag medyo makalibog sa sinugdanan.


Kitang tanan nahibalo nga binaries SOUTH mao ang dili maayo nga desisyon gikan sa usa ka punto sa seguridad. Maayo na lang, kung ang imong aplikasyon nanginahanglan pipila nga limitado nga mga pribilehiyo, adunay usa ka labi ka episyente nga paagi nga gitawag permiso sa file.

Makadaginot ko nimo og panahon kung gusto nimong likayan ang pagbasa sa artikulo sa ibabaw sa detalye: Sa esensya, ang mga permiso sa file nagtugot sa mga proseso nga modagan isip gamut ug busa gitugotan sa pagbuhat og usa ka butang aron mahuptan ang pipila ka mga kapabilidad, limitado. kini nga listakung ilang gihulog ang mga pribilehiyo ug gipadagan sa usa ka dili pribilihiyo nga tiggamit. Nagpasabot kini nga kung ang usa ka tig-atake makahimo sa pagkompromiso sa usa ka proseso gamit ang usa ka buffer overflow o uban pang pagpahimulos, dili sila makahimo sa pagpahimulos sa bisan unsa gawas sa pipila ka gamay nga mga pribilehiyo nga gikinahanglan sa proseso.

Maayo ang mga permiso alang sa mga serbisyo nga kasagarang nagdagan ingon gamut, apan komosta ang mga gamit sa linya sa command? Suwerte, gisuportahan usab kini kung adunay ka tama nga mga kagamitan nga na-install. Kung naggamit ka sa Ubuntu, pananglitan kinahanglan nimo ang package libcap2-bin. Kinahanglan mo usab nga magpadagan sa usa ka dili-karaan nga kernel (gikan sa bersyon 2.6.24).

Kini nga mga gimbuhaton nagtugot sa mga permiso nga malambigit sa mga executable nga mga file, susama sa pagtakda sa SUID bit, apan alang lamang sa usa ka piho nga hugpong sa mga pagtugot. Utility setcap gigamit sa pagdugang ug pagtangtang sa mga permiso gikan sa usa ka file.

Ang unang lakang mao ang pagpili sa mga permiso nga imong gikinahanglan. Alang sa kini nga artikulo, gihunahuna ko nga adunay usa ka himan nga diagnostic sa network nga gitawag tracewalk, nga kinahanglan magamit hilaw nga mga socket. Kini sa kasagaran nagkinahanglan sa aplikasyon nga modagan ingon nga gamut, apan sa diha nga ang pagtan-aw ang lista kini nahimo nga pagtugot lamang ang gikinahanglan CAP_NET_RAW.

Sa pag-ingon nga naa ka sa direktoryo diin nahimutang ang binary tracewalk, mahimo nimong idugang kini nga pagtugot sama niini:

sudo setcap cap_net_raw=eip tracewalk

Ayaw tagda ang suffix sa pagkakaron =eip alang sa resolusyon, akong hisgutan kana sa pipila ka segundo. Timan-i nga ang ngalan sa pagtugot anaa sa gamay nga letra. Mahimo nimong susihon kung husto ba ang imong pag-configure sa mga pagtugot sa:

setcap -v cap_new_raw=eip tracewalk

O mahimo nimong ilista ang tanan nga mga permiso nga gitakda alang sa usa ka gihatag nga ma-executable:

getcap tracewalk

Alang sa pakisayran, mahimo usab nimong tangtangon ang tanan nga mga pagtugot gikan sa ma-executable gamit ang:

setcap -r tracewalk

Niini nga punto, kinahanglan nimo nga mapadagan ang executable ingon usa ka dili pribilihiyo nga tiggamit, ug kini kinahanglan nga magamit sa mga hilaw nga socket, apan wala’y bisan unsang ubang mga pribilehiyo nga naa sa gamut nga tiggamit.

Busa unsa ang gipasabut niining talagsaon nga suffix? =eip? Nagkinahanglan kini og pipila ka pagsabut sa kinaiya sa mga pagtugot. Ang matag proseso adunay tulo ka set sa pagtugot βˆ’ epektibo, mapanunod ug gitugotan:

  • Epektibo Ang mga permiso mao kadtong naghubit kung unsa ang mahimo sa usa ka proseso. Pananglitan, dili kini makaatubang sa hilaw nga mga socket kung CAP_NET_RAW wala sa epektibo nga set.
  • Anaa Ang mga permiso mao kadtong gitugutan nga makuha sa usa ka proseso kung kini mohangyo kanila gamit ang angay nga tawag. Gipugngan nila ang usa ka proseso sa pagbuhat sa bisan unsa gawas kung kini espesipikong gisulat aron mangayo sa giingon nga pagtugot. Gitugotan niini ang mga proseso nga masulat aron madugangan ang mga kritikal nga pagtugot sa epektibo nga set alang lamang sa panahon kung kanus-a kini kinahanglan.
  • Mapanunod permiso mao kadtong mahimong mapanunod sa accessible set sa spawned child nga proseso. Atol sa operasyon fork() o clone() ang proseso sa bata kanunay nga gihatagan usa ka kopya sa mga pagtugot sa proseso sa ginikanan tungod kay nagpadagan pa kini nga parehas nga mahimo’g mahimo sa kana nga punto. Ang usa ka mapanunod nga set gigamit kung exec() (o katumbas) gitawag aron ilisan ang executable file sa lain. Niini nga punto, ang magamit nga set sa proseso gitabonan sa mapanunod nga set aron makuha ang magamit nga set nga magamit alang sa bag-ong proseso.

Busa ang utility setcap nagtugot kanamo sa pagdugang sa mga pagtugot niining tulo ka set nga independente alang sa usa ka gihatag nga executable. Timan-i nga ang kahulogan sa mga grupo gamay ra ang paghubad sa mga permiso sa file:

  • Magamit Ang mga permiso sa file mao kadtong kanunay nga magamit sa usa ka executable nga file, bisan kung ang proseso sa ginikanan nga nagtawag niini wala kanila. Gitawag sila kaniadto nga "pinugos" nga mga permit.
  • Napanunod Ang mga permiso sa file naghubit sa usa ka dugang nga maskara nga magamit usab sa pagtangtang sa mga pagtugot gikan sa set sa proseso sa pagtawag. Nag-aplay sila dugang sa napanunod nga set sa proseso sa pagtawag, mao nga ang pagtugot mapanunod lamang kung kini anaa sa duha ka set.
  • Epektibo Ang mga permiso sa file sa tinuud usa ra ka gamay, dili usa ka set, ug kung gitakda, kini nagpasabut nga ang tibuuk nga magamit nga set gikopya usab sa epektibo nga set sa bag-ong proseso. Mahimo kining gamiton aron makadugang og mga permiso sa mga proseso nga wala espesipikong gisulat aron hangyoon kini. Tungod kay kini usa ka gamay, kung imong itakda kini alang sa bisan unsang pagtugot, kini kinahanglan nga itakda alang sa tanan nga mga pagtugot. Mahimo nimong hunahunaon kini nga usa ka gamay nga kabilin tungod kay gigamit kini aron tugutan ang mga pagtugot nga magamit sa mga aplikasyon nga wala nagsuporta kanila.

Kung gipiho ang mga pagtugot pinaagi sa setcap tulo ka letra e, i ΠΈ p nagtumong sa epektibo, mapanunod ug accessible set sa tinagsa. Busa, ang naunang espesipikasyon:

sudo setcap cap_net_raw=eip tracewalk

...nagpakita nga ang resolusyon CAP_NET_RAW kinahanglan idugang sa magamit ug mapanunod nga mga set ug nga ang epektibo nga bit kinahanglan usab nga itakda. Kini mo-override sa bisan unsang gitakda nga permiso kaniadto sa file. Aron mabutang ang daghang mga pagtugot sa usa ka higayon, gamita ang usa ka lista nga gibulag sa koma:

sudo setcap cap_net_admin,cap_net_raw=eip tracewalk

Giya sa Pagtugot naghisgot sa tanan niini sa dugang nga detalye, apan hinaut nga kini nga post nagpadayag sa unsay nahitabo gamay. Adunay pipila ra nga mga pasidaan ug mga limbong nga nahabilin aron hisgutan.

Una, ang mga kapabilidad sa file dili molihok sa mga symlink - kinahanglan nimo nga i-apply kini sa binary file mismo (ie ang target sa symlink).

Ikaduha, wala sila magtrabaho sa mga gihubad nga mga script. Pananglitan, kung ikaw adunay script sa Python nga gusto nimong hatagan og pagtugot, kinahanglan nimo nga i-assign kini sa tighubad sa Python mismo. Dayag nga kini usa ka potensyal nga isyu sa seguridad tungod kay ang tanan nga mga script nga gipatuman sa kana nga tighubad adunay gitino nga pagtugot, bisan kung kini labi ka maayo kaysa paghimo niini nga SUID. Ang labing komon nga workaround daw mao ang pagsulat sa usa ka bulag nga executable sa C o katumbas nga makahimo sa gikinahanglan nga mga operasyon ug sa pagtawag niini gikan sa usa ka script. Kini susama sa pamaagi nga gigamit sa Wireshark nga naggamit ug binary /usr/bin/dumpcap sa paghimo sa pribilihiyo nga mga operasyon:

$ getcap /usr/bin/dumpcap 
/usr/bin/dumpcap = cap_net_admin,cap_net_raw+eip

Ikatulo, ang mga permiso sa file dili magamit kung mogamit ka usa ka variable sa palibot LD_LIBRARY_PATH alang sa klaro nga mga hinungdan sa seguridad(1). Ang sama nga magamit sa LD_PRELOAD, sa akong nahibaw-an.

1. Tungod kay ang usa ka tig-atake klaro nga makapuli sa usa sa mga standard nga librarya ug magamit LD_LIBRARY_PATHaron pugson ang librarya niini nga tawgon sa pagpalabi sa sistema sa usa, ug busa adunay kaugalingon nga arbitraryong code nga gipatuman nga adunay parehas nga mga pribilehiyo sa aplikasyon sa pagtawag.

Mao ra. Dugang nga mga detalye bahin sa programa sa kurso makita sa webinar, nga mahitabo sa Enero 24.

Source: www.habr.com

Idugang sa usa ka comment