Wirtualne niebezpieczeństwo

Rozwój technik wirtualizacji niesie za sobą wymierne korzyści, ale pojawiają się też nieznane dotąd zagrożenia, bo system operacyjny uruchomiony w wirtualnym środowisku jest od niego całkowicie zależny.

Rozwój technik wirtualizacji niesie za sobą wymierne korzyści, ale pojawiają się też nieznane dotąd zagrożenia, bo system operacyjny uruchomiony w wirtualnym środowisku jest od niego całkowicie zależny.

Jeszcze do niedawna specjaliści zakładali całkowitą separację systemów wewnątrz środowisk wirtualnych, co miało przekładać się na poprawę bezpieczeństwa. Niestety wraz z pojawieniem się złośliwego kodu przeznaczonego do implementacji w samych mechanizmach wirtualizacji założenie to okazało się złudne. Ochrona systemów tylko przez narzędzia wirtualizacji nie wystarczy, bowiem niektóre mechanizmy sieciowe przeznaczone dla klasycznych systemów w tym środowisku nie działają. Dodatkowo naruszenie bezpieczeństwa narzędzi wirtualizujących powoduje zagrożenie dla wszystkich maszyn uruchamianych wewnątrz systemu.

Dużo w jednym

Firma wykorzystująca wirtualizację w środowisku serwerowym z reguły posiada bardzo wiele zasobów zgrupowanych w jednym fizycznym komputerze. Wewnątrz jednej maszyny może pracować kilka systemów operacyjnych obsługujących bazę danych, serwer poczty elektronicznej, serwer aplikacyjny itd. Komasowanie wszystkich zasobów w jednym miejscu nie zawsze jest dobrym wyborem ze względu na niezawodność. Jeśli maszyna (lub kilka maszyn) posiada pojedyncze urządzenie, którego awaria powoduje unieruchomienie całego środowiska, niezawodność wszystkich systemów wirtualizowanych wewnątrz tego serwera jest całkowicie zależna od pracy pojedynczego urządzenia.

Posiadanie pojedynczego punktu awarii w środowisku wirtualizowanym jest bardzo poważnym niedopatrzeniem, gdy aplikacje tam hostowane obsługują krytyczne dla firmy zasoby. Jeśli nie użyto rozwiązań zapewniających wysoką dostępność, należy zadbać o posiadanie kompletu urządzeń rezerwowych oraz odpowiednie wyposażenie i procedury szybkiego odzyskiwania sprawności systemu po awarii. Nie uchroni to przed przestojem w razie awarii, ale zmniejszy czas ewentualnego przestoju. Gdy hostowane aplikacje mają niskie znaczenie i firma nie jest od nich całkowicie zależna, posiadanie rezerwowego urządzenia "na półce" w zupełności wystarczy. W przeciwnym razie wymaganesą rozwiązania zapewniające wysoką dostępność.

System pod lupą

W klasycznym rozwiązaniu, gdzie system operacyjny był instalowany na fizycznej maszynie, kontrola spójności systemu i aplikacji mogła być wykonana poprzez analizę składowanych w systemie dyskowym plików. Najczęściej odbywało się to tak, że administrator po zatrzymaniu systemu operacyjnego maszyny uruchamiał narzędzia z innego nośnika, uważanego za bezpieczny, (np. płyty CD-ROM) i za pomocą odpowiednich programów dokonywał sprawdzenia poprzez porównanie sum kontrolnych, takich jak MD5. Do tego celu powszechnie używano specjalnie przygotowane dystrybucje systemu Linux (np. SystemRescueCD). W przypadku środowisk wirtualnych także jest to możliwe. Zasób dyskowy maszyny wirtualnej jest często plikiem w systemie plików maszyny hostującej, zatem można taki plik skopiować, dołączyć jako drugie urządzenie dyskowe do innej maszyny wirtualnej i dokonać analizy tą drogą. Jest to znacznie prostsze i bardziej elastyczne niż skanowanie unieruchomionego systemu operacyjnego fizycznej maszyny za pomocą narzędzi, zaś czas przestoju jest krótszy.

Czy to na pewno ten serwer?

Maszynę wirtualną można bardzo łatwo przekopiować i uruchomić w innym środowisku - jest to jedna z zalet środowiska wirtualizacji. Ze względu na swoją konstrukcję serwery wirtualizujące realizują wirtualne interfejsy sieciowe mapowane na fizyczne urządzenia serwera hostującego. Skutkiem ubocznym jest niespotykana nigdzie indziej elastyczność konfiguracji takiego interfejsu. Może on mieć dowolny adres sprzętowy, zatem dzięki wirtualnym maszynom można obejść wiele restrykcji bazujących na adresach sprzętowych. Ale z tego powodu oprogramowanie realizujące kontrolę dostępu napotyka problemy w środowisku wirtualizowanym. To samo dotyczy narzędzi realizujących identyfikację serwera, bazując na jego infrastrukturze. O ile przy systemie operacyjnym zainstalowanym na fizycznym serwerze jest to stosunkowo proste, przy maszynach wirtualnych pojawiają się kłopoty.

