Jak konfigurować więzienia Linux Chroot

Jak konfigurować więzienia Linux Chroot
Zwłaszcza te poświęcone usługom krytycznym, systemy Linux wymagają wiedzy na poziomie ekspertów do pracy i podstawowych środków bezpieczeństwa.

Niestety, nawet po podjęciu kluczowych środków bezpieczeństwa, luki w zabezpieczeniach nadal trafiają do bezpiecznych systemów. Jednym ze sposobów zarządzania i ochrony systemu jest ograniczenie możliwych szkód po wystąpieniu ataku.

W tym samouczku omówimy proces korzystania z więzienia Chroot do zarządzania szkodami systemowymi w przypadku ataku. Przyjrzymy się, jak izolować procesy i podproces do określonego środowiska z fałszywymi uprawnieniami korzeniowymi. W ten sposób ograniczy proces do konkretnego katalogu i odmówi dostępu do innych obszarów systemu.

Krótkie wprowadzenie do więzienia Chroot

Więzienie Chroot to metoda izolowania procesów i ich podproces z głównego systemu za pomocą fałszywych uprawnień korzeniowych.

Jak wspomniano, izolowanie określonego procesu za pomocą fałszywych uprawnień korzeniowych ogranicza szkody w przypadku złośliwego ataku. Usługi chrooted są ograniczone do katalogów i plików w ich katalogach i nie są oświadczone po ponownym uruchomieniu serwisu.

Dlaczego warto korzystać z więzienia Chroot

Głównym celem więzienia Chroot jest miara bezpieczeństwa. Chroot jest również przydatny podczas odzyskiwania utraconych haseł poprzez montaż urządzeń z mediów na żywo.

Istnieją różne zalety i wady ustawiania więzienia Chroot. Obejmują one:

Zalety

  • Ograniczenia dostępu: W przypadku kompromisu bezpieczeństwa jedynymi uszkodzonymi katalogami są te w więzieniu Chroot.
  • Limity poleceń: Użytkownicy lub procesy ograniczają się do poleceń dozwolonych w więzieniu.

Niedogodności

  • Konfiguracja może być trudna.
  • Wymaga dużo pracy-jeśli potrzebujesz dodatkowego polecenia niż te dozwolone, musisz je uwzględnić ręcznie.

Jak utworzyć podstawowe więzienie Chroot

W tym procesie utworzymy podstawowe więzienie Chroot z 3 poleceniami ograniczonymi do tego folderu. Pomoże to zilustrować, jak utworzyć więzienie i przypisać różne polecenia.

Zacznij od utworzenia głównego folderu. Możesz myśleć o tym folderze jako o / folderze w głównym systemie. Nazwa folderu może być wszystkim. W naszym przypadku nazywamy to /chrootjail

sudo mkdir /chrootjail

Użyjemy tego katalogu jako fałszywego korzenia zawierającego polecenia, które do niego przypisamy. W przypadku poleceń, których użyjemy, będziemy wymagać katalogu bin (zawiera wykonywalne polecenia) i itp., katalog (zawierający pliki konfiguracyjne dla poleceń).

W folderze /chrootjail utwórz te dwa foldery:

sudo mkdir /chrootjail /itd., bin

Następnym krokiem jest utworzenie katalogów dla dynamicznie połączonych bibliotek dla poleceń, które chcemy dołączyć w więzieniu. W tym przykładzie użyjemy poleceń Bash, LS i GREP.

Użyj polecenia LDD, aby wymienić zależności tych poleceń, jak pokazano poniżej:

sudo ldd /bin /bash /bin /ls /bin /grep

Jeśli nie jesteś w folderze BIN, musisz przejść pełną ścieżkę dla poleceń, których chcesz użyć. Na przykład LDD /BIN /BASH lub LDD /BIN /GREP

Z powyższego wyjścia LDD potrzebujemy katalogów lib64 i /lib /x86_64-linux-gni. W katalogu więzienia utwórz te foldery.

sudo mkdir -p /chrootjail lib /x86_64-linux-gnu, lib64

Po utworzeniu dynamicznych katalogów biblioteki możemy wymienić je za pomocą drzewa, jak pokazano poniżej:

W miarę postępów zaczniesz uzyskać jasny obraz tego, co oznacza więzienie chroot.

Tworzymy środowisko podobne do normalnego katalogu głównego systemu Linux. Różnica polega na tym, że w tym środowisku dozwolone są tylko określone polecenia, a dostęp jest ograniczony.

Teraz, gdy stworzyliśmy kosz. itp., LIB i LIB64 możemy dodać wymagane pliki w ich odpowiednich katalogach.

Zacznijmy od binarów.

sudo cp /bin /bash /chrootjail /bin && sudo cp /bin /ls /chrootjail /bin && sudo cp /bin /grep /chrootjail /bin

Po skopiowaniu plików binarnych dla potrzebnych poleceń, potrzebujemy bibliotek dla każdego polecenia. Możesz użyć polecenia LDD do wyświetlenia plików do kopiowania.

Zacznijmy od Bash. W przypadku Bash wymagamy następujących bibliotek:

/lib/x86_64-linux-gnu/libtinfo.Więc.6
/lib/x86_64-linux-gnu/libdl.Więc.2
/lib/x86_64-linux-gnu/libc.Więc.6
/lib64/ld-linux-x86-64.Więc.2

Zamiast kopiować wszystkie te pliki jeden po drugim, możemy użyć prostej pętli do kopiowania każdej biblioteki we wszystkich bibliotekach do/chrootjail/lib/x86_64-linux-gnu

Powtórzmy ten proces zarówno dla polecenia LS, jak i GREP:

Dla polecenia LS:

Dla Grep Command:

Następnie, wewnątrz katalogu lib64, mamy jedną wspólną bibliotekę we wszystkich binariach. Możemy po prostu skopiować go za pomocą prostego polecenia CP:

Następnie edytujmy główny plik logowania Bash (znajdujący się w /etc /bash.bashrc in debian), abyśmy mogli dostosować błąd bash do naszych upodobań. Używanie prostych poleceń echo i tee, jak pokazano:

sudo echo 'ps1 = "chrootjail #"' | sudo tee/chrootjail/etc/bash.Bashrc

Po zakończeniu wszystkich powyższych kroków możemy zalogować się do środowiska więzienia za pomocą polecenia Chroot, jak pokazano.

sudo chroot /chrootjail /bin /bash

Otrzymasz uprawnienia korzeniowe z monitem podobnym do tych utworzonych w komendzie echo i tee powyżej.

Po zalogowaniu się zobaczysz, że masz dostęp do poleceń, które zawarłeś podczas utworzenia więzienia. Jeśli potrzebujesz większej liczby poleceń, musisz je ręcznie dodać.

NOTATKA: Ponieważ dołączyłeś powłokę bash, będziesz mieć dostęp do wszystkich wbudowanych poleceń Bash. To pozwala wyjść z więzienia za pomocą polecenia wyjścia.

Wniosek

Ten samouczek obejmował, czym jest więzienie Chroot i jak możemy go użyć do stworzenia izolowanego środowiska z głównego systemu. Możesz użyć technik omówionych w przewodniku, aby tworzyć izolowane środowiska dla usług krytycznych.

Aby ćwiczyć to, czego się nauczyłeś, spróbuj stworzyć więzienie Apache2.

WSKAZÓWKA: Zacznij od utworzenia katalogu głównego, dodaj pliki konfiguracyjne (etc/apache2), dodaj dokument root (/var/www/html), dodaj binarny (/usr/sbin/apache2) i na koniec dodaj wymagane biblioteki (ldd/ usr/sbin/apache2)