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
Niedogodności
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)