Bezpieczeństwo VMware ESXi cz. 2 – rekomendacje

Jakiś czas temu podjęłam się tematu bezpieczeństwa hypervisora VMware ESXi i zgodnie z obietnicą, powracam z kolejną dawką wiedzy. W ramach przypomnienia wspomnę, że w pierwszej części artykułu skupialiśmy się na konfiguracjach związanych z instalacją hosta, w oparciu o Benchamark CIS dla VMware ESXi 7.0. Dzisiaj przyjrzymy się bliżej m.in. funkcjom zbierania logów, komunikacji z ESXi oraz zarządzaniu dostępem do ESXi.

Rekomendacje związane z komunikacją z ESXi

1. Synchronizacja czasu NTP

Synchronizacja Network Time Protocol (NTP) powinna być poprawnie skonfigurowana i włączona na każdym hoście VMware ESXi, aby zapewnić dokładny czas dla logów zdarzeń systemowych. Źródła czasu używane przez hosty ESXi powinny być zsynchronizowane z ustalonym standardem czasu, takim jak uniwersalny czas koordynowany (UTC). Powinny istnieć co najmniej dwa źródła NTP i powinny się one synchronizować, gdy tylko jest to możliwe. Dzięki temu łatwiej jest śledzić i korelować działania podczas przeglądania logów.

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 pytaAby sprawdzić, czy synchronizacja NTP jest włączona i prawidłowo skonfigurowana z poziomu panelu administratora:

Host->Manage->System->Time & date

PowerShell:

2. Konfiguracja dvfilter AP

API sieciowe dvfilter jest używane przez niektóre produkty (np. VMSafe). Jeśli nie jest ono używane, nie powinno być skonfigurowane do wysyłania informacji sieciowych do maszyny wirtualnej. Jeśli API sieciowe dvfilter zostanie włączone będzie można podłączyć do niego maszynę wirtualną, tym samym potencjalnie zapewniając dostęp do sieci innych maszyn wirtualnych na hoście.

Domyślnie opcja ta nie jest skonfigurowana na ESXi (parametr Net.DVFilterBindIpAddress ma pustą wartość).

Host->Manage->System->Advanced settings-> Net.DVFilterBindIpAddress:

PowerShell:

Zalecenia związane z funkcjami zbierania logów w ESXi

Konfiguracja scentralizowanej lokalizacji do zbierania zrzutów hostów ESXi

Usługa VMware vSphere Network Dump Collector umożliwia zbieranie informacji diagnostycznych z hosta, na którym wystąpił błąd. Usługa ta zapewnia scentralizowaną lokalizację do zbierania zrzutów rdzeni hostów ESXi. Kiedy host ulega awarii, analiza powstałego zrzutu rdzenia jest niezbędna, aby móc zidentyfikować przyczynę awarii i określić sposób jej rozwiązania. Zainstalowanie scentralizowanego kolektora zrzutów pomaga zapewnić, że pliki są pomyślnie zapisywane i udostępniane w przypadku, gdyby host ESXi uległ awarii.

Uruchomienie następującego polecenia pozwala określić, czy host jest skonfigurowany zgodnie z zaleceniami:

Domyślnie usługa jest wyłączona, nie posiada żadnych konfiguracji:

Zdalne logowanie do hostów ESXi

Zdalne logowanie do centralnego hosta logów zapewnia bezpieczny, scentralizowany magazyn logów ESXi. Można łatwiej monitorować wszystkie hosty za pomocą jednego narzędzia. Można również przeprowadzić zbiorczą analizę i wyszukiwanie w celu znalezienia np. skoordynowanych ataków na wiele hostów. Logowanie do bezpiecznego, scentralizowanego serwera logów pomaga zapobiegać manipulowaniu logami i zapewnia długoterminowy zapis.

Sprawdzenie ustawień zdalnego logowania w panelu administratora:

Host->Manage->System->Advanced settings-> Syslog.global.logHost

PowerShell:

Zarządzanie dostępem do ESXi

1. Zapewnienie złożoności haseł

ESXi używa wtyczki pam_passwdqc.so do ustawiania siły i złożoności hasła. Opcje obejmują ustawienie minimalnej długości hasła, określonych zestawów znaków oraz ograniczenie liczby kolejnych nieudanych prób logowania. Ustawienia te powinny być zgodne z polityką haseł obowiązującą w organizacji. Wszystkie hasła dla hostów ESXi powinny być trudne do odgadnięcia, aby zmniejszyć ryzyko nieautoryzowanego dostępu.

