Kontenery są wszędzie: jak je zabezpieczyć?
Liczba kontenerów rośnie każdego dnia i wydaje się, że są wszędzie, ponieważ organizacje chętnie korzystają z wielu oferowanych przez nie korzyści, takich jak elastyczne tworzenie aplikacji i wdrażanie na wszystkich platformach.
Wiele osób uważa również, że korzystanie z kontenerów może pomóc im zminimalizować ograniczenia bezpieczeństwa ze względu na ich krótkotrwały charakter. Czy to prawda, czy tylko kolejne błędne wyobrażenie?
Chociaż kontenery nie mają nieodłącznych luk w zabezpieczeniach, często są wdrażane w sposób niezabezpieczony, co wiąże się z licznymi wyzwaniami związanymi z bezpieczeństwem.
Wyzwania związane z bezpieczeństwem podczas wdrażania kontenerów
Sama liczba, wszechstronność i efemeryczny stan wdrożonych kontenerów oraz fakt, że kontenery muszą komunikować się z innymi podmiotami, prowadzą do tego, że organizacje nie mają możliwości posiadania odpowiedniej widoczności ruchu między kontenerami.
Z powodu braku widoczności kontenery są często zapominane, a środki zapobiegania włamaniom i kontrole bezpieczeństwa stają się nieskuteczne, zwiększając powierzchnię ataku, a tym samym ogólne ryzyko biznesowe. Ponadto brak widoczności może skutkować niedoborem odpowiedzialności, ponieważ kontenery przechodzą przez różne środowiska od rozwoju do produkcji.
Kolejnym wyzwaniem bezpieczeństwa związanym z kontenerami jest słabe zarządzanie lukami. Na przykład podczas klonowania istniejących obrazów w celu tworzenia nowych kontenerów ich luki również zostaną zreplikowane.
Podkreśla to konieczność zapewnienia bezpieczeństwa jako integralnej części organizacyjnej strategii kontenerowej. W przeciwnym razie błędy konfiguracji i brakujące poprawki mogą być przyczyną wdrażania i wykonywania nieautoryzowanych obrazów w środowiskach produkcyjnych, co prowadzi do zwiększonej powierzchni ataku i skuteczniejszych ataków.
Wreszcie, ponieważ kontenery używają współdzielonego jądra systemu operacyjnego, złamanie jądra systemu operacyjnego hosta przez nieuczciwy kontener może prowadzić do utraty dostępu do wszystkich lub dowolnych działających kontenerów na hoście, podobnie jak potencjalnie innych hostów w sieci.
Jak zabezpieczyć swoje kontenery
Być może najlepszą praktyką zabezpieczania środowiska kontenerowego jest uznanie takiej konieczności. Oprócz tej fundamentalnej koncepcji, istnieje kilka dobrych rad, których należy przestrzegać, aby skutecznie zabezpieczyć swoje kontenery.
Miej wgląd w swoje kontenery
Przed wdrożeniem kontenera upewnij się, że rozumiesz jego zależności i co jest w nim zawarte. Aby mieć pewność, że obrazy kontenerów są nieskazitelne, musisz zyskać widoczność na każdym etapie, od projektowania po produkcję.
Brak zaufania do oprogramowania kontenera to świetny punkt wyjścia. Musisz to bardzo dokładnie sprawdzić, aby zrozumieć „skąd pochodzą, jak zostały wyprodukowane i jakie są ich źródła", jak zauważył Dirk Hohndel, wiceprezes VMware podczas 2019 Open Source Leadership Summit.
Krótko mówiąc, dokładnie sprawdź zawartość kontenerów przed ich wdrożeniem i nigdy nie uruchamiaj kontenera z nieznanym lub przestarzałym oprogramowaniem. Tylko dlatego, że obraz kontenera twierdzi, że zawiera najnowsze i najlepsze programy i biblioteki, nie oznacza to, że faktycznie zawiera.
Jednym ze sposobów na złagodzenie tego problemu jest użycie aplikacji, które mogą pomóc w oczyszczeniu kontenerów. Chociaż nie lubię wymyślać koła na nowo, być może najlepszym rozwiązaniem jest zaprzestanie używania obrazów kontenerów innych osób.
Jeśli, podobnie jak Herkules, wybierzecie trudniejszą drogę cnoty i zaczniecie tworzyć własne obrazy kontenerów, znacznie lepiej zrozumiecie, co się w nich dzieje, co ma wiele zalet poza bezpieczeństwem.
Kontroluj dostęp do roota
Większość kontenerów jest domyślnie zbudowana z dostępem roota. Jest to jednak wątpliwa praktyka. Chociaż programistom łatwiej jest uruchamiać kontenery jako root, istnieje ogromne ryzyko związane z dostępem do konta root.
Istnieje kilka podejść do rozwiązania tego problemu. Jednym ze sposobów jest ustalenie zasad firmy, że żadne kontenery nie mogą nigdy działać jako root. Alternatywnym sposobem jest skorzystanie z zasady najmniejszych przywilejów. Podczas tworzenia obrazu kontenera można określić użytkownika innego niż root w pliku Dockerfile, aby uruchomić kontener jako ten konkretny użytkownik z minimalnym wymaganym dostępem do systemu.
Na koniec można również użyć przestrzeni nazw użytkownika podczas uruchamiania uprzywilejowanych procesów kontenerów, aby wspomóc bezpieczne kontenery. W przypadku tej metody identyfikator UID służący do uruchamiania tych procesów w kontenerze wynosi zero (jest to katalog główny), ale poza kontenerem identyfikator UID to nieuprzywilejowany 1000.
Sprawdź środowisko wykonawcze kontenera
W dokumencie SP 800-190 National Institute of Standards and Technology (NIST) „ Application Container Security Guide ” wskazano, że środowiska wykonawcze kontenerów są również podatne na ataki. Chociaż nie jest to powszechna luka w zabezpieczeniach, NIST wskazuje, że luki w zabezpieczeniach środowiska wykonawczego kontenerów mogą być „ szczególnie niebezpieczne „, jeśli pozwalają na scenariusze, w których złośliwe oprogramowanie może atakować zasoby w innych kontenerach i sam system operacyjny hosta.
Atakujący może również wykorzystać luki w zabezpieczeniach, aby złamać samo oprogramowanie wykonawcze, a następnie zmienić to oprogramowanie, aby umożliwić atakującemu dostęp do innych kontenerów, monitorowanie komunikacji między kontenerami itp.
Problemy z bezpieczeństwem są znacznie częstsze w przypadku konfiguracji środowiska wykonawczego. Środowiska uruchomieniowe kontenera zazwyczaj udostępniają wiele konfigurowalnych opcji. Niewłaściwe ich ustawienie może obniżyć względne bezpieczeństwo systemu.
Na przykład na hostach kontenerów z systemem Linux zestaw dozwolonych wywołań systemowych jest często domyślnie ograniczony tylko do tych, które są wymagane do bezpiecznego działania kontenerów. Jeśli ta lista zostanie poszerzona, może narazić kontenery i system operacyjny hosta na zwiększone ryzyko ze strony zhakowanego kontenera.
Podobnie, jeśli kontener jest uruchamiany w trybie uprzywilejowanym, ma dostęp do wszystkich urządzeń na hoście, co pozwala mu zasadniczo działać jako część systemu operacyjnego hosta i wpływać na wszystkie inne działające na nim kontenery.
Innym przykładem niezabezpieczonej konfiguracji środowiska uruchomieniowego jest umożliwienie kontenerom montowania poufnych katalogów na hoście. Jeśli zhakowany kontener może wprowadzić zmiany w tych ścieżkach, może zostać użyty do podniesienia uprawnień i zaatakowania samego hosta oraz innych kontenerów działających na hoście.
Utwardź system operacyjny
NIST zaleca również uruchomienie systemu operacyjnego specyficznego dla kontenera, ponieważ zagrożenia są zazwyczaj mniejsze, ponieważ systemy operacyjne są specjalnie zaprojektowane do obsługi kontenerów i mają wyłączone inne usługi i funkcje.
Co więcej, ponieważ te zoptymalizowane systemy operacyjne są zaprojektowane specjalnie do obsługi kontenerów, zazwyczaj zawierają systemy plików tylko do odczytu i domyślnie stosują inne metody wzmacniania. Gdy tylko jest to możliwe, organizacje powinny używać tych minimalistycznych systemów operacyjnych, aby zmniejszyć powierzchnię ataku i złagodzić typowe ryzyko i działania wzmacniające związane z systemami operacyjnymi ogólnego przeznaczenia.
Organizacje, które nie mogą korzystać z systemu operacyjnego specyficznego dla kontenera, powinny postępować zgodnie ze wskazówkami zawartymi w NIST SP 800-123, Przewodnik po ogólnych zabezpieczeniach serwera, aby maksymalnie ograniczyć powierzchnię ataku hostów.
Na przykład hosty, które uruchamiają kontenery, powinny uruchamiać tylko kontenery, a nie inne aplikacje, takie jak serwer sieciowy lub baza danych, poza kontenerami. System operacyjny hosta nie powinien uruchamiać niepotrzebnych usług systemowych, takich jak bufor wydruku, który zwiększa jego powierzchnię ataku.
Wreszcie hosty powinny być stale skanowane pod kątem luk w zabezpieczeniach i szybko instalowanych aktualizacji, nie tylko środowiska wykonawczego kontenera, ale także komponentów niższego poziomu, takich jak jądro, na którym opierają się kontenery w celu zapewnienia bezpiecznej, podzielonej na sekcje operacji.
Bezpieczeństwo kontenera to najwyższy priorytet
Ponieważ coraz więcej firm przyjmuje i wdraża kontenery, ich bezpieczeństwo staje się najwyższym priorytetem biznesowym. Według niedawnej ankiety 94% respondentów doświadczyło incydentu związanego z bezpieczeństwem w swoich środowiskach kontenerowych. To tylko podkreśla, jak ważne jest uzyskanie praw do ochrony kontenerów w celu ochrony firmy i klientów.