Polecenie chroot tworzy izolowane środowisko w systemie Linux, zmieniając katalog główny dla wszystkich uruchomionych procesów.

Czy chcesz uruchamiać aplikacje lub usługi w odizolowanej przestrzeni w systemie Linux? A może chcesz przetestować i debugować aplikację bez ingerencji w resztę systemu? Jeśli tak, będziesz chciał dowiedzieć się o chroot, potężnym mechanizmie wbudowanym w Linuksa, który pozwala ci stworzyć osobne środowisko w twoim systemie.

Przyjrzyjmy się szczegółowo chrootowi, poznajmy jego zalety, przypadki użycia, jak skonfigurować go w systemie Linux, aw razie potrzeby, jak z niego uciec.

Co to jest chroot w Linuksie?

chroot lub change-root to prawdopodobnie jedna z najłatwiejszych i najstarszych form oprogramowania do konteneryzacji, która pozwala użytkownikowi na bezpieczne sandboxowanie aplikacji i usług. Piaskownica, w kategoriach komputerowych, to proces izolowania programu w ograniczonej przestrzeni z wcześniej zdefiniowanymi zasobami.

Jeśli jesteś zaznajomiony z Docker i jak to działa

, możesz myśleć o chroot jako o bardzo uproszczonej wersji tego programu. chroot działa poprzez zmianę katalogu głównego programu, ograniczając dostęp i widoczność, a tym samym zapewniając dodatkową warstwę izolacji i bezpieczeństwa.

Zasadniczo tworzysz oddzielny katalog, kopiujesz wszystkie zależności programu do nowego katalogu, a następnie uruchamiasz polecenie chroot. Pozwala to programowi działać poprawnie bez dostępu do podstawowego systemu plików.

chrootowanie programu to świetny sposób na przetestowanie jego niezawodności w bezpiecznej przestrzeni bez zmiany rzeczywistych plików systemowych. Co więcej, możesz również zmniejszyć ryzyko bezpieczeństwa spowodowane przez przejęty pakiet, ponieważ w środowisku z chroot, przejęty pakiet nie będzie mógł uzyskać dostępu i modyfikować wrażliwych plików systemowych.

Program będzie mógł uzyskiwać dostęp i przeglądać tylko pliki zaimportowane do katalogu chroot, znanego również jako „więzienie chroot”. Dzięki temu program i jego podprocesy nie zakłócają działania systemu podstawowego.

Co to jest więzienie chroot?

Więzienie chroot to izolowane środowisko, w którym rezydują i są wykonywane programy chroot. Termin więzienie chroot wywodzi się z koncepcji, że proces i jego podprocesy znajdują się w chrootowanym środowisku nie mają dostępu ani wglądu do podstawowego systemu plików i są uwięzione w granicach chroot ze z góry określonymi zasoby.

Teraz, gdy koncepcja chroot jest dla ciebie jasna, weźmy się w garść i nauczmy się, jak stworzyć więzienie chroot i uruchamiać w nim procesy.

Jak stworzyć więzienie chroot i uruchamiać w nim programy

Więzienie chroot to zasadniczo katalog zawierający wszystkie wymagane zasoby, pliki, pliki binarne i inne zależności, których program potrzebuje do prawidłowego działania.

Jednak w przeciwieństwie do zwykłego środowiska Linux, środowisko chroot jail jest bardzo ograniczone, a program nie może uzyskać dostępu do zewnętrznych lub dodatkowych plików i zasobów systemowych.

Na przykład, aby uruchomić powłokę Bash w więzieniu chroot, musisz skopiować plik binarny Bash i wszystkie jego zależności do katalogu chroot.

Oto kroki, aby utworzyć więzienie chroot i odrodzić powłokę Bash:

  1. Aby program działał pomyślnie, musisz skopiować wszystkie jego zależności do katalogu z chrootem. Znajdźmy plik binarny, w tym przypadku Bash, i lokalizację wszystkich jego zależności za pomocą poleceń which i ldd:
    który bas
    ldd /usr/bin/bash
  2. Teraz, gdy znasz lokalizację pliku binarnego i jego zależności, skopiuj je do katalogu, który chcesz przekształcić w więzienie chroot. Za pomocą polecenia mkdir utwórz niezbędne katalogi i using polecenie cp, skopiuj wszystkie pliki do odpowiednich katalogów:
    mkdir bin lib lib64 && cp -r /lib/ * ./lib && cp -r /lib64/* /lib64/ && cp /bin/bash /bin/
  3. Wreszcie, po skopiowaniu programu i jego zależności, możesz uruchomić polecenie chroot z podwyższonymi uprawnieniami, używając przedrostka sudo, aby odrodzić środowisko chroot w wybranym katalogu. Domyślnie odrodzi powłokę Bash. Oto polecenie do wpisania:
    sudo chroot nazwa_katalogu

To wszystkie kroki, aby odrodzić więzienie chroot i uruchomić w nim program.

Jak wydostać się z więzienia chroot

Chociaż więzienia chroot są dobre do testowania niestabilnego oprogramowania, są również przydatne podczas obsługi połączeń SSH, ponieważ chrootowanie podłączonych użytkowników jest jednym z wielu sposoby zabezpieczenia serwera SSH.

Z drugiej strony, jeśli jesteś testerem penetracyjnym i zalogowałeś się na serwerze SSH swojego celu, stwierdzenie, że jest to środowisko z chrootem, może być frustrujące i wydawać się ślepym zaułkiem.

Istnieje jednak wiele sposobów na ucieczkę z źle skonfigurowanego więzienia chroot, niektóre wymagają umiejętności programowania w języku C, podczas gdy inne można zautomatyzować za pomocą narzędzi. Kilka łatwych sposobów ucieczki chroota to:

  • Zagnieżdżone wywołania chroot
  • Zagnieżdżone wywołania chroot z zapisanym deskryptorem pliku
  • Zamontuj metodę roota
  • ucieczka procfs
  • droga ucieczki

Pamiętaj, że aby wykonać ucieczkę chroot przy użyciu którejkolwiek z tych metod, musisz mieć eskalowane uprawnienia w systemie. Dowiedz się więcej o tych metodach ucieczki, przechodząc do repozytorium GitHub firmy chw00t, narzędzie do automatyzacji ucieczki chroot.

Teraz wiesz wszystko o chroot w systemie Linux

Teraz, gdy wiesz, czym jest chroot, jak działa i jak go wdrożyć, powinieneś być w stanie bez wysiłku uruchamiać aplikacje w piaskownicy z poziomu terminala. Pamiętaj, że jak wiesz, istnieje wiele sposobów na wyrwanie się z chrootowanego środowiska.

To pokazuje, że chroot nie został w żaden sposób zaprojektowany do implementacji jako funkcja bezpieczeństwa. Dlatego powinieneś używać chroot z dużą ostrożnością, ponieważ niewłaściwa konfiguracja może zakończyć się odwrotnym skutkiem i zagrozić bezpieczeństwu twojego systemu.

Najlepiej trzymać się dedykowanych rozwiązań piaskownicy, takich jak oprogramowanie do konteneryzacji lub maszyny wirtualne. Oba koncentrują się na piaskownicy i bezpieczeństwie, więc jeśli w mieście nie pojawi się nowy dzień zerowy, nie musisz się martwić o bezpieczeństwo i integralność swojego systemu.

Jeśli nie masz pewności, które oprogramowanie wybrać między oprogramowaniem do konteneryzacji a oprogramowaniem do wirtualizacji, wypróbuj oba i przekonaj się, które z nich jest lepsze.