Bezpieczeństwo VMware ESXi cz. 1

Justyna Jamrozy
26. listopada 2021
Reading time: 4 min
Bezpieczeństwo VMware ESXi cz. 1

Na pewno nie raz zastanawiałeś się, czy Twoje wirtualne środowisko jest bezpieczne. Korzystasz z niego na co dzień, przechowujesz w nim różne dane i informacje, świadczysz za jego pomocą usługi klientom, zapewniasz sobie i innym użytkownikom niezbędne do pracy zasoby. Co by było, gdyby pewnego dnia okazało się, że wszystko, co stworzyłeś przepadło? Pot i łzy wylane przy wdrażaniu, konfigurowaniu i utrzymaniu środowiska okazują się daremne. Zainwestowałeś w pierwszej klasy hypervisor VMware ESXi (bo przecież płakać lepiej w Ferrari), jak mogło do tego dojść?!

Na szczęście to tylko gdybanie, jednak chwila nieuwagi i czarny sen może okazać się faktem. Dlaczego? W wielu przypadkach zabezpieczenie środowiska wirtualnego działającego pod kontrolą VMware opiera się jedynie na zaakceptowaniu domyślnych ustawień i polityk podczas instalacji. Mimo, że ustawienia te zapewniają częściowe bezpieczeństwo, to istnieje wiele sposobów na jego ulepszenie. Dzięki pewnym funkcjom możesz chronić swoją infrastrukturę przed zagrożeniami cybernetycznymi, w tym zarówno złośliwymi atakami, jak i przed samym sobą – w końcu wszyscy popełniamy czasem błędy  

https://evoila.com/blog/sterowanie-pogoda-czyli-jak-zarzadzac-chmurami-vmware/

Komponenty środowiska vSphere są standardowo zabezpieczone przez kilka funkcji, takich jak uwierzytelnianie, autoryzacja, czy firewall na każdym hoście ESXi. Środki bezpieczeństwa można zastosować do różnych obiektów w hierarchii obiektów vCenter, a domyślną konfigurację modyfikować na wiele sposobów. Powstają zatem pytania:

  • Jak bezpiecznie wdrażać i utrzymywać zwirtualizowane systemy?
  • Czy metody te są uniwersalne dla każdego środowiska?
  • I najważniejsze – skąd czerpać wiedzę oraz najlepsze praktyki bezpieczeństwa?

Bezpieczeństwo konfiguracji według branżowych standardów

Poza zaleceniami i wskazówkami producenta, warto zwrócić uwagę na materiały udostępniane przez CIS (Center for Internet Security). Benchmarki CIS to najlepsze praktyki bezpiecznej konfiguracji systemu docelowego. Są opracowywane w unikalnym procesie, w którym uczestniczą specjaliści ds. bezpieczeństwa cybernetycznego i eksperci tematyczni z całego świata. Wzorce CIS to oparte na konsensusie i najlepszych praktykach przewodniki konfiguracji zabezpieczeń, akceptowane przez rządy, świat biznesu, przemysłu i środowiska akademickie.

Jeden z dokumentów stanowi wytyczne dotyczące tworzenia bezpiecznej konfiguracji dla VMware ESXi 7.0. Jest przeznaczony dla administratorów systemów i aplikacji, specjalistów ds. bezpieczeństwa, audytorów, pracowników działów pomocy technicznej oraz pracowników zajmujących się wdrażaniem platform. Ułatwia planowanie, tworzenie, wdrażanie, ocenę i zabezpieczanie rozwiązań wykorzystujących rozwiązania VMware.

Benchmark dla VMware ESXi 7.0 definiuje dwa profile konfiguracyjne:

  1. Konfiguracja poziomu 1 (L1) – ma na celu być praktyczną bazą wyjściową dla większości organizacji, zapewniać wyraźne korzyści w zakresie bezpieczeństwa oraz nie ograniczać użyteczności technologii ponad akceptowalne środki.
  2. Konfiguracja poziomu 2 (L2) – środowisko o wysokim poziomie bezpieczeństwa/wrażliwych danych. Jest rozszerzeniem konfiguracji poziomu pierwszego. Elementy w tym profilu są przeznaczone dla środowisk lub przypadków użycia, w których bezpieczeństwo jest bardziej krytyczne niż łatwość zarządzania i użyteczność. Ustawienia mogą negatywnie wpływać na użyteczność lub wydajność technologii ograniczają możliwość zdalnego zarządzania/dostępu.

W artykule skupimy się głównie na wybranych konfiguracjach poziomu pierwszego, związanych z instalacją. Sprawdzimy rekomendacje CIS i porównamy je z domyślnymi ustawieniami hypervizora ESXi 7.0.

Zalecenia dotyczące podstawowej instalacji ESXi

Weryfikacja profilu VIB

VIB (vSphere Installation Bundle) to zbiór plików, które są spakowane w archiwum. VIB zawiera plik sygnatury, który jest używany do weryfikacji poziomu zaufania. Profil obrazu ESXi obsługuje cztery poziomy akceptacji VIB:

  1. VMware Certified – VIB utworzone, przetestowane i podpisane przez VMware.
  2. VMware Accepted – pliki VIB utworzone przez partnera VMware, ale przetestowane i podpisane przez VMware
  3. Partner Supported – pliki VIB utworzone, przetestowane i podpisane przez certyfikowanego partnera VMware.
  4. Community Supported – pliki VIB, które nie zostały przetestowane przez VMware lub partnera VMware.

