preambuła
ciągle słyszę, jak ludzie powtarzają nieporozumienia z całego Internetu .. dlatego postaram się wyjaśnić
po pierwsze; ile było przypadkowych odkryć, które po prostu… z powodu przyczyny i skutku zostały wykorzystane do czegoś innego niż zamierzony cel?
czym było i czym jest więzienie Chroot
Chroot został początkowo zaprojektowany do zmiany katalogu głównego dla procesu lub użytkownika (świetny do kompilacji oprogramowania z nieznanych źródeł). zapewniło to bezpieczeństwo systemu podstawowego, a także urządzenie do szybkiego łóżka testowego, w tym łatwe czyszczenie. od tego czasu minęły lata, a jego koncepcja i dorozumiane zastosowania z pewnością również się zmieniły.
chroot został skutecznie wykorzystany i znajduje się bezpośrednio w bazie kodu dla kilku programów i bibliotek (tj. openSSHd, apache2 + mod_security2 / mod_chroot, dovecot, sendmail, openVPN, pam_chroot i wiele więcej ). zakładanie, że wszystkie te główne aplikacje wdrożyły wadliwe rozwiązania bezpieczeństwa, jest po prostu nieprawdą
chroot to rozwiązanie do wirtualizacji systemu plików: nic więcej, nic więcej. założenie, że możesz łatwo wydostać się z chroota, również nie jest prawdą ... o ile przestrzegasz wytycznych dotyczących uruchamiania procesów w więzieniu chroot.
kilka kroków, aby zabezpieczyć więzienie chroot
tj. NIE uruchamiaj procesów jako ROOT. może to otworzyć główny wektor eskalacji (co jest również prawdziwe w chroot lub poza nim). nie uruchamiaj procesu w chroot, używając tego samego użytkownika co inny proces poza chroot. oddzielić każdy proces i użytkownika do własnego Chroota, aby ograniczyć powierzchnie ataku i zapewnić prywatność. montuj tylko niezbędne pliki, biblioteki i urządzenia. wreszcie chroot NIE jest zamiennikiem bezpieczeństwa systemu podstawowego. zabezpieczyć system w całości.
inna ważna uwaga: wiele osób uważa, że OpenVZ jest zepsuty lub że nie jest on równy w porównaniu z pełną wirtualizacją systemu. przyjmują to założenie, ponieważ jest to zasadniczo Chroot, a stół do procesu jest sterylizowany. ze środkami bezpieczeństwa na sprzęcie i urządzeniach. z których większość można wdrożyć w chroot.
nie każdy administrator ma poziom wiedzy niezbędny do zabezpieczenia wszystkich niezbędnych parametrów jądra na dedykowanym serwerze lub przy pełnej wirtualizacji systemu. oznacza to, że wdrożenie OpenVZ oznacza, że Twoi klienci będą mieli znacznie mniej powierzchni do ataku, aby spróbować i zabezpieczyć się przed wdrożeniem swoich aplikacji. dobry host wykona dobrą robotę, zabezpieczając te parametry, a to z kolei jest lepsze nie tylko dla wszystkich w węźle lub centrum danych, ale dla całego Internetu ...
jak wspomniano, chroot zapewnia wirtualizację systemu plików. musisz upewnić się, że nie ma żadnych plików wykonywalnych setuid, niezabezpieczonych aplikacji, bibliotek, zwisających dowiązań symbolicznych bez właściciela itp. jeśli atakujący MUSI złamać powiązanie, będzie musiał przeszukać wirtualny system plików w celu wykrycia bufora przed przepełnieniem, gry z deskryptorami plików lub w jakiś inny sposób narazić na szwank coś przebywającego w chroocie - zwykle uciekając z więzienia poprzez eskalację przywilejów lub wstrzyknięcie jego lub jej ładunku do systemu podstawowego.
jeśli tak się dzieje, zwykle jest to wynikiem złej aktualizacji, exploita zero-day lub idiomatycznego błędu ludzkiego .
dlaczego chroot jest nadal używany, w przeciwieństwie do pełnej wirtualizacji systemu
rozważ ten scenariusz: korzystasz z wirtualnego serwera prywatnego z węzłem hosta z OpenVZ. po prostu nie możesz uruchomić niczego, co działa na poziomie jądra. oznacza to również, że nie można używać wirtualizacji systemu operacyjnego do oddzielania procesów i zapewniać dodatkowe bezpieczeństwo. dlatego MUSISZ użyć chroot do tego celu.
ponadto chroot jest zrównoważony w każdym systemie, niezależnie od dostępnych zasobów. najprościej mówiąc, ma najmniejszy narzut dowolnego typu wirtualizacji. oznacza to, że jest to nadal ważne w wielu niskiej jakości urządzeniach.
rozważ inny scenariusz: masz apache działający w środowisku zwirtualizowanym. chcesz oddzielić każdego użytkownika. zapewnienie zwirtualizowanego systemu plików poprzez dodanie chroota do apache (mod_chroot, mod_security itp.) byłoby najlepszą opcją dla zapewnienia maksymalnej prywatności między użytkownikami końcowymi. pomaga to również zapobiegać gromadzeniu danych wywiadowczych i zapewnia jeszcze jedną warstwę bezpieczeństwa.
najprościej mówiąc, ważne jest, aby wprowadzić zabezpieczenia w warstwach . Chroot może być jednym z nich. nie każdy i każdy system ma luksus dostępu do jądra, dlatego chroot STILL służy temu celowi. istnieje wiele aplikacji, w których wirtualizacja całego systemu jest w zasadzie nadmierna.
W odpowiedzi na twoje pytanie
Nie korzystam szczególnie z CentOS, ale wiem, że Bind teraz traci swoje uprawnienia przed operacjami. Zakładam jednak, że wiązanie jest chrootowane ze względu na historię wektorów ataku i potencjalne luki w zabezpieczeniach.
także ... sensowniejsze jest automatyczne uruchamianie tej aplikacji, ponieważ nie KAŻDY ma dostęp do pełnej wirtualizacji na poziomie systemu / systemu operacyjnego. to z kolei teoretycznie pomaga zapewnić bezpieczeństwo użytkownikom CentOS:
dostawcy systemów operacyjnych po prostu nie obchodzą, zakładając, że każdy z nich ma ten sam system. w ten sposób mogą pomóc zapewnić dodatkową warstwę bezpieczeństwa w ogóle ...
istnieje powód, dla którego tak wiele aplikacji z niego korzysta , i oczywiście, że twój system operacyjny domyślnie tak działa: ponieważ jest on używany jako funkcja bezpieczeństwa i działa. przy starannym przygotowaniu, jak wcześniej wspomniano, jest to kolejna przeszkoda, którą potencjalny atakujący musi przezwyciężyć - przez większość czasu, ograniczając szkody do wyrządzonych tylko więzieniu chroot.