Příkaz chroot vytváří izolované prostředí v Linuxu změnou kořenového adresáře pro všechny běžící procesy.

Chcete spouštět aplikace nebo služby v izolovaném prostoru v Linuxu? Nebo možná chcete otestovat a ladit aplikaci, aniž by to zasahovalo do zbytku vašeho systému? Pokud ano, budete se chtít dozvědět o chrootu, mocném mechanismu zabudovaném do Linuxu, který vám umožňuje vytvořit samostatné prostředí ve vašem systému.

Pojďme podrobně prozkoumat chroot, dozvědět se o jeho výhodách, případech použití, jak jej nastavit v systému Linux a v případě potřeby, jak z něj uniknout.

Co je chroot v Linuxu?

chroot nebo change-root je pravděpodobně jednou z nejjednodušších a nejstarších forem kontejnerizačního softwaru, která uživateli umožňuje bezpečně sandboxovat aplikace a služby. Sandboxing, z hlediska výpočetní techniky, je proces izolace programu v omezeném prostoru s předem definovanými prostředky.

Pokud jste obeznámeni s Docker a jak to funguje, můžete si chroot představit jako jeho silně okleštěnou verzi. chroot funguje tak, že mění kořenový adresář programu, omezuje přístup a viditelnost, a tím poskytuje další vrstvu izolace a zabezpečení.

instagram viewer

V podstatě vytvoříte samostatný adresář, zkopírujete všechny závislosti programu do nového adresáře a poté spustíte příkaz chroot. To umožňuje programu správně fungovat, aniž by měl přístup k základnímu systému souborů.

chrootování programu je skvělý způsob, jak otestovat jeho spolehlivost v bezpečném prostoru, aniž by došlo ke změně skutečných systémových souborů. Kromě toho můžete také snížit bezpečnostní riziko způsobené kompromitovaným balíčkem, protože v chrootovaném prostředí nebude kompromitovaný balíček schopen přistupovat a upravovat citlivé systémové soubory.

Program bude moci přistupovat a prohlížet pouze soubory importované do chrootovaného adresáře, jinak známého jako "chroot vězení". Tím se zabrání tomu, aby program a jeho podprocesy zasahovaly do základního systému.

Co je chroot vězení?

Chroot vězení je izolované prostředí, kde jsou chroot programy umístěny a jsou spouštěny. Termín chroot jail je odvozen z konceptu, že proces a jeho dílčí procesy uvnitř chrootovaného prostředí nemají žádný přístup nebo viditelnost k základnímu souborovému systému a jsou uvězněni v mezích chrootu s předem určeným zdroje.

Nyní, když je vám koncept chroot jasný, pojďme si to vyzkoušet a naučit se, jak vytvořit chroot jail a spawnovat v něm procesy.

Jak vytvořit chrootovou věznici a spouštět v ní programy

Chroot vězení je v podstatě adresář, který obsahuje všechny požadované prostředky, soubory, binární soubory a další závislosti, které by program potřeboval ke správnému fungování.

Na rozdíl od běžného prostředí Linuxu je však prostředí chroot jail vysoce omezené a program nemůže přistupovat k externím nebo dalším souborům a systémovým prostředkům.

Chcete-li například spustit shell Bash ve vězení chroot, museli byste zkopírovat binární soubor Bash a všechny jeho závislosti do adresáře chroot.

Zde jsou kroky k vytvoření chroot jail a vytvoření Bash shellu:

  1. Aby program úspěšně běžel, musíte zkopírovat všechny jeho závislosti do chrootovaného adresáře. Pojďme najít binární soubor, v tomto případě Bash, a umístění všech jeho závislostí pomocí příkazů which a ldd:
    který bash
    ldd /usr/bin/bash
  2. Nyní, když znáte umístění binárního souboru a jeho závislosti, zkopírujte je do adresáře, který chcete změnit na chroot vězení. Pomocí příkazu mkdir vytvořte potřebné adresáře a pomocí příkaz cp, zkopírujte všechny soubory do odpovídajících adresářů:
    mkdir bin lib lib64 && cp -r /lib/ * ./lib && cp -r /lib64/* /lib64/ && cp /bin/bash /bin/
  3. Nakonec, když je program a jeho závislosti zkopírovány, můžete spustit příkaz chroot se zvýšenými oprávněními pomocí předpony sudo, abyste vytvořili prostředí chroot ve zvoleném adresáři. Ve výchozím nastavení vytvoří shell Bash. Zde je příkaz k zadání:
    název_adresáře sudo chroot

To jsou všechny kroky k vytvoření chrootového vězení a spuštění programu v něm.

Jak se vymanit z chrootového vězení

Chroot jail jsou sice dobré pro testování nestabilního softwaru, ale jsou také užitečné při práci s připojením SSH, protože chrootování připojených uživatelů je jedním z mnoha způsoby, jak zabezpečit váš server SSH.

Na druhou stranu, pokud jste penetrační tester a přihlásili jste se na server SSH svého cíle, zjištění, že jde o chrootované prostředí, může být frustrující a cítit se jako slepá ulička.

Existuje však mnoho způsobů, jak uniknout z nesprávně nakonfigurovaného chroot vězení, některé vyžadují znalosti programování v jazyce C, zatímco jiné lze automatizovat pomocí nástrojů. Několik jednoduchých způsobů chroot escape je:

  • Vnořená chroot volání
  • Vnořená chroot volání s uloženým deskriptorem souboru
  • Metoda Mount root
  • procfs uniknout
  • ptrace útěk

Pamatujte, že k provedení chroot escape pomocí kterékoli z těchto metod budete muset mít v systému eskalovaná oprávnění. Další informace o těchto únikových metodách naleznete na adrese úložiště GitHub chw00t, nástroj pro automatizaci chroot escape.

Nyní víte vše o chrootu v Linuxu

Nyní, když víte, co je chroot, jak funguje a jak jej implementovat, měli byste být schopni bez námahy používat sandbox aplikace z terminálu. Mějte na paměti, že, jak víte, existuje několik způsobů, jak se vymanit z chrootovaného prostředí.

To ukazuje, že chroot nebyl v žádném případě navržen tak, aby byl implementován jako bezpečnostní prvek. Chroot byste tedy měli používat s velkou opatrností, protože nesprávná konfigurace se může vymstít a ohrozit bezpečnost vašeho systému.

Nejlepší je držet se specializovaných řešení sandboxingu, jako je kontejnerizační software nebo virtuální stroje. Oba se soustředí na sandboxing a zabezpečení, takže pokud ve městě nenastane nový zero-day, nemusíte se starat o bezpečnost a integritu svého systému.

Pokud si nejste jisti, který zvolit mezi kontejnerizačním a virtualizačním softwarem, měli byste vyzkoušet oba a sami uvidíte, který z nich je lepší.