Profil obrazu ESXi powinien zezwalać tylko na podpisane VIB-y, ponieważ niepodpisane VIB-y reprezentują niesprawdzony kod zainstalowany na hoście ESXi. Ponadto użycie niepodpisanych VIB-ów spowoduje, że nie uda się skonfigurować Secure Boot. Pliki VIB tworzone przez społeczność nie mają podpisów cyfrowych. Aby chronić bezpieczeństwo i integralność hostów ESXi, nie należy zezwalać na instalowanie na nich niepodpisanych (CommunitySupported) bibliotek VIB. Niepodpisane (Community Supported) pliki VIB nie będą mogły być wykorzystywane na hoście.

https://evoila.com/pl/blog/podstawowe-funkcjonalnosci-narzedzia-postman-na-przykladzie-vcloud-director/

Jednym ze sposobów sprawdzenia poziomu akceptacji profilu obrazu jest połączenie się do hosta za pomocą vCLI i wykonanie polecenia:

 class=

Wartość domyślna:

 class=

Edycja ustawień w panelu administracyjnym ESXi: Host->Manage->Security & users->Acceptance level

 class=

Weryfikacja poziomu akceptacji przez vCLI dla każdego VIB:

 class=

Przykładowy wynik:

 class=

Współdzielenie pamięci pomiędzy maszynami wirtualnymi

Wiele obciążeń w ESXi stwarza możliwości współdzielenia pamięci pomiędzy maszynami wirtualnymi (jak również w obrębie jednej maszyny wirtualnej). Współdzielenie pamięci w ESXi działa w tle i w miarę upływu czasu wyszukuje możliwość współdzielenia, a ilość zaoszczędzonej pamięci zmienia się w czasie. Domyślnie, ze względów bezpieczeństwa, współdzielenie stron nie odbywa się pomiędzy maszynami wirtualnymi, a jedynie wewnątrz maszyny wirtualnej.

Myślę, że w tym momencie warto się zatrzymać i powiedzieć nieco więcej na temat Transparent Page Sharing (TPS).

Zasadniczo, transparentne współdzielenie stron pozwala wielu maszynom wirtualnym na współdzielenie stron, gdy strony te są identyczne. Rozwiązanie to jednak budziło kontrowersje i problemy związane z kwestią bezpieczeństwa. Aby rozwiać wszelkie wątpliwości, przeprowadzono badania, w których wykorzystano technologię Transparent Page Sharing do uzyskania nieautoryzowanego dostępu do danych w pewnych ściśle kontrolowanych warunkach.

Okazało się, że m.in. poprzez ponowne załadowania pamięci cache możliwe jest zmierzenie taktowania pamięci w celu próby określenia klucza szyfrowania AES, używanego przez inną maszynę wirtualną, działającą na tym samym procesorze fizycznym serwera hosta, jeśli włączona jest funkcja Transparent Page Sharing między dwiema maszynami wirtualnymi. Wprawdzie technika ta działa tylko w wysoce kontrolowanym systemie, skonfigurowanym w niestandardowy sposób, jednak by zachować wszelkie środki ostrożności, wprowadzono koncepcję „solenia”, czyli tzw. salting.

Dzięki ustawieniom saltingu, maszyny wirtualne mogą współdzielić strony tylko wtedy, gdy wartość salt i zawartość stron są identyczne (Wcześniej wiele maszyn wirtualnych mogło współdzielić strony, jeśli ich zawartość była taka sama).

Opcja konfiguracyjna hosta Mem.ShareForceSalting może być skonfigurowana tak, aby włączyć lub wyłączyć tzw. salting, który pozwala na bardziej szczegółowe zarządzanie maszynami wirtualnymi uczestniczącymi w przezroczystym współdzieleniu stron.

Poniższa tabela pokazuje, w jaki sposób różne ustawienia TPS wpływają na działanie maszyn wirtualnych:

 class=

Domyślnie, salting jest włączony (Mem.ShareForceSalting=2) i każda maszyna wirtualna ma inną wartość salt. Oznacza to, że współdzielenie stron nie zachodzi pomiędzy maszynami wirtualnymi (interVM TPS) i ma miejsce tylko wewnątrz maszyny wirtualnej (intra VM). Intra-VM oznacza, że TPS będzie de-duplikował identyczne strony pamięci w obrębie maszyny wirtualnej, ale nie będzie udostępniał tych stron innym maszynom wirtualnym.

Ustawienia można sprawdzać i edytować w panelu administracyjnym: Host->Manage->System->Advanced settings->Mem.ShareForceSalting

 class=

Podgląd w PowerShell:

 class=
 class=
 class=

Podsumowanie

Na dziś to tyle, ale za niedługo wrócimy do tematu bezpieczeństwa ESXi i omówimy kolejne elementy konfiguracji. Być może już teraz pojawiają się w Twojej głowie pytania na temat tego, jak zabezpieczyć poszczególne elementy swojego środowiska lub jak ulepszyć swoje zabezpieczenia. Jeśli tak, zapraszam do kontaktu