Piszki Lab

Analiza przypadku w języku przodków…

Operacje kryptograficzne w vSphere czyli o co chodzi z tym KMS, vTPM, VBS i innymi.

| 0 comments

Całkiem niedawno pisałem o wsparciu dla TPM 2.0 w vSphere 6.7, czemu warto użyć tej technologii i jak ją skonfigurować. Dzisiaj chciałbym pociągnąć temat dalej, zajmiemy się bezpieczeństwem maszyn wirtualnych (VM). Firma VMware bardzo intensywnie rozwija tematykę bezpieczeństwa VM poprzez wprowadzenie wsparcia dla operacji szyfrowania maszyn, wsparcia dla wirtualnego TPM (vTPM) oraz wsparcia dla technologii Microsoft Virtualization Based Security (VBS). Jest to bardzo ciekawy kawałek wiedzy który postaram się przybliżyć możliwie szczegółowo.

vsphere-encryption

Zaczniemy od Key Management Serwer (KMS), w terminologii VMware KMS to pojedynczy serwer, lub klaster serwerów przechowujących klucze bezpieczeństwa służące do operacji kryptograficznych. KMS musi wspierać protokół KMIP w wersji 1.1 lub wyżej. vCenter ufa całkowicie KMS i przechowuje w nim wszystkie klucze, dlatego dostępność tego rozwiązania jest kluczowa (bez KMS zaszyfrowana maszyna nie uruchomi się). Aktualnie operacje szyfrowania możemy prowadzić wielopoziomowo, możemy zaszyfrować pliki konfiguracyjne VM, dyski VM lub cały vsanDatastore.

kms1

Aktualnie dostępnych jest na rynku kilkanaście certyfikowanych przez VMware rozwiązań KMS, na potrzeby tego artykułu posłużymy się otwartą implementacją PyKMIP. Jest to napisany w Pythonie mały serwer który jest całkowicie zgodny z protokołem KMIP i przez to vCenter bardzo dobrze z nim współpracuje. Od wersji 0.9.1 wspierane jest trwałe przechowywanie kluczy w lokalnej bazie danych co umożliwia prowadzenie większych testów. Można go zainstalować w dowolnym Linux ale można też ściągnąć OVA przygotowane przez kolegę Grega Wojcieszczuka. Samo podłączenie odbywa się na poziomie vCenter w sekcji Configure –> Key Management Server:

kms8

Podajemy nazwę klastra, serwera i adres IP z portem, następnie musimy zestawić dwustronne zaufanie pomiędzy vCenter a KMS. W pierwszym kroku wybieramy “vCenter Certificate” (i ładujemy go do KMS) a w drugim “KMS certificate and private key” i ładujemy go do vCenter.

kms9

Dzięki temu oba systemy będą ufały sobie nawzajem.

kms5

Po poprawnym zestawieniu zaufanego połączenia do KMS w vCenter zostaną odblokowane wszystkie funkcje związane z szyfrowaniem.  Zacznę od vSAN, włączenie szyfrowania spowoduje duży ruch danych, ponieważ każdy dysk zostanie ponownie sformatowany i zaszyfrowany. VMware zapewnia, że użycie szyfrowania nie wpływa znacząco na obciążenia, są używane sprzętowe układy do operacji szyfrowania i deszyfrowania. Zależy to jednak od ruchu jaki generujemy na vSAN.

kms10

Aby zaszyfrować VM całkowicie (dyski z danymi), musimy się już posłużyć odpowiednią polityką dyskową:

kms11

Teraz przejdziemy do vTPM, od czasu premiery minęło już trochę czasu ale warto przypomnieć ten temat. vTPM w wersji 2.0 spełnia dokładnie te same funkcje jak jego sprzętowy odpowiednik, i co ciekawe, fizycznie nie łączy się z układem sprzętowym. Dodanie vTPM do VM jest bardzo proste, niesie ze sobą jednak kilka warunków jakie musimy spełnić.

kms6

Warunkiem podstawowym jest włączenie “VM Encryption”, czyli defacto podłączenie się pod KSM. Dodanie vTPM do VM powoduje automatyczne zaszyfrowanie wszystkich plików konfiguracyjnych tej maszyny (korzystamy z kluczy w KSM). Klucze wykorzystywane na potrzeby vTPM są generowane przez VMware Certificate Authority (VMCA) i przechowywane w formie zaszyfrowanej w pliku nvram w katalogu domowym VM. Jest klika zalet takiego podejścia, możemy wykonać vMotion włączonej VM która używa vTPM (!), możemy użyć nowej roli “No Cryptography Administrator”. Taki człowiek nie ma dostępu do konsoli VM i nie może jej wyeksportować na zewnątrz środowiska, jednocześnie zachowując pełnię innych praw administracyjnych. A tak to wygląda od środka VM:

kms12

I tutaj przejdziemy do omówienia VBS czyli Virtualization Based Security, jest to technologia firmy Microsoft która pojawiła się w Windows 10 i 2016. Służy do wygenerowania na poziomie VM, wspartego sprzętowo lub programowo, bezpiecznego środowiska zarządzanego przez hyperwizor. To środowisko wspiera coś co nazwane zostało Credentials Guard, dane uwierzytelniania użytkownika są przechowywane w bezpiecznym kontenerze. I tu wchodzi TPM 2.0, bez tego układu dane te nie są odpowiednio zabezpieczone i mogą być ukradzione.

kms14

Dodanie vTPM do VM powoduje, że zaszyfrowane uprawnienia są przechowywane poza pamięcią VM (w wirtualnym kontenerze), dzięki temu nie są podatne na atak “Pass the Hash”, jest to znany exploit który potrafi wykraść loginy i hasła. Włączenie VBS odbywa się w momencie kreowania nowej maszyny, wymusza też zastosowanie kilku rozwiązań. Taka VM będzie miała włączony UEFI zamiast Bios i sprzętowo wspartą wirtualizację (IOMMU):

kms15

Dodatkowo maszyna jest wyraźnie oznaczona informacją: VBS true

ksm16

A jak to wygląda od strony systemu operacyjnego? Samo dodanie TPM nic nie zmienia, wyraźnie widać to w System Information (msinfo32):

kms16

Musimy uruchomić konsolę GPO i wprost skonfigurować VBS.

kms17

Po restarcie maszyny możemy sprawdzić, że VBS funkcjonuje poprawnie. Powyższa konfiguracja jest dokładnie taka sama dla systemu Windows 10 jak i 2016 i 2019.

ksm18

Co ciekawe, w przypadku Windows Server włączenie VBS nie ma nic wspólnego z rolą Hyper-V (w Windows 10 musimy włączyć rolę Hyper-V). I to w zasadzie wszystko, przejdźmy zatem do podsumowania. Czy technologia kryptograficzna w vSphere będzie przydatna? Oczywiście 99% VM nie musi mieć nic wspólnego z szyfrowaniem, ale wszyscy możemy sobie wyobrazić scenariusz w którym będziemy mieli kontener zawierający kilka lub kilkanaście VM funkcjonujących pod najwyższym rygorem bezpieczeństwa. Wszędzie tam, gdzie dane finansowe, wizerunkowe lub każde inne oznaczone jako tajne lub krytyczne, nie mogą zostać utracone lub skompromitowane, technologia ta nie tylko będzie przydatna ale i kluczowa.

Oceń ten artykuł:
[Total: 0 Average: 0]

Dodaj komentarz

Required fields are marked *.