Izimvume zefayela ku-Linux

Sanibonani nonke. Singena ngenkuthalo emsebenzini futhi sesivele silungiselela ukwethula okuningi okunamandla ngoJanuwari. Phakathi kokunye, ukubhaliswa kumenyezelwe ohlelweni olusha lwesifundo esiyintandokazi yawo wonke umuntu. "I-Linux Administrator". Njengoba silindele ukwethulwa, ngokwesiko sabelana ngokuhumusha kwezinto eziwusizo.

Izimvume zefayela ku-Linux

Izimvume zefayela zinikeza enye indlela ephephile yokusebenzisa i-SUID, kodwa ingabonakala idida kancane ekuqaleni.


Sonke siyazi ukuthi ama-binaries I-SUID kukhona isinqumo esibi ngokombono wezokuphepha. Ngenhlanhla, uma isicelo sakho sidinga amalungelo anomkhawulo, kunendlela esebenza kahle kakhulu ebizwa izimvume zefayela.

Ngizokongela isikhathi esithile uma ufuna ukugwema ukufunda isihloko esingenhla ngokuningiliziwe: Empeleni, izimvume zefayela zivumela izinqubo ezisebenza njengempande futhi ngenxa yalokho zivunyelwe ukwenza okuthile ukuze kugcinwe amakhono athile, anomkhawulo. lolu hlulapho belahla amalungelo futhi beqhutshwa umsebenzisi ongenamalungelo. Lokhu kusho ukuthi uma umhlaseli ekwazi ukufaka engozini inqubo esebenzisa ukuchichima kwebhafa noma okunye ukuxhaphaza, ngeke akwazi ukusizakala nganoma yini enye ngaphandle kwamalungelo amancane athile inqubo ewadinga ngempela.

Izimvume zinhle kumasevisi ahlala esebenza njengempande, kodwa kuthiwani ngezinsiza zomugqa womyalo? Ngenhlanhla, lokhu kuyasekelwa futhi uma unezinsiza ezifanele ezifakiwe. Uma usebenzisa Ubuntu, ngokwesibonelo uzodinga iphasela libcap2-bin. Uzodinga futhi ukusebenzisa i-non-archaic kernel (kusuka kunguqulo 2.6.24).

Le misebenzi ivumela izimvume ukuthi zihlotshaniswe namafayela asebenzisekayo, afana nokusetha ibhithi ye-SUID, kodwa kuphela isethi ethile yezimvume. Isisetshenziswa setcap esetshenziselwa ukwengeza nokukhipha izimvume efayeleni.

Isinyathelo sokuqala ukukhetha izimvume ozidingayo. Ngenxa yalesi sihloko, ngicabanga ukuthi kukhona ithuluzi lokuxilonga inethiwekhi elibizwa tracewalk, okufanele ukwazi ukuyisebenzisa amasokhethi eluhlaza. Lokhu kuvame ukudinga ukuthi uhlelo lokusebenza lusetshenziswe njengempande, kodwa uma ubuka uhlu kuvela ukuthi imvume kuphela edingekayo CAP_NET_RAW.

Uma ucabanga ukuthi ukuhla lwemibhalo lapho okukhona kanambambili tracewalk, ungakwazi ukwengeza le mvume kanje:

sudo setcap cap_net_raw=eip tracewalk

Unganaki isijobelelo okwamanje =eip ukuthola isixazululo, ngizokhuluma ngalokho emizuzwaneni embalwa. Qaphela ukuthi igama lemvume libhalwe ngofeleba abancane. Manje ungahlola ukuthi izimvume uzilungiselele kahle yini nge:

setcap -v cap_new_raw=eip tracewalk

Noma ungafaka kuhlu zonke izimvume ezisethwe kokusebenzisekayo okunikeziwe:

getcap tracewalk

Ukuze uthole ireferensi, ungaphinda ususe zonke izimvume kokusebenzisekayo nge:

setcap -r tracewalk

Kuleli qophelo, kufanele ukwazi ukusebenzisa okusebenzisekayo njengomsebenzisi ongenamalungelo, futhi kufanele ikwazi ukusebenza ngamasokhethi aluhlaza, kodwa ingabi nawo amanye amalungelo umsebenzisi wempande anawo.

Ngakho sisho ukuthini lesi sijobelelo esiyinqaba? =eip? Lokhu kudinga ukuqonda okuthile kwemvelo yezimvume. Inqubo ngayinye inamasethi amathathu ezimvume βˆ’ ngempumelelo, ifa futhi kuvunyelwe:

  • Isebenza kahle Izimvume yilezo ezichaza ukuthi inqubo empeleni ingayenza ini. Isibonelo, ayikwazi ukubhekana namasokhethi aluhlaza uma CAP_NET_RAW ayikho kusethi esebenzayo.
  • Iyatholakala izimvume yilezo inqubo evunyelwe ukuba nazo uma izicela zisebenzisa ucingo olufanele. Bavimbela inqubo ekwenzeni noma yini ngaphandle uma ibhalwe ngokuqondile ukuze icele imvume eshiwo. Lokhu kuvumela izinqubo ukuthi zibhalwe ukuze kwengezwe izimvume ezibalulekile kusethi esebenzayo kuphela ngesikhathi lapho zidingeka khona ngempela.
  • Ifa izimvume yilezo ezingatholwa njengefa kusethi efinyelelekayo yenqubo yengane eyakhiwe. Ngesikhathi sokuhlinzwa fork() noma clone() inqubo yengane ihlale inikezwa ikhophi yezimvume zenqubo yomzali njengoba isasebenzisa okusebenzisekayo okufanayo ngaleso sikhathi. Isethi etholakala njengefa isetshenziswa uma exec() (noma okulinganayo) kubizwa ukuze kufakwe elinye esikhundleni sefayela elisebenzisekayo. Kuleli qophelo, isethi etholakalayo yenqubo ifihlwa isethi etholwa njengefa ukuze kutholwe isethi efinyelelekayo ezosetshenziselwa inqubo entsha.

