Ukaz chroot ustvari izolirano okolje v Linuxu tako, da spremeni korenski imenik za vse izvajajoče se procese.
Ali želite izvajati aplikacije ali storitve v izoliranem prostoru v sistemu Linux? Ali pa morda želite preizkusiti in odpraviti napake v aplikaciji, ne da bi ta motila preostali del vašega sistema? Če je tako, boste želeli izvedeti več o chroot, zmogljivem mehanizmu, vgrajenem v Linux, ki vam omogoča ustvarjanje ločenega okolja v vašem sistemu.
Podrobno raziščimo chroot, spoznajmo njegove prednosti, primere uporabe, kako ga nastaviti v sistemu Linux in, če je potrebno, kako se mu izogniti.
Kaj je chroot v Linuxu?
chroot ali change-root je nedvomno ena najlažjih in najstarejših oblik programske opreme za shranjevanje vsebnikov, ki uporabniku omogoča varno peskovnik aplikacij in storitev. Peskovnik je v računalniškem smislu postopek izolacije programa v omejenem prostoru z vnaprej določenimi viri.
Če poznate Docker in kako deluje, si lahko chroot predstavljate kot njegovo močno okrnjeno različico. chroot deluje tako, da spremeni korenski imenik programa, omeji dostop in vidnost ter tako zagotovi dodatno plast izolacije in varnosti.
V bistvu ustvarite ločen imenik, kopirate vse odvisnosti programa v nov imenik in nato zaženete ukaz chroot. To omogoča, da program pravilno deluje, medtem ko nima dostopa do osnovnega datotečnega sistema.
chrooting programa je odličen način za preizkušanje njegove zanesljivosti v varnem prostoru brez spreminjanja dejanskih sistemskih datotek. Poleg tega lahko tudi zmanjšate varnostno tveganje, ki ga povzroča ogrožen paket, saj v okolju s korenskim dostopom ogroženi paket ne bo mogel dostopati do občutljivih sistemskih datotek in jih spreminjati.
Program bo lahko dostopal in si ogledoval samo datoteke, uvožene v chrooted imenik, sicer znan kot "chroot jail". To preprečuje, da bi program in njegovi podprocesi posegali v osnovni sistem.
Kaj je chroot zapor?
Chroot zapor je izolirano okolje, kjer se nahajajo in izvajajo programi chroot. Izraz chroot zapor izhaja iz koncepta, da proces in njegovi podprocesi znotraj okolja chroot nimajo dostopa ali vidnosti do osnovnega datotečnega sistema in so ujeti znotraj meja chroot z vnaprej določenimi virov.
Zdaj, ko vam je koncept chroot jasen, pojdimo na praktično delo in se naučimo, kako lahko ustvarite chroot zapor in sprožite procese v njem.
Kako ustvariti chroot zapor in v njem izvajati programe
Chroot jail je v bistvu imenik, ki vsebuje vse potrebne vire, datoteke, binarne datoteke in druge odvisnosti, ki bi jih program potreboval za pravilno delovanje.
Vendar pa je za razliko od običajnega okolja Linuxa okolje chroot jail zelo omejeno in program ne more dostopati do zunanjih ali dodatnih datotek in sistemskih virov.
Če želite na primer zagnati ukazno lupino Bash v zaporu chroot, bi morali kopirati dvojiško datoteko Bash in vse njene odvisnosti v imenik chroot.
Tukaj so koraki za ustvarjanje chroot zapora in ustvarjanje lupine Bash:
- Če želite, da se program uspešno izvaja, morate kopirati vse njegove odvisnosti v chrooted imenik. Poiščimo binarno datoteko, v tem primeru Bash, in lokacijo vseh njenih odvisnosti z uporabo ukazov which in ldd:
ki bash
ldd /usr/bin/bash - Zdaj, ko poznate lokacije binarne datoteke in njenih odvisnosti, jih prekopirajte v imenik, ki ga želite spremeniti v chroot zapor. Z ukazom mkdir ustvarite potrebne imenike in uporabite ukaz cp, kopirajte vse datoteke v ustrezne imenike:
mkdir bin lib lib64 && cp -r /lib/ * ./lib && cp -r /lib64/* /lib64/ && cp /bin/bash /bin/
- Končno, s kopiranim programom in njegovimi odvisnostmi, lahko zaženete ukaz chroot s povišanimi privilegiji z uporabo predpone sudo, da ustvarite okolje chroot v izbranem imeniku. Privzeto bo ustvaril lupino Bash. Tukaj je ukaz, ki ga morate vnesti:
sudo chroot ime_imenika
To so vsi koraki za ustvarjanje chroot zapora in zagon programa v njem.
Kako pobegniti iz chroot zapora
Medtem ko so zapori za chroot dobre za preizkušanje nestabilne programske opreme, so uporabne tudi pri upravljanju povezav SSH, saj je chroot povezanih uporabnikov eden od mnogih načine za zaščito vašega strežnika SSH.
Po drugi strani, če ste preizkuševalec penetracije in ste se prijavili v ciljni strežnik SSH, je lahko ugotovitev, da gre za chrooted okolje, frustrirajoče in se vam zdi kot slepa ulica.
Vendar pa obstaja veliko načinov za pobeg iz napačno konfiguriranega zapora chroot, nekateri zahtevajo veščine programiranja C, druge pa je mogoče avtomatizirati z orodji. Nekaj preprostih načinov za pobeg chroot je:
- Ugnezdeni klici chroot
- Ugnezdeni klici chroot s shranjenim deskriptorjem datoteke
- Metoda pritrditve korena
- procfs pobegniti
- ptrace escape
Upoštevajte, da boste morali imeti povečane privilegije v sistemu za izvajanje chroot escape-a s katero koli od teh metod. Izvedite več o teh metodologijah pobega, tako da se odpravite na repozitorij GitHub chw00t, orodje za avtomatizacijo pobega chroot.
Zdaj veste vse o chroot v Linuxu
Zdaj, ko veste, kaj je chroot, kako deluje in kako ga implementirati, bi morali biti sposobni aplikacije v peskovnik brez napora s terminala. Imejte v mislih, kot veste, obstaja več načinov, kako se izogniti chrooted okolju.
To dokazuje, da chroot nikakor ni bil zasnovan za uporabo kot varnostna funkcija. Zato morate chroot uporabljati zelo previdno, saj lahko neustrezna konfiguracija povzroči povratni učinek in ogrozi varnost vašega sistema.
Najbolje je, da se držite namenskih rešitev za peskovnik, kot so programska oprema za shranjevanje v kontejnerjih ali virtualni stroji. Oba sta osredotočena na peskovnik in varnost, tako da vam ni treba skrbeti za varnost in celovitost vašega sistema, razen če je v mestu nov zero-day.
Če niste prepričani, katero izbrati med kontejnersko in virtualizacijsko programsko opremo, morate preizkusiti obe in se sami prepričati, katera je boljša.