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.

instagram viewer

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:

  1. 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
  2. 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/
  3. 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ší.