Chroot-kommandoen skaper et isolert miljø på Linux ved å endre rotkatalogen for alle kjørende prosesser.
Ønsker du å kjøre applikasjoner eller tjenester i et isolert rom på Linux? Eller kanskje du vil teste og feilsøke et program uten at det forstyrrer resten av systemet ditt? I så fall vil du lære om chroot, en kraftig mekanisme innebygd i Linux som lar deg lage et eget miljø i systemet ditt.
La oss utforske chroot i detalj, lære om fordelene, brukstilfeller, hvordan du setter det opp på et Linux-system, og om nødvendig, hvordan du kan unnslippe det.
Hva er chroot i Linux?
chroot eller change-root er uten tvil en av de enkleste og eldgamle formene for containeriseringsprogramvare som lar en bruker trygt sandbokse applikasjoner og tjenester. Sandboxing, i databehandling, er prosessen med å isolere et program i et begrenset rom med forhåndsdefinerte ressurser.
Hvis du er kjent med Docker og hvordan det fungerer, kan du tenke på chroot som en sterkt nedstrippet versjon av den. chroot fungerer ved å endre rotkatalogen til et program, begrense tilgang og synlighet, og dermed gi et ekstra lag med isolasjon og sikkerhet.
I hovedsak oppretter du en egen katalog, kopierer over alle programmets avhengigheter til den nye katalogen, og kjører deretter chroot-kommandoen. Dette gjør at programmet fungerer som det skal uten tilgang til basisfilsystemet.
chrooting av et program er en flott måte å teste dets pålitelighet på et trygt sted uten å endre selve systemets filer. I tillegg kan du også redusere sikkerhetsrisikoen forårsaket av en kompromittert pakke som i et chrooted miljø, vil den kompromitterte pakken ikke kunne få tilgang til og endre sensitive systemfiler.
Programmet vil kun kunne få tilgang til og vise filer som er importert over til chroot-katalogen, ellers kjent som et "chroot-fengsel". Dette forhindrer at programmet og dets underprosesser forstyrrer basissystemet.
Hva er et chroot-fengsel?
Et chroot-fengsel er et isolert miljø der chroot-programmer ligger og kjøres. Begrepet chroot-fengsel er avledet fra konseptet om at prosessen og dens underprosesser i det chroot-miljøet har ingen tilgang til eller synlighet til basisfilsystemet og er fanget innenfor grensene til chroot med forhåndsbestemt ressurser.
Nå som konseptet med chroot er klart for deg, la oss komme i gang og lære hvordan du kan lage et chroot-fengsel og starte prosesser i det.
Hvordan lage et chroot-fengsel og kjøre programmer i det
Et chroot-fengsel er egentlig en katalog som inneholder alle nødvendige ressurser, filer, binærfiler og andre avhengigheter et program trenger for å fungere ordentlig.
Imidlertid, i motsetning til i et vanlig Linux-miljø, er miljøet til chroot-fengselet svært begrenset, og programmet har ikke tilgang til eksterne eller ekstra filer og systemressurser.
For eksempel, for å kjøre Bash-skallet i et chroot-fengsel, må du kopiere over Bash-binæren og alle dens avhengigheter til chroot-katalogen.
Her er trinnene for å lage et chroot-fengsel og skape et Bash-skall:
- For at et program skal kjøre vellykket, må du kopiere alle dets avhengigheter over til den chrooted-katalogen. La oss finne binæren, i dette tilfellet, Bash, og plasseringen av alle dens avhengigheter ved å bruke which- og ldd-kommandoene:
hvilken bash
ldd /usr/bin/bash - Nå som du kjenner plasseringene til binærfilen og dens avhengigheter, kopier dem over til katalogen som du vil gjøre om til et chroot-fengsel. Ved å bruke mkdir-kommandoen oppretter du de nødvendige katalogene og bruker cp-kommandoen, kopier alle filene til de tilsvarende katalogene:
mkdir bin lib lib64 && cp -r /lib/ * ./lib && cp -r /lib64/* /lib64/ && cp /bin/bash /bin/
- Til slutt, med programmet og dets avhengigheter kopiert over, kan du kjøre chroot-kommandoen med forhøyede rettigheter ved å bruke sudo-prefikset for å skape chroot-miljøet i den valgte katalogen. Som standard vil det skape et Bash-skall. Her er kommandoen for å skrive inn:
sudo chroot katalognavn
Det er alle trinnene for å skape et chroot-fengsel og kjøre et program i det.
Hvordan bryte ut av et chroot-fengsel
Selv om chroot-fengsler er gode for å teste ustabil programvare, er de også nyttige når du håndterer SSH-tilkoblinger, da chrooting av tilkoblede brukere er en av de mange måter å sikre din SSH-server på.
På baksiden, hvis du er en penetrasjonstester og har logget på målets SSH-server, kan det være frustrerende å finne ut at det er et chrooted miljø og føles som en blindvei.
Imidlertid er det ganske mange måter å rømme ut av et feilkonfigurert chroot-fengsel, noen krever C-programmeringskunnskaper mens andre kan automatiseres med verktøy. Noen få enkle måter å rømme chroot på er:
- Nestede chroot-anrop
- Nestede chroot-anrop med lagret filbeskrivelse
- Monter rot-metoden
- procfs rømme
- ptrace flukt
Vær oppmerksom på at for å utføre chroot-escape ved å bruke noen av disse metodene, må du ha eskalerte privilegier i systemet. Lær mer om disse rømningsmetodikkene ved å gå over til chw00ts GitHub-depot, et chroot escape automatiseringsverktøy.
Nå vet du alt om chroot i Linux
Nå som du vet hva chroot er, hvordan det fungerer og hvordan du implementerer det, bør du være i stand til å sandboxe applikasjoner uten problemer fra terminalen. Husk at det, som du vet, er flere måter å bryte ut av et chrooted miljø.
Dette viser at chroot på ingen måte var designet for å bli implementert som en sikkerhetsfunksjon. Så du bør bruke chroot med stor forsiktighet ettersom en feil konfigurasjon kan ende opp med å slå tilbake og kompromittere sikkerheten til systemet ditt.
Det er best å holde seg til dedikerte sandkasseløsninger som containeriseringsprogramvare eller virtuelle maskiner. Begge er sentrert rundt sandboxing og sikkerhet, så med mindre det er en ny nulldag i byen, trenger du ikke å bekymre deg for sikkerheten og integriteten til systemet ditt.
Hvis du er usikker på hvilken du skal velge mellom containerisering og virtualiseringsprogramvare, bør du prøve ut begge og se selv hvilken som er best.