Ngakho uhlelo lokusebenza setcap kusivumela ukuthi sengeze izimvume zalawa masethi amathathu ngokuzimela kokusebenzisekayo okunikeziwe. Qaphela ukuthi incazelo yamaqembu ihunyushwa ngokuhlukile kancane ngezimvume zefayela:

  • Iyatholakala izimvume zefayela yilezo ezihlala zitholakala efayeleni elisebenzisekayo, noma ngabe inqubo yomzali eyibizile ibingenazo. Ayejwayele ukubizwa ngezimvume β€œeziphoqelelwe”.
  • Ifa izimvume zefayela zichaza imaski eyengeziwe engasetshenziswa futhi ukususa izimvume kusethi yenqubo yokushaya. Asebenza ngaphezu kwesethi ezuzwe njengefa yenqubo yokushaya, ngakho imvume itholwa kuphela uma ikhona kuwo womabili amasethi.
  • Isebenza kahle izimvume zefayela empeleni ziyingcosana nje eyodwa, hhayi isethi, futhi uma isethiwe, kusho ukuthi lonke isethi etholakalayo nalo likopishelwe kusethi esebenzayo yenqubo entsha. Lokhu kungasetshenziswa ukwengeza izimvume kuzinqubo ezingabhalwanga ngokuqondile ukuze zizicele. Njengoba iyibhithi eyodwa, uma uyisethela noma iyiphi imvume, kufanele isethelwe zonke izimvume. Ungacabanga ngayo njengengcezu yefa ngoba isetshenziselwa ukuvumela izimvume ukuthi zisetshenziswe izinhlelo zokusebenza ezingazisekeli.

Lapho ucacisa izimvume nge setcap izinhlamvu ezintathu e, i ΠΈ p Bukela ku ngempumelelo, ifa futhi kufinyeleleke amasethi ngokulandelana. Ngakho, imininingwane yangaphambilini:

sudo setcap cap_net_raw=eip tracewalk

...ikhombisa ukuthi isixazululo CAP_NET_RAW kufanele kwengezwe kumasethi atholakalayo futhi atholakala njengefa nokuthi ibhithi elisebenzayo kufanele futhi limiswe. Lokhu kuzokhipha noma yiziphi izimvume ezisethwe ngaphambilini kufayela. Ukuze usethe izimvume eziningi ngesikhathi esisodwa, sebenzisa uhlu oluhlukaniswe ngokhefana:

sudo setcap cap_net_admin,cap_net_raw=eip tracewalk

Umhlahlandlela Wezimvume ixoxa ngakho konke lokhu ngokuningiliziwe, kodwa ngethemba ukuthi lokhu okuthunyelwe kuthuntubezile okwenzeka kancane. Kukhona imihume embalwa kuphela namaqhinga asele ukubalula.

Okokuqala, amandla efayela awasebenzi nama-symlink - kufanele uwasebenzise efayelini kanambambili ngokwalo (okungukuthi ithagethi ye-symlink).

Okwesibili, azisebenzi ngemibhalo ehunyushiwe. Isibonelo, uma uneskripthi se-Python ofuna ukusinikeza imvume, kufanele unikeze umhumushi we-Python uqobo. Ngokusobala lena inkinga yokuphepha engaba khona ngoba zonke izikripthi ezisetshenziswa nalowo mhumushi zizoba nemvume eshiwo, nakuba lokhu kusengcono kakhulu kunokukwenza i-SUID. Ukusebenza okuvame kakhulu kubonakala kuwukubhala okwehlukile okusebenzisekayo ku-C noma okulinganayo okungenza imisebenzi edingekayo futhi kuyibize ukusuka kuskripthi. Lokhu kufana nendlela esetshenziswa yi-Wireshark esebenzisa i-binary /usr/bin/dumpcap ukwenza imisebenzi ethile:

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

Okwesithathu, izimvume zefayela zivaliwe uma usebenzisa i-variable yemvelo LD_LIBRARY_PATH ngezizathu zokuphepha ezisobala(1). Okufanayo kusebenza naku LD_PRELOAD, ngolwazi ezinalo.

1. Njengoba umhlaseli ngokusobala angangena esikhundleni semitapo yolwazi ejwayelekile futhi ayisebenzise LD_LIBRARY_PATHukuphoqa ilabhulali yayo ukuthi ibizwe ngokuncamelayo kunesistimu eyodwa, futhi ngenxa yalokho ibe nekhodi yayo engasho lutho esetshenziswa ngamalungelo afanayo nohlelo lokusebenza lokushaya.

Yilokho kuphela. Imininingwane eyengeziwe ngohlelo lwezifundo ingatholakala kokuthi webinar, ezokwenzeka ngoJanuwari 24.

Source: www.habr.com

Engeza amazwana