Chroot-kommandoen opretter et isoleret miljø på Linux ved at ændre rodmappen for alle kørende processer.
Ønsker du at køre applikationer eller tjenester i et isoleret rum på Linux? Eller måske vil du teste og fejlsøge et program uden at det forstyrrer resten af dit system? Hvis det er tilfældet, vil du gerne lære om chroot, en kraftfuld mekanisme indbygget i Linux, som giver dig mulighed for at skabe et separat miljø i dit system.
Lad os udforske chroot i detaljer, lære om dets fordele, use cases, hvordan man sætter det op på et Linux-system, og hvis nødvendigt, hvordan man undslipper det.
Hvad er chroot i Linux?
chroot eller change-root er uden tvivl en af de nemmeste og ældgamle former for containeriseringssoftware, der giver en bruger mulighed for sikkert at sandboxe applikationer og tjenester. Sandboxing, i computertermer, er processen med at isolere et program i et begrænset rum med foruddefinerede ressourcer.
Hvis du er bekendt med Docker og hvordan det virker, kan du tænke på chroot som en stærkt strippet version af det. chroot fungerer ved at ændre et programs rodbibliotek, begrænse adgang og synlighed og dermed give et ekstra lag af isolation og sikkerhed.
Grundlæggende opretter du en separat mappe, kopierer alle programmets afhængigheder til den nye mappe og kører derefter chroot-kommandoen. Dette gør det muligt for programmet at fungere korrekt, mens det ikke har adgang til basisfilsystemet.
chrooting af et program er en fantastisk måde at teste dets pålidelighed på et sikkert sted uden at ændre selve systemets filer. Desuden kan du også reducere sikkerhedsrisikoen forårsaget af en kompromitteret pakke, da den kompromitterede pakke i et chrootet miljø ikke vil være i stand til at få adgang til og ændre følsomme systemfiler.
Programmet vil kun være i stand til at få adgang til og se filer, der er importeret til den chrootede mappe, ellers kendt som et "chroot jail". Dette forhindrer programmet og dets underprocesser i at forstyrre basissystemet.
Hvad er et chroot-fængsel?
Et chroot-fængsel er et isoleret miljø, hvor chroot-programmer findes og udføres. Udtrykket chroot fængsel er afledt af konceptet om, at processen og dens delprocesser inde i det chrootede miljø har ingen adgang til eller synlighed til basisfilsystemet og er fanget inden for grænserne af chroot med forudbestemt ressourcer.
Nu hvor begrebet chroot er klart for dig, lad os komme i gang og lære, hvordan du kan oprette et chroot-fængsel og skabe processer i det.
Sådan opretter du et chroot-fængsel og udfører programmer i det
Et chroot-fængsel er i bund og grund en mappe, der indeholder alle de nødvendige ressourcer, filer, binære filer og andre afhængigheder, som et program skal bruge for at fungere korrekt.
Men i modsætning til i et almindeligt Linux-miljø er chroot-fængslets miljø stærkt begrænset, og programmet kan ikke få adgang til eksterne eller yderligere filer og systemressourcer.
For at køre Bash-skallen i et chroot-fængsel, skal du for eksempel kopiere Bash-binæren og alle dens afhængigheder til chroot-mappen.
Her er trinene til at oprette et chroot-fængsel og afføde en Bash-shell:
- For at et program kan køre med succes, skal du kopiere alle dets afhængigheder over til den chrootede mappe. Lad os finde den binære, i dette tilfælde, Bash, og placeringen af alle dens afhængigheder ved at bruge which og ldd kommandoerne:
hvilken bash
ldd /usr/bin/bash - Nu hvor du kender placeringen af binærfilen og dens afhængigheder, kopier dem over til den mappe, som du vil lave om til et chroot-fængsel. Brug kommandoen mkdir til at oprette de nødvendige mapper og bruge cp kommandoen, kopier alle filerne til de tilsvarende mapper:
mkdir bin lib lib64 && cp -r /lib/ * ./lib && cp -r /lib64/* /lib64/ && cp /bin/bash /bin/
- Endelig, med programmet og dets afhængigheder kopieret over, kan du køre chroot-kommandoen med forhøjede privilegier ved at bruge sudo-præfikset til at skabe chroot-miljøet i den valgte mappe. Som standard vil det skabe en Bash-shell. Her er kommandoen til at indtaste:
sudo chroot directory_name
Det er alle trinene til at skabe et chroot-fængsel og køre et program inde i det.
Sådan bryder du ud af et chroot-fængsel
Selvom chroot jails er gode til at teste ustabil software, er de også nyttige, når de håndterer SSH-forbindelser, da chroot af tilsluttede brugere er en af de mange måder at sikre din SSH-server på.
På den anden side, hvis du er en penetrationstester og har logget ind på dit måls SSH-server, kan det være frustrerende at finde ud af, at det er et chrooted miljø og føles som en blindgyde.
Der er dog en hel del måder at slippe ud af et forkert konfigureret chroot-fængsel, nogle kræver C-programmeringsfærdigheder, mens andre kan automatiseres med værktøj. Et par nemme måder at undslippe chroot på er:
- Indlejrede chroot-kald
- Indlejrede chroot-opkald med gemt filbeskrivelse
- Mount root metode
- procfs undslippe
- ptrace flugt
Bemærk, at for at udføre chroot-escape ved hjælp af nogen af disse metoder, skal du have eskalerede privilegier i systemet. Lær mere om disse flugtmetoder ved at gå over til chw00ts GitHub-lager, et chroot-escape-automatiseringsværktøj.
Nu ved du alt om chroot i Linux
Nu hvor du ved, hvad chroot er, hvordan det virker, og hvordan du implementerer det, burde du være i stand til at sandboxe applikationer uden besvær fra terminalen. Husk, at der, som du ved, er flere måder at bryde ud af et chrooted miljø på.
Dette viser, at chroot på ingen måde var designet til at blive implementeret som en sikkerhedsfunktion. Så du bør bruge chroot med stor forsigtighed, da en forkert konfiguration kan ende med at give bagslag og kompromittere dit systems sikkerhed.
Det er bedst at holde sig til dedikerede sandboxing-løsninger som containeriseringssoftware eller virtuelle maskiner. Begge er centreret omkring sandboxing og sikkerhed, så medmindre der er en ny nul-dag i byen, behøver du ikke bekymre dig om dit systems sikkerhed og integritet.
Hvis du er usikker på, hvad du skal vælge mellem containeriserings- og virtualiseringssoftware, bør du prøve begge dele og selv se, hvilken der er bedst.