Jakie są zalety i wady nieuprzywilejowanych kontenerów?
16
Techniczne wyjaśnienie, czym jest nieuprzywilejowany pojemnik, jest całkiem dobre. Jednak nie jest to dla zwykłego użytkownika komputera. Czy istnieje prosta odpowiedź na pytanie, kiedy i dlaczego ludzie powinni używać nieuprzywilejowanych pojemników oraz jakie są ich zalety i wady?
Uruchamianie nieuprzywilejowanych kontenerów jest najbezpieczniejszym sposobem uruchamiania kontenerów w środowisku produkcyjnym. Kontenery zyskują zły rozgłos, jeśli chodzi o bezpieczeństwo, a jednym z powodów jest to, że niektórzy użytkownicy stwierdzili, że jeśli użytkownik zrootuje się w kontenerze, istnieje również możliwość uzyskania roota na hoście. Zasadniczo to, co robi nieuprzywilejowany kontener, to maskowanie identyfikatora użytkownika z hosta. W nieuprzywilejowanych kontenerach użytkownicy niebędący rootami mogą tworzyć kontenery i będą mieć i pojawiać się w kontenerze jako root, ale pojawią się jako identyfikator użytkownika 10000 na przykład na hoście (niezależnie od tego, jak mapuje się identyfikatory użytkownika). Niedawno napisałem na ten temat post na blogu w oparciu o serię blogów Stephane Grabera na LXC (jeden z genialnych umysłów / wiodących twórców LXC i ktoś, kogo zdecydowanie należy śledzić). Mówię ponownie, niezwykle błyskotliwy.
Jak widać procesy działają w kontenerze jako root, ale nie pojawiają się jako root, ale jako 100000 od hosta.
Podsumowując: Korzyści - dodatkowe bezpieczeństwo i dodatkowa izolacja dla bezpieczeństwa. Wada - trochę mylące, aby najpierw owinąć głowę, a nie dla początkującego użytkownika.
Tak więc, jeśli dobrze to rozumiem, kontenery same w sobie nie są w 100% bezpieczne. Bez względu na to, z którego pojemnika korzystasz, bestia może uciec. I to tylko tutaj, kiedy rodzaj pojemnika staje się ważny. W przypadku uprzywilejowanych kontenerów bestia będzie działała dziko pod rootem, sadząc rootkity i chrupiąc cenne klucze SSL. Dla osób nieuprzywilejowanych będzie to ograniczone tylko do konta użytkownika, które utworzyło kontener, prawda? Kradzież jego kluczy SSH itp. Czy to naprawdę bezpieczniejsze? Czy można to wytłumaczyć obrazem czterech zagnieżdżonych skrzynek?
anatoly techtonik
2
Krótko mówiąc, same pojemniki zaraz po wyjęciu z pudełka nie są bezpieczne do użytku produkcyjnego. Traktuj swoje środowisko LXC jak każde inne środowisko Linux. Nie zostawiłbyś swojego Linux-a szeroko otwartego, prawda ?! Tak, twój kontener będzie ograniczony tylko do tego, na które konto użytkownika jest mapowane. Sprawdź post Grabera na temat nieprywatnych konatatatorów: Myślę, że największym problemem jest możliwość wykorzystania jądra i wywołań systemowych, ponieważ każdy kontener ma to samo jądro. Istnieje kilka sposobów na zwiększenie bezpieczeństwa za pomocą cgroups i innych aplikacji, takich jak selinux, apparmor i seccomp i więcej.
Utwórz osobnego ograniczonego użytkownika do uruchamiania kontenerów. Wydaje się sprawiedliwy. Przyjmuję to jako odpowiedź. Dzięki.
anatoly techtonik
4
Są to bardzo cenne narzędzia do testowania, piaskownicy i enkapsulacji. Chcesz, aby serwer WWW był bezpiecznie zablokowany we własnym środowisku roboczym i nie mógł uzyskać dostępu do poufnych plików prywatnych? Użyj pojemnika. Masz aplikację, która wymaga starych wersji bibliotek i określonych plików konfiguracyjnych, niezgodnych z innymi aplikacjami? Również pojemnik. Zasadniczo jest to chroot zrobione dobrze. Pozwala to na utrzymanie usług na tyle osobnych, że utrzymanie każdej z nich jest znacznie łatwiejsze, i można je przenosić lub kopiować na inną maszynę bez konieczności naruszania istniejącego systemu.
Minusem jest to, że musisz pamiętać przestrzeń nazw dla prawie wszystkiego, co jest lokalne dla kontenera. Musisz wiedzieć, gdzie jesteś, a komunikacja między kontenerami nie jest trywialna. Jest to dobry pomysł, gdy potrzebujesz modułowości, ale nie chcesz narzutu maszyn wirtualnych, a rzeczy, które trzymasz w kontenerach, nie są zbytnio powiązane.
Dla „zwykłego” użytkownika możesz użyć kontenerów, aby używać jednej maszyny dla dwóch osób, zachowując je tak, jakby były na zupełnie innych maszynach. Na przykład współlokatorzy.
Chociaż dobry opis tego, do czego służą kontenery, wciąż nie wyjaśnia różnicy między uprzywilejowanymi a nieuprzywilejowanymi.
anatoly techtonik
1
Cóż, ze wspólnym jądrem, pomimo że zwiększa on wymagania przeciwnika do uwolnienia się w jakiś sposób (a raczej; pomaga to ograniczyć powierzchnię ataku), nieuprzywilejowane kontenery wciąż nie są całkowicie izolowane od prostych włamań, które zyskują root root, pomimo tego .
Z tego powodu jest to trochę błędne założenie / roszczenie. To powiedziawszy, poziom umiejętności technicznych wielu użytkowników w Internecie będzie nadal obsługiwał usługi internetowe, na wiele sposobów, do których tak naprawdę nie są technicznie zdolni, więc hej. :)
Są to bardzo cenne narzędzia do testowania, piaskownicy i enkapsulacji. Chcesz, aby serwer WWW był bezpiecznie zablokowany we własnym środowisku roboczym i nie mógł uzyskać dostępu do poufnych plików prywatnych? Użyj pojemnika. Masz aplikację, która wymaga starych wersji bibliotek i określonych plików konfiguracyjnych, niezgodnych z innymi aplikacjami? Również pojemnik. Zasadniczo jest to chroot zrobione dobrze. Pozwala to na utrzymanie usług na tyle osobnych, że utrzymanie każdej z nich jest znacznie łatwiejsze, i można je przenosić lub kopiować na inną maszynę bez konieczności naruszania istniejącego systemu.
Minusem jest to, że musisz pamiętać przestrzeń nazw dla prawie wszystkiego, co jest lokalne dla kontenera. Musisz wiedzieć, gdzie jesteś, a komunikacja między kontenerami nie jest trywialna. Jest to dobry pomysł, gdy potrzebujesz modułowości, ale nie chcesz narzutu maszyn wirtualnych, a rzeczy, które trzymasz w kontenerach, nie są zbytnio powiązane.
Dla „zwykłego” użytkownika możesz użyć kontenerów, aby używać jednej maszyny dla dwóch osób, zachowując je tak, jakby były na zupełnie innych maszynach. Na przykład współlokatorzy.
źródło
Cóż, ze wspólnym jądrem, pomimo że zwiększa on wymagania przeciwnika do uwolnienia się w jakiś sposób (a raczej; pomaga to ograniczyć powierzchnię ataku), nieuprzywilejowane kontenery wciąż nie są całkowicie izolowane od prostych włamań, które zyskują root root, pomimo tego .
Z tego powodu jest to trochę błędne założenie / roszczenie. To powiedziawszy, poziom umiejętności technicznych wielu użytkowników w Internecie będzie nadal obsługiwał usługi internetowe, na wiele sposobów, do których tak naprawdę nie są technicznie zdolni, więc hej. :)
źródło