Awọn igbanilaaye faili ni Linux

Bawo ni gbogbo eniyan. A n wọle si iṣẹ ati pe a ti ngbaradi ọpọlọpọ awọn ifilọlẹ ti o lagbara ni Oṣu Kini. Lara awọn miiran, iforukọsilẹ ti kede fun ṣiṣan tuntun ti ipa-ọna ayanfẹ gbogbo eniyan. "Alakoso Linux". Ni ifojusọna ti ifilọlẹ, ni aṣa a pin awọn itumọ ti awọn ohun elo to wulo.

Awọn igbanilaaye faili ni Linux

Awọn igbanilaaye faili nfunni ni yiyan ailewu si awọn ipaniyan SUID, ṣugbọn o le dabi iruju diẹ ni akọkọ.


Gbogbo wa mọ pe awọn alakomeji SOUTH ni ipinnu buburu lati oju-ọna aabo. O da, ti ohun elo rẹ ba nilo diẹ ninu awọn anfani to lopin, ọna ti o munadoko wa ti a pe awọn igbanilaaye faili.

Emi yoo gba ọ ni akoko diẹ ti o ba fẹ yago fun kika nkan ti o wa loke ni awọn alaye: Ni pataki, awọn igbanilaaye faili gba awọn ilana laaye ti o ṣiṣẹ bi gbongbo ati nitorinaa gba ọ laaye lati ṣe nkan lati da awọn agbara kan duro, ni opin yi akojọnigbati wọn ba ju awọn anfani silẹ ati pe olumulo ti ko ni anfani ni ṣiṣe. Eyi tumọ si pe ti ikọlu ba ṣakoso lati fi ẹnuko ilana kan nipa lilo aponsedanu ifipamọ tabi ilokulo miiran, wọn kii yoo ni anfani lati lo anfani ohunkohun miiran ju awọn anfani to kere julọ ti ilana naa nilo gaan.

Awọn igbanilaaye jẹ nla fun awọn iṣẹ ti o nṣiṣẹ nigbagbogbo bi gbongbo, ṣugbọn kini nipa awọn ohun elo laini aṣẹ? Ni Oriire, eyi tun ni atilẹyin ti o ba ni awọn ohun elo to tọ ti fi sori ẹrọ. Ti o ba nlo Ubuntu, iwọ yoo fun apẹẹrẹ nilo package naa libcap2-bin. Iwọ yoo tun nilo lati ṣiṣẹ ekuro ti kii ṣe archaic (lati ẹya 2.6.24).

Awọn iṣẹ wọnyi gba awọn igbanilaaye laaye lati ni nkan ṣe pẹlu awọn faili ṣiṣe, iru si tito bit SUID, ṣugbọn fun eto awọn igbanilaaye kan pato. IwUlO setcap ti a lo lati ṣafikun ati yọkuro awọn igbanilaaye lati faili kan.

Igbesẹ akọkọ ni lati yan awọn igbanilaaye ti o nilo. Fun nitori nkan yii, Mo ro pe ohun elo iwadii nẹtiwọọki kan wa ti a pe tracewalk, eyi ti o yẹ ki o ni anfani lati lo aise iho. Eyi nigbagbogbo nilo ohun elo lati ṣiṣẹ bi gbongbo, ṣugbọn nigba wiwo atokọ naa o wa ni jade wipe nikan igbanilaaye wa ni ti beere CAP_NET_RAW.

Ti o ro pe o wa ninu itọsọna nibiti alakomeji wa tracewalk, o le ṣafikun igbanilaaye yii bi eleyi:

sudo setcap cap_net_raw=eip tracewalk

Foju si suffix fun bayi =eip fun ipinnu, Emi yoo sọrọ nipa iyẹn ni iṣẹju-aaya meji. Ṣe akiyesi pe orukọ igbanilaaye wa ni kekere. O le ṣayẹwo ni bayi ti o ba ti tunto awọn igbanilaaye ni deede pẹlu:

setcap -v cap_new_raw=eip tracewalk

Tabi o le ṣe atokọ gbogbo awọn igbanilaaye ti a ṣeto fun ṣiṣe ṣiṣe kan:

getcap tracewalk

Fun itọkasi, o tun le yọ gbogbo awọn igbanilaaye kuro lati ṣiṣe pẹlu:

setcap -r tracewalk

Ni aaye yii, o yẹ ki o ni anfani lati ṣiṣẹ ṣiṣe bi olumulo ti ko ni anfani, ati pe o yẹ ki o ni anfani lati ṣiṣẹ pẹlu awọn iho aise, ṣugbọn ko ni eyikeyi awọn anfani miiran ti olumulo gbongbo ni.

Nítorí náà, kí ni yi ajeji suffix tumo si? =eip? Eyi nilo oye diẹ ti iru awọn igbanilaaye. Ilana kọọkan ni awọn eto igbanilaaye mẹta - munadoko, inheritable ati idasilẹ:

  • Munadoko Awọn igbanilaaye jẹ awọn ti o ṣalaye kini ilana kan le ṣe. Fun apẹẹrẹ, o ko le wo pẹlu aise sockets ti o ba ti CAP_NET_RAW ko si ni eto ti o munadoko.
  • Wa awọn igbanilaaye jẹ awọn ti ilana kan gba laaye lati ni ti o ba beere lọwọ wọn nipa lilo ipe ti o yẹ. Wọn ṣe idiwọ ilana kan lati ṣe ohunkohun ayafi ti o ti kọ ni pataki lati beere fun igbanilaaye. Eyi ngbanilaaye awọn ilana lati kọ lati ṣafikun awọn igbanilaaye to ṣe pataki si eto ti o munadoko nikan fun akoko nigba ti wọn nilo gangan.
  • Àjogúnbá awọn igbanilaaye ni o wa awon ti o le jogun ni wiwọle ṣeto ti awọn spawned ọmọ ilana. Nigba abẹ fork() tabi clone() ilana ọmọ nigbagbogbo funni ni ẹda ti awọn igbanilaaye ilana ilana obi nitori pe o tun nṣiṣẹ ṣiṣe ṣiṣe kanna ni aaye yẹn. Eto ti o jogun ni a lo nigbati exec() (tabi deede) ni a pe lati rọpo faili ti o le ṣiṣẹ pẹlu omiiran. Ni aaye yii, eto ti o wa ti ilana naa jẹ boju-boju nipasẹ eto jogun lati gba eto iraye ti yoo ṣee lo fun ilana tuntun.

Nitorina ohun elo naa setcap gba wa lati fi awọn igbanilaaye ti awọn mẹta tosaaju ominira fun a fi executable. Ṣe akiyesi pe itumọ awọn ẹgbẹ jẹ itumọ ni iyatọ diẹ fun awọn igbanilaaye faili:

  • Wa awọn igbanilaaye faili jẹ awọn ti o wa nigbagbogbo si faili ti o le ṣiṣẹ, paapaa ti ilana obi ti o pe ko ni wọn. Wọn ti wa ni a npe ni "fi agbara mu" awọn iyọọda.
  • jogun awọn igbanilaaye faili ṣalaye iboju-boju afikun ti o tun le ṣee lo lati yọkuro awọn igbanilaaye lati eto ilana pipe. Wọn lo ni afikun si eto jogun ilana pipe, nitorinaa a jogun igbanilaaye nikan ti o ba wa ninu awọn eto mejeeji.
  • Munadoko Awọn igbanilaaye faili jẹ looto kan kan diẹ, kii ṣe eto kan, ati pe ti o ba ṣeto, o tumọ si pe gbogbo eto ti o wa tun tun daakọ sinu eto imunadoko ilana tuntun. Eyi le ṣee lo lati ṣafikun awọn igbanilaaye si awọn ilana ti a ko kọ ni pataki lati beere wọn. Niwọn bi o ti jẹ diẹ, ti o ba ṣeto fun igbanilaaye eyikeyi, o gbọdọ ṣeto fun gbogbo awọn igbanilaaye. O le ronu rẹ bi ohun-iní diẹ nitori pe o jẹ lilo lati gba awọn igbanilaaye laaye lati lo nipasẹ awọn ohun elo ti ko ṣe atilẹyin wọn.

