kdpv — Reuters
Jeśli wynajmujesz serwer, nie masz pełnej kontroli nad nim. To oznacza, że w każdej chwili do hosta mogą przyjść wyspecjalizowani ludzie i poprosić o udostępnienie wszelkich twoich danych. A host je przekaże, jeśli żądanie będzie sformułowane zgodnie z prawem.
Absolutnie nie chcesz, aby logi twojego serwera WWW lub dane użytkowników trafiły w niepowołane ręce. Idealnej ochrony zbudować się nie da. Ochrona przed hostem, który posiada hypervisor i udostępnia ci maszynę wirtualną, jest niemal niemożliwa. Ale być może uda się nieco zmniejszyć ryzyko. Szyfrowanie wynajmowanych maszyn nie jest tak bezużyteczne, jak się wydaje na pierwszy rzut oka. Przyjrzyjmy się również zagrożeniom związanym z wydobywaniem danych z fizycznych serwerów.
Model zagrożeń
Zazwyczaj host będzie się starał maksymalnie chronić interesy klienta w zakresie dozwolonym przez prawo. Jeśli w piśmie od organów publicznych poproszono tylko o logi dostępu, host nie powinien przekazywać dumpów wszystkich twoich maszyn wirtualnych z bazami danych. Przynajmniej nie powinien. Jeśli poproszą o wszystkie dane, host skopiuje wirtualne dyski ze wszystkimi plikami, a ty się o tym nie dowiesz.
Bez względu na to, jak potoczą się wydarzenia, twoim głównym zadaniem jest uczynić atak zbyt skomplikowanym i kosztownym. Zazwyczaj istnieją trzy podstawowe warianty zagrożenia.
Oficjalny
Najczęściej do oficjalnego biura hosta wysyłane jest papierowe pismo z żądaniem udostępnienia potrzebnych danych zgodnie z odpowiednim postanowieniem. Jeśli wszystko jest sformułowane poprawnie, host udostępnia potrzebne logi dostępu oraz inne dane organom publicznym. Zwykle po prostu proszą o przesłanie potrzebnych informacji.
Rzadko, jeśli to naprawdę konieczne, przedstawiciele organów ścigania osobiście przyjeżdżają do centrum danych. Na przykład, gdy posiadasz własny serwer dedykowany i dane można zabrać tylko fizycznie stamtąd.
We wszystkich krajach, aby uzyskać dostęp do prywatnych terenów, przeprowadzić przeszukania i inne działania, wymagane jest posiadanie dowodów, że dane mogą zawierać ważne informacje dla śledztwa w sprawie przestępstwa. Ponadto, konieczny jest ważny nakaz przeszukania zgodny z wszystkimi regulacjami. Mogą występować różne niuanse związane z lokalnym prawodawstwem. Najważniejsze, co trzeba zrozumieć, to że w przypadku prawidłowej oficjalnej drogi przedstawiciele centrum danych nie wpuszczą nikogo dalej niż do bramy.
Co więcej, w większości krajów nie można po prostu zabrać działającego sprzętu. Na przykład w Rosji do końca 2018 roku, zgodnie z artykułem 183 Kodeksu postępowania karnego Federacji Rosyjskiej, część 3.1, gwarantowano, że przy przeprowadzaniu zajęcia, zarekwirowanie nośników informacji elektronicznej odbywa się w obecności specjalisty. Na wniosek prawowitego właściciela zajmowanych nośników informacji lub posiadacza informacji na nich zawartych, specjalista biorący udział w zajęciu, w obecności świadków, wykonuje kopiowanie informacji na inne nośniki.
Niestety, ten punkt z artykułu został później usunięty.
Tajny i nieoficjalny
To już teren działań specjalnie przeszkolonych osób z NSA, FBI, MI5 i innych agencji o skrócie trzech liter. Najczęściej prawodawstwo krajów przewiduje bardzo szerokie uprawnienia dla takich struktur. Co więcej, prawie zawsze istnieje zakaz ustawowy wszelkiego bezpośredniego i pośredniego ujawniania samego faktu współpracy z tego typu organami ścigania. W Rosji istnieją podobne .
W przypadku podobnego zagrożenia dla twoich danych, prawdopodobnie zostaną one wykradzione. Oprócz prostego zajęcia mogą być wykorzystane wszystkie nieoficjalne metody, backdoory, luki bezpieczeństwa, ekstrakcja danych z pamięci operacyjnej twojej maszyny wirtualnej i inne przyjemności. Host będzie zobowiązany do maksymalnej pomocy specjalistom z organów ścigania.
Niedbały pracownik
Nie wszyscy ludzie są równi. Niektórzy z administratorów centrum danych mogą postanowić dodatkowo zarobić, sprzedając twoje dane. To, co się wydarzy dalej, zależy od jego uprawnień i dostępu. Najbardziej nieprzyjemne jest to, że administrator z dostępem do konsoli wirtualizacji ma pełną kontrolę nad twoimi maszynami. Zawsze można zrobić migawkę wraz z całą zawartością pamięci RAM i później powoli ją przeanalizować.
VDS
Więc masz maszynę wirtualną, którą przydzielił ci hoster. Jak możesz zorganizować szyfrowanie, aby się zabezpieczyć? W rzeczywistości, praktycznie nie ma na to sposobu. Co więcej, nawet obcy dedykowany serwer może okazać się w końcu maszyną wirtualną, do której podłączone są odpowiednie urządzenia.
Jeśli celem zdalnego systemu jest nie tylko przechowywanie danych, ale także wykonywanie obliczeń, to jedyną opcją pracy z nieufną maszyną będzie wdrożenie . System będzie jednak przeprowadzać obliczenia bez możliwości zrozumienia, co dokładnie robi. Niestety, koszty realizacji takiego szyfrowania są na tyle wysokie, że praktyczne zastosowanie ogranicza się aktualnie do bardzo wąskich zadań.
Dodatkowo, w momencie uruchomienia maszyny wirtualnej i wykonywania jakichkolwiek działań, wszystkie zaszyfrowane wolumeny są w stanie dostępnym, w przeciwnym razie system operacyjny po prostu nie będzie mógł z nimi pracować. To oznacza, że mając dostęp do konsoli wirtualizacji, zawsze możesz zrobić migawkę działającej maszyny i wyciągnąć wszystkie klucze z pamięci RAM.
Wielu dostawców próbowało zorganizować sprzętowe szyfrowanie RAM, aby nawet hoster nie miał dostępu do tych danych. Na przykład technologia Intel Software Guard Extensions, która organizuje obszary w wirtualnej przestrzeni adresowej, chronione przed odczytem i zapisem zewnętrznym przez inne procesy, w tym jądro systemu operacyjnego. Niestety, nie możesz w pełni zaufać tym technologiom, ponieważ będziesz ograniczony swoją wirtualną maszyną. Ponadto istnieją już gotowe przykłady na tę technologię. A mimo to, szyfrowanie maszyn wirtualnych nie jest tak bezsensowne, jak może się wydawać.
Szyfrujemy dane na VDS
Na początek zastrzegam, że wszystko, co zrobimy poniżej, nie zapewnia pełnej ochrony. Hypervisor pozwoli na zrobienie potrzebnych kopii bez zatrzymywania usługi i niewidocznie dla Ciebie.
- Jeśli dostawca hostingu przekaże „zimny” obraz Twojej maszyny wirtualnej na żądanie, będziesz względnie bezpieczny. To najczęściej spotykany scenariusz.
- Jeśli dostawca hostingu da pełny zrzut działającej maszyny, sytuacja jest dość zła. Wszystkie dane będą zamontowane w systemie w otwartym formacie. Poza tym pojawi się możliwość przeszukania RAM w poszukiwaniu kluczy prywatnych i podobnych danych.
Domyślnie, jeśli uruchomiłeś system operacyjny z czystego obrazu, dostawca hostingu nie ma dostępu do roota. Zawsze można zamontować nośnik z obrazem ratunkowym i zmienić hasło roota, wykonując chroot w środowisku maszyny wirtualnej. Jednak wymaga to ponownego uruchomienia, co będzie widoczne. Poza tym wszystkie zamontowane zaszyfrowane partycje będą zamknięte.
Jednak jeśli uruchomienie maszyny wirtualnej odbywa się nie z czystego obrazu, a z wcześniej przygotowanego, dostawca hostingu często może dodać uprawnione konto, aby pomóc w awaryjnej sytuacji klienta. Na przykład, aby zmienić zapomniane hasło roota.
Nawet w przypadku pełnego zrzutu nie jest tak źle. Atakujący nie uzyska zaszyfrowanych plików, jeśli zamontowałeś je z zdalnego systemu plików innej maszyny. Tak, teoretycznie można przeanalizować zrzut pamięci operacyjnej i wydobyć klucze szyfrowania. Jednak w praktyce jest to bardzo skomplikowane i mało prawdopodobne, że proces posunie się dalej niż prosta transmisja plików.
Zamawiamy maszynę

