Fitxategi baimenak hemen Linux

Kaixo guztioi. Lanera itzuliko gara eta urtarrilerako aurkezpen zirraragarri asko ditugu prestatuta. Besteak beste, gure ikastaro maitearen kohorte berrirako matrikula iragarri dugu. "Administratzailea Linux»Abiarazteko asmoz, tradizionalki material baliagarriaren itzulpena partekatzen dugu.

Fitxategi baimenak hemen Linux

Fitxategi baimenek SUID exekutagarrien alternatiba segurua eskaintzen dute, baina hasieran nahasgarria iruditu daiteke.


Badakigu denok fitxategi bitarrak SUID daude erabaki txarra segurtasun ikuspuntutikZorionez, zure aplikazioak pribilegio mugatu batzuk behar baditu, badago modu eraginkorrago bat izenekoa fitxategi baimenak.

Goiko artikulua xehetasunez irakurtzea saihestu nahi baduzu, denbora aurreztuko dizut: Funtsean, fitxategi baimenek root gisa exekutatzen diren prozesuei, eta beraz, gauzak egiteko eskubidea dutenei, gaitasun mugatu batzuk mantentzea ahalbidetzen diete. zerrenda hau, pribilegioak galtzen dituztenean eta pribilegiorik gabeko erabiltzaile gisa exekutatzen direnean. Horrek esan nahi du erasotzaile batek prozesu bat kaltetzen badu buffer gainezkatze bat edo beste ustiapen bat erabiliz, ezingo duela prozesuak behar dituen gutxieneko pribilegioetatik haratago ezer lortu.

Baimenak bikainak dira zerbitzuetarako, normalean beti root gisa exekutatzen baitira, baina zer gertatzen da komando-lerroko utilitateekin? Zorionez, hau ere onartzen da, utilitate egokiak instalatuta badituzu. Erabiltzen baduzu... Ubuntu, adibidez, pakete bat beharko duzu libcap2-binKernel ez-arkaiko bat ere exekutatu beharko duzu (bertsioarekin hasita) 2.6.24).

Funtzio hauek baimenak fitxategi exekutagarriekin lotzeko aukera ematen dizute, SUID bita ezartzearen antzera, baina baimen multzo espezifiko baterako soilik. Utilitatea setcap fitxategi bati baimenak gehitu eta kentzeko erabiltzen da.

Lehen urratsa behar dituzun baimenak hautatzea da. Artikulu honetarako, sareko diagnostiko tresna bat dagoela suposatuko dut tracewalk, erabiltzeko gai izan behar duena entxufe gordinakHonek normalean aplikazioa root gisa exekutatu behar du, baina ikusten denean zerrenda baimena bakarrik behar dela dirudi CAP_NET_RAW.

Demagun bitarra dagoen direktorioan zaudela tracewalk, baimen hau honela gehi dezakezu:

sudo setcap cap_net_raw=eip tracewalk

Ez egin kasurik atzizkiari oraingoz =eip Baimenei dagokienez, segundo batzuk barru hitz egingo dut horri buruz. Kontuan izan baimenaren izena letra xehez idatzita dagoela. Orain baimenak behar bezala konfiguratu dituzun egiaztatu dezakezu honekin:

setcap -v cap_new_raw=eip tracewalk

Edo exekutagarri jakin baterako ezarritako baimen guztiak zerrenda ditzakezu:

getcap tracewalk

Erreferentzia gisa, fitxategi exekutagarri batetik baimen guztiak kendu ditzakezu hau erabiliz:

setcap -r tracewalk

Puntu honetan, exekutagarria erabiltzaile pribilegiorik gabeko gisa exekutatu ahal izan beharko zenuke, eta socket gordinak kudeatu ahal izan beharko lituzke, baina root erabiltzaileak dituen beste pribilegiorik gabe.

Beraz, zer esan nahi du atzizki arraro honek? =eipHorrek baimenen izaera pixka bat ulertzea eskatzen du. Prozesu bakoitzak hiru baimen multzo ditu: eraginkorra, heredagarria eta baimenduta:

  • Eraginkorra Baimenak prozesu batek zer egin dezakeen zehazten dutenak dira. Adibidez, ezin ditu socket gordinak kudeatu baldin eta CAP_NET_RAW ez dago multzo eraginkorrean.
  • Baimenduta Baimenak prozesu bati dei egokiarekin eskatzen badizkio izan ditzakeenak dira. Ez diote prozesuari ezer egiten uzten, zehaztutako baimena eskatzeko berariaz idatzi ez bada behintzat. Horri esker, prozesuak idatzi daitezke baimen garrantzitsuak multzo eraginkorrean gehitzeko, benetan beharrezkoak diren aldirako bakarrik.
  • Herentziazkoa Baimenak sortutako prozesu semearen baimen multzoan heredatu daitezkeenak dira. Eragiketan zehar fork() edo clone() Seme-prozesuari beti ematen zaio guraso-prozesuaren baimenen kopia bat, une horretan exekutagarri bera exekutatzen ari baita oraindik. Herentziazko multzoa erabiltzen da exec() (edo baliokidea) deitzen da fitxategi exekutagarri bat beste batekin ordezkatzeko. Puntu honetan, prozesuaren eskuragarri dagoen multzoa herentziazko multzoak maskarazten du prozesu berrirako erabiliko den eskuragarri dagoen multzoa lortzeko.

