Automatyczne uruchamianie i zabezpieczanie serwera Linux za pomocą szyfrowanego systemu plików

16

Konfiguruję nowe serwery Ubuntu i chciałbym zabezpieczyć dane na nich przed kradzieżą. Modelem zagrożenia są atakujący żądający sprzętu lub raczej naiwni napastnicy żądający danych.


Proszę zwrócić uwagę na tę sekcję.

Model zagrożenia nie obejmuje inteligentnych atakujących pragnących danych; Zakładam, że wykonają jedną lub więcej z następujących czynności:

  1. Połącz zasilacz UPS z kablem zasilającym, aby utrzymać ciągłą pracę urządzenia.

  2. Włóż parę mostków Ethernet między komputerem a punktem końcowym sieci, który będzie mostkować ruch w sieci bezprzewodowej o wystarczającym zasięgu, aby host utrzymał łączność sieciową.

  3. Otwórz pudełko i użyj sondy na szynie pamięci, aby złapać ciekawe rzeczy.

  4. Użyj urządzeń TEMPEST, aby sprawdzić, co robi host.

  5. Użyj środków prawnych (takich jak nakaz sądowy), aby zmusić mnie do ujawnienia danych

  6. Itd itd.


Chcę więc mieć niektóre, a najlepiej wszystkie dane na dysku na zaszyfrowanej partycji, z kluczowym materiałem niezbędnym do uzyskania dostępu na jakimś nośniku zewnętrznym. Dwie metody przechowywania kluczowych materiałów, które mogę wymyślić:

  1. Przechowuj go na zdalnym hoście dostępnym przez sieć i skonfiguruj wystarczającą ilość sieci, aby odzyskać go podczas procesu rozruchu. Pobieranie byłoby dozwolone tylko dla adresu IP przypisanego do bezpiecznego hosta (nie pozwalając w ten sposób na dostęp do zaszyfrowanych danych, gdyby zostały uruchomione przy innym połączeniu sieciowym) i mogłyby zostać wyłączone przez administratorów, gdyby komputer został skradziony.

  2. Przechowuj go na urządzeniu pamięci USB, które jest w jakiś sposób znacznie trudniejsze do kradzieży niż sam host. Lokalizowanie go z dala od hosta, na przykład na końcu pięciometrowego kabla USB prowadzącego do innego rogu pokoju lub nawet innego pokoju, prawdopodobnie znacznie zmniejszy szanse na przejęcie go przez atakujących. Zabezpieczenie go w jakiś sposób, na przykład przez przyklejenie go do czegoś nieruchomego lub nawet umieszczenie w sejfie, działałoby jeszcze lepiej.

Jakie są więc moje opcje konfiguracji? Jak powiedziałem wcześniej, wolałbym mieć wszystko (poza być może małą partycją rozruchową, która nie zawiera / etc) zaszyfrowaną, aby nie musiałem się martwić o to, gdzie umieszczam pliki lub gdzie one „ przypadkowo ląduje.

Używamy Ubuntu 9.04, jeśli to robi jakąkolwiek różnicę.

Curt J. Sampson
źródło
1
Czy Twój model zagrożenia nosi mundury z trzema literami? :)
Sven
Nie noszą mundurów. :-) Ale poważnie, nie; każda agencja rządowa, tajna lub nie, prawdopodobnie będzie wystarczająco inteligentna, aby zabrać cały sprzęt, a nie tylko to, co może szybko zdobyć.
Curt J. Sampson
1
Twoje pytanie wydaje się przeczyć. Najpierw powiesz „Chciałbym zabezpieczyć na nich dane przed kradzieżą”, a następnie powiesz „nie obejmuje inteligentnych napastników pragnących danych”. Dbasz o dane, czy nie?
Zoredache,
1
Dbam o to tak. Jeśli możesz, za podobną cenę, zabezpieczyć go zarówno przed inteligentnymi atakującymi, jak i głupimi, świetnie, zrobię to. Jeśli nie, przynajmniej unikam sytuacji, w której ktoś kupuje używany dysk w sklepie z recyklingu i odkrywa na nim wszystkie dane moich klientów.
Curt J. Sampson,
+1 za faktyczne przemyślenie modelu zagrożenia, o czym zapomina wiele osób z podobnym pytaniem.
śleske,

Odpowiedzi:

8

Znam sprytny wariant Opcji 1 o nazwie Mandos.