Na nasze cele testowe bierzemy prostą maszynę w . Nie potrzebujemy dużo zasobów, więc wybierzemy opcję płatności za faktycznie zużyte megaherce i transfer danych. W sam raz wystarczy do zabawy.
Klasyczny dm-crypt całej partycji nie zadziałał. Dysk domyślnie oddawany jest jako jeden kawałek z roota na całą partycję. Zmniejszenie partycji z ext4 na zamontowanym roocie to praktycznie gwarantowany cegła zamiast systemu plików. Próbowałem) Bęben nie pomógł.
Tworzymy kontener kryptograficzny
Dlatego nie będziemy szyfrować całej sekcji, a zamiast tego użyjemy plikowych kontenerów kryptograficznych, w tym przeauditowanego i niezawodnego VeraCrypt. To wystarczy do naszych celów. Na początek pobieramy i instalujemy pakiet z wersją CLI z oficjalnej strony. Możecie także sprawdzić podpis.
wget https://launchpad.net/veracrypt/trunk/1.24-update4/+download/veracrypt-console-1.24-Update4-Ubuntu-18.04-amd64.deb
dpkg -i veracrypt-console-1.24-Update4-Ubuntu-18.04-amd64.deb
Teraz stworzymy sam kontener gdzieś w naszym katalogu domowym, aby montować go ręcznie po restarcie. W wersji interaktywnej podaj rozmiar kontenera, hasło i algorytmy szyfrowania. Możecie wybrać patriotyczny szyfr Kuzniec i funkcję haszującą Stribog.
veracrypt -t -c ~/my_super_secretTeraz zainstalujmy nginx, zamontujmy kontener i załadujmy do niego tajne informacje.
mkdir /var/www/html/images
veracrypt ~/my_super_secret /var/www/html/images/
wget https://upload.wikimedia.org/wikipedia/ru/2/24/Lenna.pngNieco poprawimy /var/www/html/index.nginx-debian.html, aby uzyskać wymaganą stronę i można sprawdzać.
Łączymy się i sprawdzamy

