tutaj - MCXTelecom

Transkrypt

tutaj - MCXTelecom
!!!!!
!
FUDO%
Architektura%Bezpieczeństwa!
%
%
%
Warszawa,%28:04:2014%
!
Rozwiązanie! do! monitoringu! zdalnych! sesji! jest! jednym! z! najbardziej! newralgicznych!
elementów! w! sieci! korporacyjnej.! Kompromitacja! takiego! systemu! pozwoliłaby! na!
nieuprawniony! dostęp! do! zapisanych! sesji,! które! mogą! zawierać! wrażliwe! dane! lub!
umożliwiłaby! nieautoryzowany! dostęp! do! monitorowanych! systemów.! Dodatkowo!
nieprzemyślana!architektura!bezpieczeństwa!mogłaby!sprawić,!że!materiał!dowodowy!przez!
nią! zbierany! mógłby! być! mniej! wiarygodny! w! przypadku! wykorzystania! go! w! sporze!
sądowym.! Kluczowe! zatem! jest,! by! rozwiązanie! do! monitoringu! sesji! zdalnych! było! od!
samego!początku!projektowane!z!myślą!o!najwyższym!poziomie!bezpieczeństwa.
Niniejszy!dokument!opisuje!kluczowe!mechanizmy!bezpieczeństwa!zastosowane!w!FUDO,!by!
zapewnić! ochronę! zapisywanych! sesji! w! trakcie! rejestracji! materiału! oraz! danych! w!
spoczynku.!
1.#System#operacyjny#
FUDO! wykorzystuje! otwarty! system! operacyjny! FreeBSD,! który! jest! znany! ze! swej!
niezawodności,! wydajności! i! bezpieczeństwa.! Jest! to! jeden! z! najstarszych! i! najbardziej!
dojrzałych! projektów! openOsource.! System! FreeBSD! rozwijany! jest! od! ponad! 20! lat! przez!
grupę! kilkuset! osób! z! całego! świata,! a! wykorzystywany! jest! przez! światowych! gigantów,! tj.!
Netflix,!Juniper,!Cisco,!NetApp,!WhatsApp!czy!Apple,!którego!Mac!OS!X!został!zbudowany!na!
bazie!FreeBSD.
2.#Kryptograficzna#ochrona#danych#dyskowych#
Do! kryptograficznej! ochrony! danych! zapisanych! na! macierzy! dyskowej,! FUDO! wykorzystuje!
algorytm! AESOXTS! z! kluczem! 256! bitów! w! ramach! oprogramowania! GELI! dostępnego! w!
systemie!FreeBSD.
Algorytm!AES!jest!obecnie!najbardziej!zaufanym!algorytmem!szyfrowania!symetrycznego,!a!
tryb!XTS!został!zaprojektowany!ściśle!z!myślą!o!ochronie!danych!dyskowych!i!jest!uznawany!
za! najbardziej! bezpieczny! tryb! szyfrowania! do! tego! celu.! Dane! szyfrowane! są! na! poziomie!
blokowym,!poniżej!systemu!plików,!także!zarówno!dane!jak!i!metadane!systemu!plików!są!
chronione.! Wszystkie! dane,! które! mogą! być! przez! urządzenie! zmodyfikowane! są!
zaszyfrowane.!Jedyna!niezaszyfrowana!część!przestrzeni!dyskowej!to!samo!oprogramowanie!
FUDO,! które! znajduje! się! na! partycji! tylko! do! odczytu.! Oprogramowanie! GELI! jest! częścią!
FreeBSD! od! 2005! roku! i! jest! najpopularniejszym! mechanizmem! do! szyfrowania! dysków! dla!
tego!systemu.!Autorem!GELI!jest!producent!FUDO,!firma!Wheel!Systems.
3.#Klucze#szyfrowe#do#danych#dyskowych#
Urządzenie!FUDO!jest!dostarczane!do!klienta!w!postaci!preOinicjowanej.!Podczas!!pierwszego!
uruchomienia! w! siedzibie! klienta! generowane! są! klucze! szyfrowe! do! ! danych! dyskowych! i!
zapisywane!na!dwóch!penOdrive'ach!USB!dołączonych!do!FUDO.!
Strona!2!/!6!
Do!generowania!silnych!kluczy!szyfrowych!używany!jest!systemowy!generator!liczb!losowych!
(PRNG),! używający! algorytmu! Yarrow.! Przed! wykorzystaniem,! Yarrow! powinien! być!
zainicjowany!używając!co!najmniej!256!bitów!danych!losowych!(entropii).!FUDO!do!zbierania!
entropii! korzysta! z! wielu! niezależnych! źródeł! jak! czasy! przerwań! sprzętowych! czy! czasy!
inicjacji! poszczególnych! sprzętowych! komponentów.! Dzięki! temu! w! momencie! generacji!
kluczy!szyfrowych!system!ma!już!do!dyspozycji!kilka!tysięcy!bitów!entropii,!czyli!dużo!więcej!
niż!wartość!wymagana!do!bezpiecznego!działania.
Podczas! kolejnych! startów! urządzenia! potrzebny! będzie! tylko! jeden! z! penOdrive'ów! i!
potrzebny! jest! on! jedynie! podczas! uruchomienia! FUDO.! Klient! musi! podjąć! decyzję! czy!
fizyczne!bezpieczeństwo!serwerowni!umożliwia!pozostawienie!penOdrive'a!w!urządzeniu!co!
pozwoli!na!automatyczny!start!FUDO!po,!na!przykład,!awarii!zasilania.!Jeżeli!penOdrive!będzie!
nieobecny! podczas! włączania! urządzenia,! proces! uruchamiania! zostanie! wstrzymany! do!
momentu! włożenia! nośnika! z! kluczami! szyfrowymi.! Nikt! oprócz! klienta,! nawet! producent,!
firma! Wheel! Systems,! nie! jest! w! stanie! odszyfrować! danych! dyskowych! bez! kluczy!
szyfrowych.
4.#Integralność#danych#dyskowych#
Ochrona! danych! dyskowych! to! nie! tylko! zapewnienie! ich! prywatności,! to! również!
zapewnienie! ich! integralności.! Samo! szyfrowanie! danych! nie! pozwoli! wykryć! w! sposób!
jednoznaczny! modyfikacji.! Do! tego! celu,! m.in.! FUDO! wykorzystuje! system! plików! ZFS.!
Wszystkie! dane! i! metadane! zapisywane! przez! ZFS,! zapisywane! są! razem! z! sumą! kontrolną,!
do! której! wykorzystywany! jest! kryptograficzny! algorytm! skrótu! SHA256.! Wszelkie!
modyfikacje! danych! dyskowych! zostaną! wykryte! i! zaraportowane! podczas! ich! odczytu.!
System! plików! ZFS! dostępny! jest! w! systemie! operacyjnym! FreeBSD! od! 2007! roku.! Firma!
Wheel!Systems!jest!autorem!portu!systemu!plików!ZFS!do!FreeBSD.
5.#Principle#of#least#authority.#Izolacja#procesów#
Urządzenie! do! monitorowania! zdalnych! sesji! musi! wspierać! wiele! różnych! protokołów!
sieciowych,!w!większości!o!wysokim!stopniu!skomplikowania.!W!związku!z!tym!istnieje!duża!
ilość! oprogramowania,! która! jest! narażona! na! ataki! z! zewnątrz.! Możliwość! kompromitacji!
kodu! nawet! jednego! z! obsługiwanych! protokołów! mogłaby! dać! dostęp! do! wszystkich!
zgromadzonych! na! urządzeniu! danych! lub! dostęp! do! monitorowanych! serwerów! gdyby!
rozwiązanie!nie!było!zaprojektowane!w!odpowiedni!sposób.!Domyślnie!procesy!w!systemach!
operacyjnych! mają! dostęp! do! wszystkiego! do! czego! ma! dostęp! użytkownik,! z! którego!
prawami! działają.! Nie! wystarczy! oczywiście,! by! procesy! obsługujące! zdalne! sesje! działały! z!
prawami!nieuprzywilejowanego!użytkownika,!ponieważ!taki!użytkownik!miałby!i!tak!dostęp!
do!wszystkich!zgromadzonych!sesji!oraz!mógłby!nawiązywać!połączenia!z!monitorowanymi!
serwerami.! Zdecydowanie! najgorszym! rozwiązaniem! byłoby! używanie! wątków! w! ramach!
jednego! procesu! do! obsługi! niezależnych! sesji,! ponieważ! wątki! współdzielą! przestrzeń!
adresową,! zatem! kompromitacja! jednej! z! takich! sesji! dawałaby! bezpośredni! dostęp! do!
procesu!obsługującego!inne,!niezależne!sesje.
Strona!3!/!6!
Prawidłową! odpowiedzią! na! tego! typu! zagrożenia! jest! pełna! izolacja! procesów! (tzw.!
sandboxing)! w! myśl! zasady! Principle! of! least! authority.! FUDO! wykorzystuje! mechanizm!
Capsicum!do!szczelnego!sandboxowania!i!delegowania!uprawnień!w!miarę!uwiarygodniania!
się!procesu.!Każda!sesja!na!FUDO!obsługiwana!jest!przez!co!najmniej!dwa!procesy:!Master!i!
Slave.! Proces! Master! jest! procesem! nadzorcy,! który! nie! ma! żadnej! wiedzy! związanej! ze!
specyfiką! poszczególnych! protokołów.! Proces! ten! nadzoruje! i! deleguje! uprawnienia! do!
procesu! Slave,! który! z! kolei! wykonuje! kod! odpowiedzialny! za! poszczególne! protokoły! i! jest!
całkowicie!odizolowany!od!reszty!systemu.
Proces! Slave! w! pierwszej! kolejności! jest! odpowiedzialny! za! pobranie! w! ramach! protokołu!
danych! uwierzytelniających! użytkownika! (przeważnie! są! to! login! i! hasło).! Dane! te!
przekazywane! są! do! procesu! Master,! by! ten! przeprowadził! uwierzytelnienie.! W! przypadku!
poprawnej!!weryfikacji!tożsamości!użytkownika!do!procesu!Slave!delegowane!są!dodatkowe!
uprawnienia!i!zasoby.
Przed!uwierzytelnieniem!proces!Slave!otrzymuje:
• 1!sekundę!czasu!procesora.!
• 5!minut!czasu!zegarowego.!
• 32MB!pamięci!RAM.!
• Dostęp!tylko!do!odczytu!do!katalogu!z!danymi!specyficznymi!dla!protokołu,!np.!
obrazek!z!oknem!logowania.!
• Kanał!komunikacyjny!z!procesem!Master!w!postaci!UNIX!domain!socket.!
Przed!uwierzytelnieniem!proces!Slave!nie!ma!dostępu!do:
• Systemu!plików!O!nie!może!otwierać!żadnych!plików,!nie!może!nawet!listować!
zawartości!katalogów.!
• Urządzeń!sprzętowych!wchodzących!w!skład!FUDO!(tj.!dyski!czy!karty!sieciowe).!
• Sieci!O!nie!może!wykonywać!żadnych!połączeń!sieciowych!ani!wysyłać!czy!odbierać!
pakietów;!w!szczególności!nie!może!połączyć!się!z!monitorowanym!
serwerem.!
• Listy!procesów!O!nie!może!zobaczyć!jakie!procesy!działają!w!systemie,!
nie!może!wchodzić!z!nimi!w!żadną!interakcję!poprzez!np.!wysyłanie!sygnałów!
czy!podłączanie!się!w!trybie!debug.!
• Większości!wywołań!systemowych.!
W!momencie!gdy!proces!Master!pomyślnie!uwierzytelni!użytkownika,!do!procesu!Slave!
delegowane!są!dodatkowe!uprawnienia/zasoby:
• Dodatkowe!32MB!pamięci!RAM.!
• Zdejmowany!jest!limit!czasu!procesora.!
• Deskryptor!reprezentujący!połączenie!z!serwerem!O!proces!Master!nawiązuje!
połączenie!z!serwerem!i!przekazuje!je!do!procesu!Slave.!
• Deskryptory!do!plików!ze!zrzutem!sesji!O!od!tej!pory!proces!Slave!może!wykonywać!
zapisy!na!dysk,!ale!tylko!do!kilku!ściśle!określonych!plików.!Do!plików!tych!proces!
Slave!może!tylko!dopisywać!dane.!Nie!może!modyfikować!już!zapisanych!danych.!
Nawet!po!uwierzytelnieniu!proces!Slave!ciągle!nie!ma!dostępu!do:
• Systemu!plików!O!nie!może!otwierać!żadnych!plików,!nie!może!nawet!listować!
Strona!4!/!6!
•
•
•
•
zawartości!katalogów!O!ma!dostęp!tylko!do!plików,!których!deskryptory!przekazał!mu!
proces!Master;!w!szczególności!nie!ma!dostępu!do!konfiguracji!urządzenia!czy!
zapisów!innych!sesji.!
Urządzeń!sprzętowych!wchodzących!w!skład!FUDO!(tj.!dyski!czy!karty!sieciowe).!
Sieci!O!nie!może!wykonywać!żadnych!połączeń!sieciowych!ani!wysyłać!czy!odbierać!
pakietów!O!ma!dostęp!tylko!do!połączenia!z!monitorowanym!serwerem,!do!którego!
deskryptor!przekazał!mu!proces!Master.!
Listy!procesów!O!nie!może!zobaczyć!jakie!procesy!działają!w!systemie,!nie!może!
wchodzić!z!nimi!w!żadną!interakcję!poprzez!np.!wysyłanie!sygnałów!czy!podłączanie!
się!w!trybie!debug.!
Większości!wywołań!systemowych.!
Dzięki!tak!bezkompromisowemu!podejściu,!cały!kod!implementujący!obsługę!protokołów!
wykonywany!jest!tylko!i!wyłącznie!w!pełnej!izolacji.
Firma!Wheel!Systems!jest!aktywnie!zaangażowana!w!rozwój!mechanizmu!Capsicum!w!
systemie!FreeBSD.
6.#Znakowanie#czasem#(trusted#timestamping)#
FUDO! umożliwia! wykorzystanie! mechanizmu! znakowania! czasem! do! kryptograficznego!
podpisu! zapisanych! sesji.! Do! znakowania! czasem! wykorzystywane! są! zewnętrzne,!
kwalifikowane! centra! znakowania! czasem,! w! tym! polskie! centra.! Mechanizm! ten! daje!
pewność,!że!sesja!nie!została!zmodyfikowana!po!wygenerowaniu!znacznika!czasu.!Znacznik!
czasu! wystawiony! przez! kwalifikowane! centrum! jest! bezsprzecznym! dowodem! w! procesie!
sądowym.
7.#Silne#uwierzytelnienie#użytkowników#
Urządzenie! FUDO! zapewnia! pełną! rozliczalność! użytkowników! poprzez! możliwość!
wykorzystania!silnego,!wieloskładnikowego,!uwierzytelnienia!użytkowników.!Możliwe!jest!to!
przez! wykorzystanie! zewnętrznych! serwerów! uwierzytelnienia,! tj.! RADIUS,! LDAP,! Active!
Directory,! czy! produkt! firmy! Wheel! Systems! O! CERB.! !Dzięki! temu,! użytkownicy! zamiast!
logować! się! do! monitorowanych! systemów! przy! użyciu! loginu! i! hasła! statycznego! będą!
logować! się,! np.! z! wykorzystaniem! loginu,! hasła! statycznego! i! dodatkowego! hasła!
jednorazowego.! Daje! to! większą! pewność,! że! użytkownik! jest! faktycznie! tym! za! kogo! się!
podaje,! a! co! za! tym! idzie,! że! można! go! pociągnąć! do! odpowiedzialności! za! wykonywane!
przez!niego!czynności!zarejestrowane!przez!urządzenie.
Dodatkowo!FUDO!ma!możliwość!podmiany!loginu!i/lub!hasła!w!locie!podczas!nawiązywania!
sesji.! Podmiana! loginu! jest! przydatna! gdy! użytkownicy! logują! się! na! systemy! z!
wykorzystaniem! współdzielonych! kont,! np.! konto! root! w! systemach! UNIX,! czy! konto!
Administrator!w!systemach!Windows.!Przy!zastosowaniu!FUDO!użytkownicy!podają!własny!
login!i!hasło/hasła!logując!się!do!monitorowanych!systemów.!Jeżeli!dane!te!są!poprawne,!a!
użytkownik!ma!dostęp!do!docelowego!serwera,!FUDO!może!zalogować!użytkownika!na!inne,!
np.!współdzielone,!konto!w!systemie.!!Podmiana!haseł!pozwala!upewnić!się,!że!nawet!jeżeli!
Strona!5!/!6!
użytkownik! będzie! miał! fizyczną! możliwość! bezpośredniego! połączenia! z! systemem!
podlegającym!monitorowaniu,!nie!będzie!w!stanie!uzyskać!do!niego!dostępu!bez!znajomości!
właściwych!danych!logowania.
!
Strona!6!/!6!