Príkaz chroot vytvára izolované prostredie v systéme Linux zmenou koreňového adresára pre všetky spustené procesy.
Hľadáte spúšťanie aplikácií alebo služieb v izolovanom priestore v systéme Linux? Alebo možno chcete otestovať a ladiť aplikáciu bez toho, aby zasahovala do zvyšku vášho systému? Ak áno, budete sa chcieť dozvedieť o chroote, výkonnom mechanizme zabudovanom do Linuxu, ktorý vám umožňuje vytvoriť samostatné prostredie vo vašom systéme.
Poďme podrobne preskúmať chroot, dozvedieť sa o jeho výhodách, prípadoch použitia, ako ho nastaviť v systéme Linux a ak je to potrebné, ako mu uniknúť.
Čo je chroot v Linuxe?
chroot alebo change-root je pravdepodobne jednou z najjednoduchších a najstarších foriem kontajnerizačného softvéru, ktorý umožňuje používateľovi bezpečne uchovávať aplikácie a služby v karanténe. Sandboxing, z hľadiska výpočtovej techniky, je proces izolácie programu v obmedzenom priestore s vopred definovanými zdrojmi.
Ak ste oboznámení s Docker a ako to funguje, môžete si predstaviť chroot ako jeho výrazne oklieštenú verziu. chroot funguje tak, že mení koreňový adresár programu, obmedzuje prístup a viditeľnosť, a tým poskytuje ďalšiu vrstvu izolácie a zabezpečenia.
V podstate vytvoríte samostatný adresár, skopírujete všetky závislosti programu do nového adresára a potom spustíte príkaz chroot. To umožňuje programu správne fungovať bez prístupu k základnému súborovému systému.
chrootovanie programu je skvelý spôsob, ako otestovať jeho spoľahlivosť v bezpečnom priestore bez toho, aby sa zmenili skutočné systémové súbory. Okrem toho môžete tiež znížiť bezpečnostné riziko spôsobené napadnutým balíkom, pretože v chrootovanom prostredí nebude mať napadnutý balík prístup k citlivým systémovým súborom a nebude ich môcť upravovať.
Program bude môcť pristupovať a zobrazovať iba súbory importované do chrootovaného adresára, inak známeho ako „chroot väzenie“. To zabraňuje tomu, aby program a jeho podprocesy zasahovali do základného systému.
Čo je chroot väzenie?
Chroot väzenie je izolované prostredie, kde sa nachádzajú a spúšťajú chroot programy. Termín chroot väzenie je odvodený od konceptu, že proces a jeho podprocesy vo vnútri chrootovaného prostredia nemajú prístup ani viditeľnosť k základnému súborovému systému a sú uväznení v rámci chroot s vopred určeným zdrojov.
Teraz, keď je vám koncept chroot jasný, poďme si to vyskúšať a naučiť sa, ako môžete vytvoriť chroot väzenie a spawnovať v ňom procesy.
Ako vytvoriť chroot väzenie a spúšťať v ňom programy
Chroot väzenie je v podstate adresár, ktorý obsahuje všetky požadované zdroje, súbory, binárne súbory a ďalšie závislosti, ktoré by program potreboval na správne fungovanie.
Na rozdiel od bežného prostredia Linuxu je však prostredie väzenia chroot veľmi obmedzené a program nemôže pristupovať k externým alebo dodatočným súborom a systémovým zdrojom.
Ak chcete napríklad spustiť shell Bash v chroot väzení, museli by ste skopírovať binárny súbor Bash a všetky jeho závislosti do chroot adresára.
Tu sú kroky na vytvorenie chroot väznice a vytvorenie Bash shellu:
- Aby program úspešne fungoval, musíte skopírovať všetky jeho závislosti do chrootovaného adresára. Poďme nájsť binárny súbor, v tomto prípade Bash, a umiestnenie všetkých jeho závislostí pomocou príkazov which a ldd:
ktorý bash
ldd /usr/bin/bash - Teraz, keď poznáte umiestnenie binárneho súboru a jeho závislosti, skopírujte ich do adresára, ktorý chcete zmeniť na chroot väzenie. Pomocou príkazu mkdir vytvorte potrebné adresáre a pomocou príkaz cp, skopírujte všetky súbory do príslušných adresárov:
mkdir bin lib lib64 && cp -r /lib/ * ./lib && cp -r /lib64/* /lib64/ && cp /bin/bash /bin/
- Nakoniec, keď je program a jeho závislosti skopírované, môžete spustiť príkaz chroot so zvýšenými oprávneniami pomocou predpony sudo na vytvorenie prostredia chroot vo vybranom adresári. V predvolenom nastavení vytvorí shell Bash. Tu je príkaz na zadanie:
sudo chroot názov_adresára
To sú všetky kroky na vytvorenie chrootovej väznice a spustenie programu v nej.
Ako sa dostať z chrootového väzenia
Chroot väzenia sú síce dobré na testovanie nestabilného softvéru, ale sú užitočné aj pri práci s pripojeniami SSH, keďže chrootovanie pripojených používateľov je jedným z mnohých spôsoby zabezpečenia vášho SSH servera.
Na druhej strane, ak ste penetračný tester a prihlásili ste sa na server SSH svojho cieľa, zistenie, že ide o chrootované prostredie, môže byť frustrujúce a cítiť sa ako slepá ulička.
Existuje však veľa spôsobov, ako uniknúť z nesprávne nakonfigurovaného väzenia chroot, niektoré vyžadujú zručnosti programovania v jazyku C, zatiaľ čo iné je možné automatizovať pomocou nástrojov. Niekoľko jednoduchých spôsobov úniku chroot:
- Vnorené chroot hovory
- Vnorené chroot volania s uloženým deskriptorom súboru
- Metóda pripojenia root
- procfs uniknúť
- ptrace uniknúť
Upozorňujeme, že ak chcete vykonať chroot escape pomocou ktorejkoľvek z týchto metód, budete musieť mať v systéme eskalované privilégiá. Viac informácií o týchto únikových metodológiách nájdete na stránke úložisko GitHub chw00t, nástroj na automatizáciu chroot escape.
Teraz viete všetko o chroote v systéme Linux
Teraz, keď viete, čo je chroot, ako funguje a ako ho implementovať, mali by ste byť schopní bez námahy prenášať aplikácie v karanténe z terminálu. Majte na pamäti, že ako viete, existuje viacero spôsobov, ako sa dostať z chrootovaného prostredia.
To dokazuje, že chroot nebol v žiadnom prípade navrhnutý na implementáciu ako bezpečnostný prvok. Chroot by ste preto mali používať s veľkou opatrnosťou, pretože nesprávna konfigurácia môže skončiť a ohroziť bezpečnosť vášho systému.
Najlepšie je držať sa špecializovaných riešení sandboxingu, ako je kontajnerový softvér alebo virtuálne stroje. Obidve sa sústreďujú na karanténu a bezpečnosť, takže pokiaľ v meste nie je nový zero-day, nemusíte sa obávať o bezpečnosť a integritu vášho systému.
Ak si nie ste istí, ktorý si vybrať medzi kontajnerovým a virtualizačným softvérom, mali by ste vyskúšať oba a sami uvidíte, ktorý z nich je lepší.