Kontener jest zamontowany, dane są dostępne i przekazywane.

A oto maszyna po restarcie. Dane są bezpiecznie przechowywane w ~/my_super_secret.
Jeśli bardzo chcesz i lubisz hardcore, możesz zaszyfrować cały system operacyjny, aby podczas restartu wymagał połączenia przez ssh i wprowadzenia hasła. To również wystarczy w scenariuszu prostego wyjęcia „zimnych danych”. Oto i zdalnego szyfrowania dysków. Chociaż w przypadku VDS jest to skomplikowane i nadmiarowe.
Bare metal
Nie tak łatwo postawić własny serwer w centrum danych. Cudzy dedicated może okazać się maszyną wirtualną, do której podłączone są wszystkie urządzenia. Jednak coś interesującego w zakresie ochrony zaczyna się, gdy masz możliwość umieszczenia w centrum danych swojego zaufanego fizycznego serwera. Wtedy można w pełni wykorzystać tradycyjny dm-crypt, VeraCrypt lub inne szyfrowanie według własnego wyboru.
Należy rozumieć, że przy wdrożeniu całkowitego szyfrowania serwer nie będzie mógł samodzielnie się uruchomić po restarcie. Będzie trzeba podnieść połączenie do lokalnego interfejsu IP-KVM, IPMI lub innego podobnego odpowiednika. Następnie ręcznie wprowadzamy klucz główny. Schemat nie wygląda najlepiej pod względem ciągłości i odporności na awarie, ale nie ma specjalnych alternatyw, jeśli dane są tak cenne.