Horrela, erabilgarritasuna setcap Hiru multzo hauetarako baimenak fitxategi exekutagarri jakin baterako modu independentean gehitzeko aukera ematen digu. Kontuan izan talde-balioa fitxategi-baimenetarako apur bat desberdin interpretatzen dela:

  • eskuragarri Fitxategi-baimenak fitxategi exekutagarri baterako beti eskuragarri daudenak dira, deitu zuen guraso-prozesuak ez bazituen ere. Lehen "behartutako" baimenak deitzen zitzaizkien.
  • Herentziatua Fitxategi baimenek dei-prozesuaren multzotik baimenak kentzeko ere erabil daitekeen maskara gehigarri bat definitzen dute. Dei-prozesuaren heredatu daitekeen multzoaz gain aplikatzen dira, beraz, baimen bat bi multzoetan existitzen bada bakarrik heredatzen da.
  • Eraginkorra Fitxategi baimenak, egia esan, bit bakarra dira, ez multzo bat, eta ezarrita badaude, multzo osoa prozesu berriaren multzo eraginkorrean kopiatzen dela esan nahi du. Honek baimenak espresuki behar ez dituzten prozesuei gehitzeko erabil daiteke. Bit bakarra denez, edozein baimenetarako ezartzen baduzu, baimen guztietarako ezarri behar da. Ondare-bit gisa har dezakezu, baimenak onartzen ez dituzten aplikazioek erabiltzeko aukera emateko erabiltzen baita.

Baimenak zehaztean setcap hiru letra e, i и p zerbaiti erreferentzia egin eraginkorra, heredagarria eta eskuragarria multzoak hurrenez hurren. Beraz, aurreko zehaztapena:

sudo setcap cap_net_raw=eip tracewalk

... adierazten du ebazpenak CAP_NET_RAW multzo eskuragarri eta heredagarriei gehitu behar zaie, eta bit eraginkorra ere ezarri behar da. Honek fitxategian aurretik ezarritako baimenak ordezkatuko ditu. Baimen bat baino gehiago aldi berean ezartzeko, erabili komaz bereizitako zerrenda bat:

sudo setcap cap_net_admin,cap_net_raw=eip tracewalk

Baimenen Gida hau guztia xehetasun gehiagorekin aztertzen du, baina espero dugu mezu honek gauzak apur bat desmitifikatu izana. Aipatzeko ohar eta oharpen batzuk besterik ez dira geratzen.

Lehenik eta behin, fitxategien gaitasunak ez dira funtzionatzen esteka sinbolikoekin — bitarrari berari aplikatu behar dizkiozu (hau da, esteka sinbolikoaren helburuari).

Bigarrenik, ez dute funtzionatzen interpretatutako scriptekin. Adibidez, baimenak esleitu nahi dizkiozun Python script bat baduzu, Python interpreteari berari esleitu behar diozu. Jakina, segurtasun arazo potentziala da hau, orduan interprete horrekin exekutatutako script guztiek zehaztutako baimena izango baitute, nahiz eta SUID ezartzea baino askoz hobea den oraindik. Konponbiderik ohikoena C edo antzeko hizkuntzan beharrezko eragiketak egin ditzakeen exekutagarri bereizi bat idaztea eta scriptetik deitzea dirudi. Wireshark-ek erabiltzen duen ikuspegiaren antzekoa da, fitxategi bitar bat erabiltzen baitu. /usr/bin/dumpcap eragiketa pribilegiatuak egiteko:

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

Hirugarrenik, fitxategi baimenak desgaituta daude ingurune aldagai bat erabiltzen baduzu LD_LIBRARY_PATH segurtasun arrazoi agerikoengatik(1)Gauza bera gertatzen da LD_PRELOAD, dakidanez behintzat.

1. Erasotzaile batek, jakina, liburutegi estandar bat ordezkatu eta erabil dezakeenez LD_LIBRARY_PATH, bere liburutegia sistemaren liburutegiaren aurretik deitzera behartzeko, eta horrela bere kode arbitrarioa dei egiten duen aplikazioaren pribilegio berberekin exekutatzeko.

Hori da guztia oraingoz. Ikastaroaren programari buruz gehiago jakin dezakezu hemen: webinarra, urtarrilaren 24an izango dena.

Iturria: www.habr.com

Erosi hosting fidagarria DDoS babesa duten guneetarako, VPS VDS zerbitzariak 🔥 Erosi webguneentzako ostatu fidagarria DDoS babesarekin, VPS VDS zerbitzariak | ProHoster