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:
- 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 - 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/
- 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.