Komanda „chroot“ sukuria izoliuotą aplinką „Linux“, pakeisdama visų vykdomų procesų šakninį katalogą.
Ar norite paleisti programas ar paslaugas izoliuotoje „Linux“ erdvėje? O gal norite išbandyti ir derinti programą, netrukdydami likusiai jūsų sistemai? Jei taip, norėsite sužinoti apie chroot – galingą Linux sistemoje įmontuotą mechanizmą, leidžiantį sukurti atskirą aplinką sistemoje.
Išsamiai išnagrinėkime chroot, sužinokime apie jo privalumus, naudojimo atvejus, kaip jį nustatyti Linux sistemoje ir, jei reikia, kaip nuo jo išvengti.
Kas yra „chroot“ sistemoje „Linux“?
chroot arba change-root yra neabejotinai viena iš paprasčiausių ir seniausių konteinerių programinės įrangos formų, leidžiančių vartotojui saugiai naudoti smėlio dėžės programas ir paslaugas. Smėlio dėžė, skaičiuojant, yra programos izoliavimo uždaroje erdvėje su iš anksto nustatytais ištekliais procesas.
Jei esate susipažinę su Docker ir kaip jis veikia, galite galvoti apie chroot kaip labai apleistą jo versiją. chroot veikia pakeisdamas programos šakninį katalogą, apribodamas prieigą ir matomumą ir taip suteikdamas papildomą izoliacijos ir saugumo sluoksnį.
Iš esmės sukuriate atskirą katalogą, nukopijuojate visas programos priklausomybes į naują katalogą ir paleidžiate komandą chroot. Tai leidžia programai tinkamai veikti, neturint prieigos prie bazinės failų sistemos.
chroot programa yra puikus būdas patikrinti jos patikimumą saugioje erdvėje nekeičiant tikrųjų sistemos failų. Be to, taip pat galite sumažinti saugumo riziką, kurią sukelia pažeistas paketas, nes chroot aplinkoje pažeistas paketas negalės pasiekti ir modifikuoti jautrių sistemos failų.
Programa galės pasiekti ir peržiūrėti tik failus, importuotus į chroot katalogą, kitaip vadinamą „chroot kalėjimu“. Taip programa ir jos antriniai procesai netrukdo bazinei sistemai.
Kas yra chroot kalėjimas?
Chroot kalėjimas yra izoliuota aplinka, kurioje yra ir vykdomos chroot programos. Terminas „chroot jail“ yra kilęs iš sampratos, kad procesas ir jo antriniai procesai chroot aplinkoje neturi prieigos prie bazinės failų sistemos arba jos matomumo ir yra įstrigę chroot ribose su iš anksto nustatytais išteklių.
Dabar, kai chroot sąvoka jums aiški, įsigilinkite į praktiką ir sužinokime, kaip sukurti chroot kalėjimą ir sukurti joje procesus.
Kaip sukurti chroot kalėjimą ir vykdyti jame esančias programas
„Chroot jail“ iš esmės yra katalogas, kuriame yra visi reikalingi ištekliai, failai, dvejetainiai failai ir kitos priklausomybės, kurių reikia programai, kad ji tinkamai veiktų.
Tačiau, skirtingai nei įprastoje Linux aplinkoje, chroot kalėjimo aplinka yra labai apribota ir programa negali pasiekti išorinių ar papildomų failų ir sistemos išteklių.
Pavyzdžiui, norėdami paleisti „Bash“ apvalkalą „chroot“ kalėjime, turite nukopijuoti „Bash“ dvejetainį failą ir visas jo priklausomybes į „chroot“ katalogą.
Štai žingsniai, kaip sukurti chroot kalėjimą ir sukurti Bash apvalkalą:
- Kad programa veiktų sėkmingai, turite nukopijuoti visas jos priklausomybes į chrootą katalogą. Raskime dvejetainį elementą, šiuo atveju, Bash, ir visų jo priklausomybių vietą naudodami what ir ldd komandas:
kuris bash
ldd /usr/bin/bash - Dabar, kai žinote dvejetainio failo vietas ir jo priklausomybes, nukopijuokite juos į katalogą, kurį norite paversti chroot kalėjimu. Naudodami komandą mkdir sukurkite reikiamus katalogus ir naudodami cp komanda, nukopijuokite visus failus į atitinkamus katalogus:
mkdir bin lib lib64 && cp -r /lib/ * ./lib && cp -r /lib64/* /lib64/ && cp /bin/bash /bin/
- Galiausiai, nukopijavę programą ir jos priklausomybes, galite paleisti chroot komandą su padidintomis teisėmis, naudodami sudo priešdėlį, kad pasirinktame kataloge būtų sukurta chroot aplinka. Pagal numatytuosius nustatymus jis sukurs „Bash“ apvalkalą. Čia yra komanda, kurią reikia įvesti:
sudo chroot katalogo_pavadinimas
Tai yra visi žingsniai, norint sukurti chroot kalėjimą ir paleisti programą jame.
Kaip išsivaduoti iš chroot kalėjimo
Nors chroot kalėjimai yra tinkami nestabiliai programinei įrangai išbandyti, jie taip pat naudingi tvarkant SSH ryšius, nes prisijungusių vartotojų chroot yra vienas iš daugelio būdai apsaugoti savo SSH serverį.
Kita vertus, jei esate įsiskverbimo tikrintojas ir esate prisijungę prie tikslinio SSH serverio, nustatyti, kad tai yra įsišaknijusi aplinka, gali būti nemalonu ir jaustis kaip aklavietėje.
Tačiau yra gana daug būdų, kaip pabėgti iš netinkamai sukonfigūruoto chroot kalėjimo, kai kuriems reikia C programavimo įgūdžių, o kitus galima automatizuoti naudojant įrankius. Keli paprasti chroot pabėgimo būdai:
- Įdėtieji chroot skambučiai
- Įdėti chroot skambučiai su išsaugoto failo aprašu
- Montavimo šaknies metodas
- procf pabėga
- ptrace pabėgti
Atminkite, kad norėdami atlikti chroot pabėgimą naudodami bet kurį iš šių metodų, turėsite turėti padidintas teises sistemoje. Sužinokite daugiau apie šias pabėgimo metodikas, eikite į chw00t GitHub saugyklachroot pabėgimo automatizavimo įrankis.
Dabar jūs žinote viską apie „chroot“ sistemoje „Linux“.
Dabar, kai žinote, kas yra chroot, kaip jis veikia ir kaip jį įgyvendinti, turėtumėte turėti galimybę lengvai perkelti programas iš terminalo. Atminkite, kad, kaip žinote, yra keletas būdų, kaip išeiti iš įsisenėjusios aplinkos.
Tai rodo, kad chroot jokiu būdu nebuvo sukurtas naudoti kaip saugos funkcija. Taigi turėtumėte naudoti chroot labai atsargiai, nes netinkama konfigūracija gali baigtis neigiamu veikimu ir pakenkti jūsų sistemos saugumui.
Geriausia naudoti specialius smėlio dėžės sprendimus, pvz., konteinerių talpinimo programinę įrangą ar virtualias mašinas. Abi jos yra susijusios su smėlio dėže ir saugumu, todėl, nebent mieste ateitų nauja nulinė diena, jums nereikės nerimauti dėl savo sistemos saugumo ir vientisumo.
Jei nesate tikri, kurią pasirinkti konteinerio ir virtualizavimo programinę įrangą, turėtumėte išbandyti abi ir patys įsitikinti, kuri iš jų yra geresnė.