NCipher nShield F3 Hardware Security Module
Mniej inwazyjna opcja zakłada, że dane są szyfrowane, a klucz znajduje się bezpośrednio w serwerze w specjalnym HSM (Hardware Security Module). Zazwyczaj są to bardzo funkcjonalne urządzenia, które nie tylko zapewniają sprzętową kryptografię, ale również mają mechanizmy wykrywania prób fizycznego włamania. Jeśli ktoś zacznie dłubać w twoim serwerze szlifierką, HSM z niezależnym źródłem zasilania zresetuje klucze, które przechowuje w swojej pamięci. Atakujący otrzyma zaszyfrowany chaos. Przy tym restart może przebiegać automatycznie.
Usunięcie kluczy to znacznie szybsza i bardziej humanitarna opcja niż aktywacja bomby termitowej czy elektro-magnetycznego wyładowania. Takie urządzenia będą cię długo kosztować w sąsiedztwie data center. Zwłaszcza w przypadku wykorzystania szyfrowania na samych nośnikach praktycznie nie doświadczasz żadnego overheadu. Wszystko to odbywa się przezroczysto dla systemu operacyjnego. Prawda, że trzeba zaufać umownemu Samsungowi i mieć nadzieję, że używa uczciwego AES256, a nie zwykłego XOR.
Jednak nie należy zapominać, że wszystkie zbędne porty muszą być fizycznie wyłączone lub po prostu zalać je kompozytem. W przeciwnym razie stwarzasz atakującym możliwość przeprowadzenia . Jeśli masz wystający port PCI Express lub Thunderbolt, w tym USB z jego obsługą — jesteś podatny na atak. Atakujący będzie mógł przeprowadzić atak przez te porty i uzyskać bezpośredni dostęp do pamięci z kluczami.

W bardzo wyrafinowanej wersji atakujący będzie mógł przeprowadzić atak cold boot. W tym przypadku po prostu wlewa dużą ilość ciekłego azotu do twojego serwera, brutalnie wyciąga zamrożone kości pamięci i dokonuje z nich zrzutu wszystkich kluczy. Często do przeprowadzenia ataku wystarczy zwykły spray chłodzący i temperatura w okolicy -50 stopni. Jest również bardziej subtelna wersja. Jeśli nie wyłączyłeś bootowania z zewnętrznych urządzeń, algorytm atakującego będzie jeszcze prostszy:
- Zamrozić kości pamięci bez otwierania obudowy
- Podłączyć swoją bootowalną pamięć USB
- Specjalnymi narzędziami pobrać dane z pamięci RAM, które przetrwały restart, dzięki zamrożeniu.
Podział i rządzenie
Ok, mamy tylko wirtualki, ale chcemy jakoś zmniejszyć ryzyko wycieku danych.
Można spróbować przeorganizować architekturę i rozdzielić przechowywanie danych oraz przetwarzanie w różnych jurysdykcjach. Na przykład, frontend z kluczami szyfrowania u hostera w Czechach, a backend z zaszyfrowanymi danymi gdzieś w Rosji. W przypadku standardowej próby konfiskaty, bardzo mało prawdopodobne jest, aby organy ścigania mogły to zrobić jednocześnie w różnych jurysdykcjach. Dodatkowo, częściowo chroni nas to przed scenariuszem związanym z robieniem migawki.
Można również rozważyć całkowicie czystą opcję — szyfrowanie end-to-end. Oczywiście wykracza to poza zakres specyfikacji i nie zakłada wykonywania obliczeń po stronie zdalnej maszyny. Niemniej jednak, to całkiem akceptowalna opcja, jeśli mowa o przechowywaniu i synchronizacji danych. Na przykład, jest to bardzo dobrze realizowane w tym samym Nextcloud. Przy tym synchronizacja, wersjonowanie i inne zalety części serwerowej nikąd nie znikną.
Podsumowując
Nie ma idealnie zabezpieczonych systemów. Zadaniem jest jedynie uczynienie ataku droższym niż potencjalny zysk.
Nieco obniżone ryzyko dostępu do danych na wirtualnej maszynie można uzyskać, łącząc szyfrowanie oraz rozdzielenie przechowywania u różnych hosterów.
Bardziej lub mniej niezawodną opcją jest korzystanie z własnego sprzętu serwerowego.
Hosterowi i tak będzie trzeba ufać w pewnym sensie. Na tym opiera się cała branża.
Źródło: habr.com