Ze względu na bardzo dużą elastyczność konfiguracji maszyn wirtualnych nie można ufać ani zabezpieczeniom bazującym na adresach sprzętowych MAC, ani na detekcji infrastruktury.

Złota klatka

Gdy hostowaniu podlega kilka maszyn wirtualnych z takimi samymi systemami operacyjnymi, cały zestaw wszystkich maszyn jest podatny na eksploitowanie tych samych błędów. Wtedy, przy niedostatku zabezpieczeń samych systemów wirtualizowanych, robak sieciowy może bardzo prędko naruszyć bezpieczeństwo wszystkich maszyn wirtualnych. Jeśli wszystkie interfejsy sieciowe maszyn wirtualnych są w tej samej podsieci IP i nie mają restrykcji w samym systemie wirtualizującym (co zdarza się często), nawet blokada połączeń za pomocą restrykcji na przełącznikach sieciowych nie pomoże zbytnio, gdyż maszyny te będą się bezpośrednio łączyć przez interfejs sieciowy hosta. Przy rozwiązaniu klasycznym można całkowicie oddzielić krytyczne serwery od wszelkich pozostałych zasobów za pomocą zapór i sond IPS. Przy wirtualizacji wymaga to przypisania maszyn do konkretnych interfejsów hosta.

Dobrą separację maszyn wirtualnych można uzyskać np. za pomocą popularnego oprogramowania VMWare Server, przypisując interfejsy wirtualne do konkretnych fizycznych urządzeń. Gdy karty sieciowe serwera są dołączone do różnych podsieci, można wdrażać zabezpieczenia sieciowe bazujące na IP tak samo jak przy klasycznych maszynach. Całość działa sprawnie, o ile mechanizmy wbudowane w VMWare działają prawidłowo, czyli dopóki włamywacz nie zmodyfikuje VMWare. Po dokonaniu modyfikacji włamywacz może jednak zrealizować dowolne połączenie sieciowe w sposób niewidoczny dla hostowanego systemu. Dodatkowo sniffer uruchomiony przez włamywacza w środowisku maszyny hostującej i pracujący na jej fizycznych interfejsach będzie mógł przechwytywać cały ruch wszystkich hostowanych maszyn. W rozwiązaniu klasycznym z użyciem kilku maszyn i przełącznika sieciowego byłoby to znacznie trudniejsze do realizacji i łatwiejsze do wykrycia.

Wirtualne zaufanie

Serwery obsługujące różne usługi, niejednokrotnie pracujące pod kontrolą systemów operacyjnych o różnej konstrukcji, są zależne od jednego mechanizmu wirtualizacji. O ile przed dostępem z zewnątrz (nawet z sieci lokalnej) można zastosować odpowiednie zabezpieczenia, ochrona przed niepewnym środowiskiem wirtualizującym praktycznie nie istnieje. Serwer realizujący wirtualizację ze względów technologicznych ma dostęp do kompletu zasobów pamięci hostowanej maszyny wirtualnej, może przeczytać zawartość dysku tej maszyny i całkowicie kontrolować pracę wszystkich procesów w niej działających. Napisanie złośliwego kodu dedykowanego do zarażania serwerów wirtualizujących jest tylko kwestią czasu. Oczywiście najważniejsze serwery wirtualizacji posiadają mechanizmy obrony przed złośliwym kodem, ale ich skuteczność nie jest jeszcze najwyższa - są to technologie stosunkowo nowe.

Należy zatem koniecznie zadbać o spójność oprogramowania realizującego wirtualizację, o bezpieczeństwo hostującego systemu operacyjnego, wewnątrz którego pracuje serwer wirtualizacji, a także o stan bezpieczeństwa wszystkich hostowanych systemów operacyjnych i aplikacji.

Różnorodność nie pomoże

W przypadku klasycznych systemów realizowanych bez użycia wirtualizacji posiadanie heterogenicznej infrastruktury serwerów podwyższało poprzeczkę wiedzy dla włamywacza, bowiem musiał on forsować zabezpieczenia realizowane na kilku platformach. Gdy firma wykorzystywała systemy operacyjne o różnej konstrukcji (np. Windows, Linux, NetWare) spięte systemem detekcji intruzów, zwiększały się wymagania wobec wiedzy włamywacza. Przy rozwiązaniu klasycznym z każdym kolejnym poziomem zabezpieczeń wzrasta prawdopodobieństwo wykrycia intruza.

Przy użyciu wirtualizacji obraz diametralnie się zmienia - wszystkie zasoby są zorganizowane w jednym środowisku i całkowicie zależne od zabezpieczeń oprogramowania wirtualizującego. Zdobycie kontroli nad nim oznacza zdobycie kontroli nad wszystkimi maszynami hostowanymi wewnątrz niego, niezależnie od ich konstrukcji. Włamanie tą drogą jest całkowicie przezroczyste dla systemu operacyjnego. Można odczytać całą zawartość pamięci operacyjnej, wszystkie dane w taki sposób, że nie zostaje żaden ślad. Przy wirtualizacji wielu serwerów obsługujących ważne dane należy koniecznie wziąć ten fakt pod uwagę.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200