Uwaga! ESXi nie nakłada żadnych ograniczeń na hasło root. Zasady dotyczące siły i złożoności hasła dotyczą tylko użytkowników niebędących rootami.

 

Aby edytować lub potwierdzić, że wymagania dotyczące złożoności hasła są ustawione, należy zalogować się jako użytkownik z uprawnieniami administratora, otworzyć plik /etc/pam.d/passwd. i zlokalizować następujący wiersz:

password requisite /lib/security/$ISA/pam_passwdqc.so retry=N min=N0,N1,N2,N3,N4

Według zaleceń, wszystkie hasła powinny mieć długość 14 lub więcej znaków i składać się z co najmniej jednego znaku z czterech różnych zestawów znaków. Dodatkowo, dozwolonych powinno być maksymalnie 5 kolejnych nieudanych prób logowania.

Wartości powinny być zatem następujące:

  • N = mniejsze lub równe 5
  • N0 = disabled
  • N1 = disabled
  • N2 = disabled
  • N3 = disabled
  • N4 = 14 lub więcej

Wartości domyślne:

2. Maksymalna liczba nieudanych prób

Uwierzytelnianie powinno być skonfigurowane w taki sposób, aby dla każdego konta istniała maksymalna liczba kolejnych nieudanych prób logowania, po których konto zostanie zablokowane.  Wielokrotne nieudane próby logowania na to samo konto mogą oznaczać próbę złamania hasła.

Maksymalna liczba nieudanych logowań powinna wynosić 5.

Aby edytować lub sprawdzić w panelu administratora, czy maksymalna liczba nieudanych prób logowania jest ustawiona prawidłowo: Host->Manage->System->Advanced settings-> Security.AccountLockFailures

PowerShell:

Zalecenia związane z konsolami ESXi

1. Zakończenie sesji po 5 minutach

Jeśli użytkownik zapomni wylogować się z sesji powłoki ESXi lub SSH, bezczynna sesja będzie istnieć w nieskończoność, zwiększając ryzyko na uzyskanie nieautoryzowanego dostępu do hosta, chyba że ustawiony jest limit czasu. ESXiShellInteractiveTimeOut pozwala na automatyczne zakończenie bezczynnych sesji shell ESXi i SSH. Dozwolony czas bezczynności nie powinien być dłuższy niż 5 minut (300 sekund).

Uwaga: Wartość 0 wyłącza ESXiShellInteractiveTimeOut – jest to ustawienie domyślne.

Aby sprawdzić lub edytować limit czasu z poziomu panelu administratora: Host->Manage->System->Advanced settings-> ESXiShellInteractiveTimeOut:

PowerShell:

2. Limit czasu usług powłoki systemowej

Kiedy usługi powłoki systemowej ESXi lub SSH są włączone na hoście, będą działać bezterminowo. Aby tego uniknąć, należy ustawić ESXiShellTimeOut, który definiuje okno czasowe, po którym powłoka ESXi i usługi SSH zostaną automatycznie zakończone. Dobrą praktyką jest ustawienie ESXiShellInteractiveTimeOut razem z ESXiShellTimeOut. Zmniejsza to ryzyko, że nieaktywna powłoka ESXi lub usługa SSH zostanie niewłaściwie wykorzystana przez nieautoryzowaną stronę do przejęcia kontroli nad hostem.

Uwaga: Wartość 0 wyłącza ESXiShellTimeOut – jest to ustawienie domyślne.

Edycja limitu czasu za pomocą panelu administratora: Host->Manage->System->Advanced settings-> ESXiShellTimeOut:

PowerShell:

Podsumowanie

Przedstawione praktyki bezpieczeństwa to tylko jedne z wielu rekomendacji, znajdujących się w obszernym przewodniku CIS. Pełny Benchmark oferuje 8 rozdziałów wytycznych tworzenia bezpiecznej konfiguracji VMware ESXi 7.0.

Stanowi dobry punkt odniesienia dla małych i dużych organizacji, w tym systemów wykorzystujących wrażliwe dane, gdzie wymagany jest najwyższy poziom bezpieczeństwa.