Nigbati pato awọn igbanilaaye nipasẹ setcap mẹta awọn lẹta e, i и p tọka si munadoko, inheritable ati wiwọle tosaaju lẹsẹsẹ. Nitorinaa, alaye iṣaaju:

sudo setcap cap_net_raw=eip tracewalk

... tọkasi wipe ipinnu CAP_NET_RAW gbọdọ wa ni afikun si awọn eto ti o wa ati ti o jogun ati pe diẹ ti o munadoko gbọdọ tun ṣeto. Eyi yoo fagilee eyikeyi awọn igbanilaaye ti a ṣeto tẹlẹ lori faili naa. Lati ṣeto awọn igbanilaaye pupọ ni ẹẹkan, lo atokọ ti o ya sọtọ komama:

sudo setcap cap_net_admin,cap_net_raw=eip tracewalk

Itọsọna igbanilaaye jiroro lori gbogbo eyi ni awọn alaye diẹ sii, ṣugbọn nireti pe ifiweranṣẹ yii ti sọ ohun ti n ṣẹlẹ diẹ. Nibẹ ni o wa nikan kan diẹ caveats ati ẹtan sosi lati darukọ.

Ni akọkọ, awọn agbara faili ko ṣiṣẹ pẹlu awọn ọna asopọ - o ni lati lo wọn si faili alakomeji funrararẹ (ie ibi-afẹde ti symlink).

Ni ẹẹkeji, wọn ko ṣiṣẹ pẹlu awọn iwe afọwọkọ itumọ. Fun apẹẹrẹ, ti o ba ni iwe afọwọkọ Python ti o fẹ fi aṣẹ fun, o gbọdọ fi si olutumọ Python funrararẹ. O han ni eyi jẹ ọrọ aabo ti o pọju nitori lẹhinna gbogbo awọn iwe afọwọkọ ti a ṣe pẹlu onitumọ yẹn yoo ni igbanilaaye ti a sọ, botilẹjẹpe eyi tun dara dara julọ ju ṣiṣe SUID. Iṣeduro ti o wọpọ julọ dabi pe o jẹ lati kọ ipaniyan lọtọ ni C tabi deede ti o le ṣe awọn iṣẹ ṣiṣe pataki ati pe lati iwe afọwọkọ kan. Eyi jẹ iru si ọna ti Wireshark nlo ti o nlo alakomeji /usr/bin/dumpcap lati ṣe awọn iṣẹ ti o ni anfani:

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

Kẹta, awọn igbanilaaye faili jẹ alaabo ti o ba lo oniyipada ayika LD_LIBRARY_PATH fun awọn idi aabo ti o han gbangba(1). Kanna kan si LD_PRELOAD, bi Mose mo si ni yen.

1. Niwon ohun attacker le han ni ropo ọkan ninu awọn boṣewa ikawe ati lilo LD_LIBRARY_PATHlati fi ipa mu ile-ikawe rẹ lati pe ni ayanfẹ si eto ọkan, ati nitorinaa ni koodu lainidii tirẹ ti a ṣe pẹlu awọn anfani kanna bi ohun elo pipe.

Gbogbo ẹ niyẹn. Awọn alaye diẹ sii nipa eto ẹkọ ni a le rii ni webinar, eyiti yoo waye ni Oṣu Kini Ọjọ 24.

orisun: www.habr.com

Fi ọrọìwòye kun