Wykorzystuje kombinację pary kluczy GPG, Avahi, SSL i IPv6, wszystkie dodane do początkowego dysku RAM, aby bezpiecznie odzyskać hasło klucza partycji głównej. Jeśli serwer Mandos nie jest obecny w sieci LAN, oznacza to, że jest to zaszyfrowana cegła lub serwer Mandos nie widział uderzenia serca z oprogramowania klienckiego Mandos przez określony czas, zignoruje przyszłe żądania tej pary kluczy i serwera to zaszyfrowana cegła przy następnym uruchomieniu.

Strona Mandos

CZYTAJ Mandos

Haakon
źródło
1
Ciekawy pomysł. Zakładam, że PXE uruchamia klientów, aby klucz publiczny / prywatny nie znajdował się na dysku twardym. Mimo to możesz odhaczyć parę kluczy od drutu, a następnie użyć tego, w połączeniu z wąchaniem transmisji klucza szyfrowania zbiorczego przez komputer serwera, aby odszyfrować dysk. Cały „serwer nie wyda klucza, jeśli nie usłyszał bicia serca w oknie czasowym xxx”, brzmi jak fajny sposób na włączenie człowieka w pętlę. Zgrabny projekt. Nie jest zbyt trudny do pokonania, jeśli masz fizyczny dostęp, ale schludny.
Evan Anderson
2
Evan, chcesz przeczytać FAQ w README w Mandos, myślę ...
Curt J. Sampson
Hm Nie jestem pewien, dlaczego Mandos działa tylko w sieci LAN. Czy to dlatego, że nie można skonfigurować adresu IP i tras korzystania z Internetu?
Curt J. Sampson,
1
Curt, Mandos używa lokalnych adresów łącza ipv6 do komunikacji, która jest ograniczona do lokalnej sieci LAN. Oznacza to jednak, że nie potrzebuje żadnej konfiguracji zewnętrznej (dhcp) ani konfliktu z innymi serwerami w tej samej sieci LAN. en.wikipedia.org/wiki/…
Haakon
1
Jako współautor Mandos mogę zgodzić się tylko z Haakonem. W rzeczywistości istnieje sposób, w jaki Mandos może używać globalnych adresów IPv4 przy użyciu jądra ip=i mandos=connectparametrów, zobacz ten mail: mail.fukt.bsnet.se/pipermail/mandos-dev/2009- lutego 2009, ale zauważ, że jest to nieco kruche, ponieważ klienci będą próbowali połączyć się z określonym serwerem tylko raz, w przeciwnym razie nieodwołalnie się nie uda. Zalecana konfiguracja odbywa się za pośrednictwem sieci LAN. Mogę również wspomnieć, że Mandos jest dostępny w Ubuntu od 9.04 (a także w testach Debiana)
Teddy
6

Jeśli chcesz po prostu chronić się przed nietechnicznymi atakującymi, myślę, że najlepszym rozwiązaniem jest lepsze bezpieczeństwo fizyczne.

Moje myślenie jest zatem następujące:

Jeśli szukasz buta, który nie wymaga interakcji człowieka, aby wprowadzić kluczowy materiał, nie znajdziesz żadnego rozwiązania, które byłoby bezpieczne nawet przed przypadkową kradzieżą przez osobę posiadającą jakiekolwiek umiejętności techniczne (lub, bardziej odpowiednio, zdolność do zapłaty osobie posiadającej umiejętności techniczne).

Umieszczenie klucza w czymś takim jak pamięć USB nie zapewniłoby żadnego prawdziwego bezpieczeństwa. Atakujący może po prostu odczytać klucz z pendrive'a. Pendrive nie może wiedzieć, czy komputer, do którego został podłączony, jest serwerem czy laptopem atakującego. Wszystko, co musi zrobić atakujący, to upewnić się, że albo zabierze wszystko, albo w przypadku klucza USB na końcu 15-metrowego kabla USB extendo utkniętego w sejfie, wystarczy podłączyć kabel Extendo do komputera i przeczytać klucz.

Jeśli zamierzasz przenieść klucz przez sieć, prawdopodobnie „zaszyfrujesz” go. Atakujący musi jedynie podsłuchać proces kluczowania, ukraść serwer, a następnie poddać inżynierii wstecznej wszelkie „szyfrowanie”, które wykonałeś podczas wysyłania klucza przez sieć. Z definicji komputer serwera otrzymujący „zaszyfrowany” klucz z całej sieci musi być w stanie „odszyfrować” ten klucz, aby go użyć. Tak naprawdę nie szyfrujesz klucza - po prostu go kodujesz.

