!!!!!! 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!