NAUKOWA I AKADEMICKA SIEĆ KOMPUTEROWA Bezpieczeństwo rozwiązań hostingowych Hosting wirtualny - studium przypadku Secure 2008 3 października 2008 Arkadiusz Kalicki, NASK
Agenda Zagrożenia Omówienie zabezpieczeń na poziomie systemu operacyjnego Wirtualizacja jako metoda ochrony Omówienie typów wirtualizacji Przedstawienie wybranego rozwiązania opartego o XEN Zarządzanie systemem Podsumowanie
Zagrożenia Naruszenie integralności pamięci/danych Przepełnienie bufora Walidacja wejścia SQL Injection Załączenie zewnętrznego kodu XSS Przekroczenie uprawnień Nabycie uprawnień innego użytkownika/klienta/administratora
Stosowane zabezpieczenia Środowisko chroot, jail, wirtualizacja Systemy MAC, RBAC, np. SELinux, Grsecurity Kernel hardening, ochrona stosu, np. PaX, Grsecurity Host based IDS, Network based IDS, IPS Firewalling IP, aplikacji np. mod_security Hardening aplikacji Hardening OS, np. Hardened Gentoo, OpenBSD
Do czego dążymy? Bezpieczeństwo usługi Podwyższone w stosunku do hostingu współdzielonego Dostępność usługi i łatwość zarządzania Lepsze niż typowego rozwiązania dedykowanego Spełnienie specyficznych wymagań klientów Wymagania sprzętowe Wyższe niż hosting współdzielony, niższe niż rozwiązanie dedykowane Oszczędność miejsca i energii W stosunku do rozwiązań dedykowanych
Dlaczego wirtualizacja? Pozwala na odseparowanie klientów od siebie, np. Kompromitacja jednej maszyny wirtualnej zmniejsza szansę kompromitacji innych Minimalny zestaw pakietów/aplikacji Zapewnia izolację i przydział zasobów, pamięci i czasu procesora, np. Pochłonięcie całej pamięci przez aplikację jednego klienta nie zakłóci pracy innych Ułatwia zarządzanie backupami Backupy tworzone są w postaci obrazu całego systemu
Dlaczego wirtualizacja? Zwiększa możliwości na odrębne konfiguracje aplikacji i serwisów Umożliwia włączanie dodatkowych zabezpieczeń, trudnych do wdrożenia w środowisku współdzielonym Ułatwia instalację nowych systemów Ma niestety minusy, poza utratą wydajności Odrębna sieciowość (strata adresów IP) Więcej systemów operacyjnych do zarządzania Więcej instancji aplikacji do zarządzania Mogą pojawić się ataki na wirtualizacje, na razie bardzo mało
Typy wirtualizacji, kontenery Wirtualizacja na poziomie systemu operacyjnego ( lepszy chroot ) Polega na rozdzieleniu przestrzeni użytkownika poszczególnych systemów Wszystkie systemy wykorzystują wspólne jądro, wspomagane wybrane dystrybucje Mały narzut na wirtualizację Mniejsza separacja pomiędzy systemami Przykłady: Solaris Zones Linux-VServer OpenVZ/Virtuozzo
Typy wirtualizacji, parawirtualizacja Oprogramowanie wirtualizacyjne (hipernadzorca) dostarcza API, z którego korzystają systemy gości Wymaga modyfikacji jądra systemu gościa Alternatywa dla architektury x86 trudnej do pełnego zwirtualizowania Lepsza izolacja zasobów niż kontenery ale mniejsza wydajność Przykłady: Xen Lguest User Mode Linux
Typy wirtualizacji, pełna wirtualizacja, emulacja Pełna wirtualizacja x86 wymaga wsparcia sprzętowego AMD-V, Intel-VT Wirtualizacja części wywołań potrzebnych do izolacji oprogramowania Przetwarzanie innych instrukcji bezpośrednio przez fizyczny sprzęt Przykłady VMWare XEN (z VT) Bochs VirtualBox
Hosting wirtualny, dlaczego XEN? Lepsza izolacja zasobów niż w przypadku kontenerów Wszystkie systemy pracują z własnym jądrem Możliwość dodatkowego zabezpieczenia systemu gościa, np. za pomocą SELinux Większa efektywność w porównaniu z pełną wirtualizacją x86 Łatwość instalacji, konfiguracji i zarządzania zasobami Pełna wirtualizacja, przy zastosowaniu procesorów Intel-VT lub AMD-V Licencja GPL
Hosting wirtualny, Ethernet
Hosting wirtualny, Ethernet Rozdzielenie serwerów wirtualnych poszczególnych klientów za pomocą VLAN-ów Możliwość stworzenia prywatnej sieci klienta, udostępnienie wybranych maszyn wirtualnych, np.: Serwer WWW dostępny ze świata Serwer bazy danych nie widoczny z zewnątrz Serwer testowy nie widoczny z zewnątrz Migracja pomiędzy serwerami fizycznymi Oddzielna sieć prywatna dla systemu macierzystego dom0, sieć zarządzająca
Hosting wirtualny, IP
Hosting wirtualny, IP Ochrona systemów za pomocą rozbudowanego firewalla Firewall warstwy aplikacji za pomocą modułu IPS Ochrona antywirusowa Wykrywanie i blokowanie znanych ataków na aplikacje webowe Analiza ruchu i zagrożeń Szyfrowany dostęp do zasobów serwera wirtualnego lub sieci prywatnej przez VPN FTP, MySQL, PostgreSQL
Hosting wirtualny, storage
Hosting wirtualny, storage Zasoby dyskowe dostępne przez sieć SAN Redundantne połączenie FC z macierzą (multipath) Dobre zabezpieczenie na wypadek awarii dysków lokalnych Migracja pomiędzy maszynami fizycznymi Szybkie backupy w postaci snapshot-ów wolumenów na macierzy Szybkie odtworzenie systemu z backupu w razie potrzeby Większa wydajność
Zarządzanie systemami wirtualnymi Tworzenie systemów wirtualnych (domu) na podstawie szablonów Monitorowanie wykorzystania zasobów Przydział zasobów Migracje systemów w locie Scentralizowana konfiguracja Przykłady systemów: Enomalism ConVirt Virt-manager (RedHat)
Zarządzanie wieloma systemami operacyjnymi Scentralizowana konfiguracja systemów Centralny mechanizm aktualizacji pakietów Centralny serwer logów Przykłady systemów: Puppet, Cfengine, Bcfg2 Źródło: http://reductivelabs.com/projects/puppet/
Podsumowanie Im większy stopień izolacji zasobów systemów wirtualnych tym mniejsze wsparcie dla pożyczania zasobów wspólnych, np. pamięci RAM Kosztem większego bezpieczeństwa mniejszy stopień upakowania na jednej maszynie Przedstawiony model usługi jest odpowiedni dla klientów z podwyższonymi wymaganiami bezpieczeństwa w stosunku do hostingu współdzielonego