Ostatecznie potrzebujesz (sztucznej?) Inteligencji, aby wprowadzić klucz do serwera. Można powiedzieć: „Wiem, że nie ujawniam klucza nikomu poza komputerem serwera i wiem, że nie został skradziony”. Człowiek może to zrobić. Pamięć USB nie może. Jeśli znajdziesz inną inteligencję, która może to zrobić, to myślę, że będziesz mieć coś zbywalnego. > uśmiech <

Myślę, że najprawdopodobniej zgubisz klucz i zniszczysz swoje dane, nie zyskując żadnego bezpieczeństwa. Zamiast strategii gry szyfrującej uważam, że lepiej jest mieć większe bezpieczeństwo fizyczne.

Edytować:

Myślę, że pracujemy na podstawie różnych definicji terminu „model zagrożenia”.

Jeśli twoim modelem zagrożenia jest kradzież sprzętowa, to proponowane przez ciebie rozwiązanie: szyfrowanie dysku, jak widzę, nie robi nic z przeciwdziałaniem zagrożeniu. Proponowane rozwiązanie wygląda jak środek zaradczy przeciwko kradzieży danych, a nie kradzieży sprzętu.

Jeśli chcesz zapobiec kradzieży sprzętu, musisz go przykręcić, zamknąć, zamknąć w betonie itp.

Powiedziałem już to, co chciałem powiedzieć re: kradzież danych, więc nie będę tego więcej harował, z wyjątkiem powiedzenia: jeśli zamierzasz włożyć klucz do urządzenia fizycznego i nie możesz go chronić komputer serwera przed kradzieżą, nie można również chronić kluczowego urządzenia przed kradzieżą.

Wydaje mi się, że najlepszym „tanim” rozwiązaniem jest wprowadzenie jakiejś sieciowej wymiany kluczy. Umieściłbym w pętli jednego lub więcej ludzi, aby uwierzytelnić „zwolnienie” klucza w przypadku ponownego uruchomienia. Spowodowałoby to przestoje, dopóki człowiek nie „wypuściłby” klucza, ale przynajmniej dałoby ci szansę dowiedzenia się, dlaczego żądano „wydania” klucza i zadecydowania, czy to zrobić.

Evan Anderson
źródło
To dobry dodatek do analizy bezpieczeństwa, więc wyraziłem na nią zgodę, ale to nie jest odpowiedź na moje pytanie, ponieważ używasz innego modelu zagrożenia. Zwróć uwagę na to, co powiedziałem w pytaniu o to, przed kim jestem i nie bronię się.
Curt J. Sampson
1
Jeśli chodzi o lepsze bezpieczeństwo fizyczne, chciałbym najpierw spojrzeć na tańsze opcje. W naszym obecnym środowisku zainstalowanie czegoś, co nie byłoby w stanie szybko pokonać ktoś z parą nożyc, kosztowałoby nas wiele tysięcy dolarów.
Curt J. Sampson,
Ponownie czytając to, nie jestem pewien, że jesteś jasne, że mój model nie jest groźba kradzieży sprzętu per se , który jest w zasadzie tylko niedogodność, ale jednoczesne kradzież danych, które idzie w parze z nim. Właśnie dlatego zaproponowane przeze mnie rozwiązanie stanowi środek przeciw kradzieży danych, a nie kradzież sprzętową.
Curt J. Sampson,
Interesujący jest komentarz do prawie 8-letniego pytania. Jeśli twoje rozwiązanie działa dla ciebie, z pewnością się cieszę.
Evan Anderson,
Myślałem tylko „nie powinienem nekropolii”, a potem zobaczyłem te ostatnie komentarze. Myślę, że model zagrożenia Curt'a jest taki sam jak mój ... w celu ochrony danych przed kradzieżą sprzętu. Kilka komentarzy na temat tego i podobnych postów mówiło, że ludzie mogą po prostu „podsłuchać” kluczowy proces i dowiedzieć się go później. Tylko naprawdę absurdalnie zły proces może zostać przerwany przez jakąkolwiek powtórkę. Ponadto ... „wszystko, co musi zrobić atakujący, to„ ... ”poddać inżynierii wstecznej dowolne szyfrowanie, które zrobiłeś” ... O kim mówimy? Jakie są szanse, że zwykły złodziej miałby taką zdolność ... a nawet chciałby to zrobić?
darron