Bezpieczeństwo a zaufanie, czyli kiedy przydaje się monitoring

dodał 17 marca 2016 o 12:24 w kategorii HowTo, Info  z tagami:
Bezpieczeństwo a zaufanie, czyli kiedy przydaje się monitoring

Czy martwicie się gdy zostawiacie swoje najcenniejsze dane i serwery bez kontroli pod opieką zaufanego administratora? Czy powinniście się tym przejmować? Co możecie zrobić, żeby martwić się mniej lub wcale?

Zapraszamy do lektury felietonu Pawła Jakuba Dawidka. Dla zachowania pełnej przejrzystości: autor artykułu jest współzałożycielem firmy Wheel Systems – producenta rozwiązań bezpieczeństwa, z których jedno – Fudo – służy do monitorowania użytkowników uprzywilejowanych. W związku z ostatnimi problemami jednej z firm hostingowych warto przybliżyć czytelnikom problemy związane z zarządzaniem użytkownikami uprzywilejowanymi oraz sposoby na rozwiązanie tych problemów, w czym Fudo, jak łatwo się domyślić, może pomóc.

Biorąc pod uwagę wydarzenia ostatnich dni pewnie nie trzeba przypominać, dlaczego zarządzanie użytkownikami uprzywilejowanymi jest takie ważne. Warto wszakże pokazać, że takie problemy można w bezpieczny sposób rozwiązać. Przez bardzo długi czas bezpieczeństwo IT skupiało się głównie na zagrożeniach z zewnątrz. Każdy ma firewalla, system antyspamowy, VPNa, IDSa. W momencie gdy użytkownik poprawnie się uwierzytelnił łącząc się z VPNem czy logując do systemu operacyjnego bezpieczeństwo się kończyło. Rozpoczynało się zaufanie. Zaufanie, mimo iż koncepcyjnie szlachetne, moim zdaniem wyklucza się z bezpieczeństwem. Zaufanie w świecie bezpieczeństwa pojawia się gdy nie mamy już narzędzi i możliwości weryfikacji lub kontroli. Oznacza po prostu bezradność. „Ufam mu.”, czyt. „Nie mam pojęcia co robi i nie mam jak sprawdzić.”.

Monitoring a zaufanie

Przykład Edwarda Snowdena i sposobu w jaki zdobył ujawnione przez siebie dokumenty sprawił, że korporacje zaczęły uważniej przyglądać się tzw. użytkownikom uprzywilejowanym. Użytkownikom, którzy nie muszą „hackować” w celu osiągnięcia dodatkowych korzyści, gdyż są już wewnątrz sieci i mają wysokie uprawnienia, np. do zarządzania infrastrukturą IT. Mówimy tutaj m.in. o administratorach sieci, administratorach systemowych czy zdalnych konsultantach.

Możliwość dostępu do poczty zarządu (znacie firmę której zarząd szyfruję przesyłaną pocztę?), dokumentacji księgowej, własności intelektualnej firmy to dość poważne supermoce. Czy stać nas na to by opierać bezpieczeństwo tych danych na zaufaniu?

„No dobrze, ale co jest złego w zaufaniu jeżeli pracuję z konkretną osobą od lat, nigdy mnie nie zawiodła, nigdy nie dała mi powodu by jej nie ufać?”

To jest oczywiście częste pytanie, które lubię odwracać: a co jest złego w monitorowaniu pracy takiej osoby? Obrazi się na nas? Będzie jej przykro? Będzie to niestosowne? Jeżeli zostawiam dzieci z opiekunką, to kamery w moim domu nagrywają to co się dzieje, a opiekunka o tym wie. Jeżeli opiekunce się to nie podoba, uważa to za niestosowne, to droga wolna. Nie ma dla mnie nic cenniejszego niż moje dzieci i nie pozwolę by coś im się stało, bo obawiałem się sprawić komuś przykrość. To nic osobistego, mogę jej bardzo ufać a i tak monitoringu nie wyłączę.

Ryzyko związane z nieuczciwym administratorem zawsze istnieje, a firma musi dbać o bezpieczeństwo swoich danych i infrastruktury. Ja mogę danej osobie ufać prywatnie, ale wtedy konsekwencje nadużycia zaufania ponoszę tylko ja, a nie cała firma. Jeżeli administrator tego nie rozumie, odbiera to personalnie, cóż, to jego problem.

Krótka dygresja: Z jakiegoś powodu brak zaufania jako domyślna postawa traktowany jest jak złe maniery. Typowy przykład na potwierdzenie tej tezy: Stoimy przy domofonie do klatki schodowej. Przychodzi mieszkaniec, wpisuje swój kod, otwiera drzwi. My wchodzimy razem z nim. Ilu takich mieszkańców nie pozwoli nam wejść? Ilu poprosi żebyśmy użyli swojego kodu lub zadzwonili do osoby, z którą chcemy się spotkać? Oczywiście niewielu. Przecież takie pytanie mogłoby kogoś urazić. Oznaczałoby, że mu nie ufamy, a przecież nie wyrządził nam jeszcze żadnej krzywdy. Oznaczałoby, że nie ufamy osobie, którą pierwszy raz widzimy na oczy. Hmm. Czyż takie zachowanie nie leży przypadkiem u podstaw większości ataków socjotechnicznych?

Możemy także mieć tu do czynienia  z jeszcze jednym ciekawym fenomenem: „lepiej nie wiedzieć”. Nie monitorując uprzywilejowanych użytkowników nie wiemy co tak naprawdę robią, więc jedynym logicznym wnioskiem jest, że na pewno nie robią nic złego. Jeszcze nie brzmi znajomo? „To na pewno jest zdrowe jedzenie, przecież nie dopuściliby go do sprzedaży.”, „Inwestycja w Amber Gold musi być bezpieczna, przecież ktoś to musiał sprawdzić.”, „Nie idę do lekarza, bo mi jeszcze coś znajdzie.”. Teraz? Bezpieczeństwo nie może opierać się na niewiedzy. Mogę spróbować określić czy coś jest bezpieczne, ale wtedy i tylko wtedy gdy zrozumiem dokładnie jak to coś działa.

Zamykając ten wątek: nie budujmy bezpieczeństwa na zaufaniu. Nawet jeżeli ktoś jest godny zaufania teraz, to w przyszłości nie musi być. Może będzie miał problemy finansowe i zostanie przekupiony. Może ulec szantażowi. Może popaść w konflikt z pracodawcą i szukać zemsty. Może również popełnić błąd i nie przyznać się chcąc uniknąć konsekwencji. No i na końcu może mieć złośliwe oprogramowanie na swojej stacji, które wykorzysta jego uprawnienia. Nie są to rozważania teoretyczne. Wystarczy spojrzeć na administratora dużej firmy hostingowej, który zostawił tylne furtki na 2700 serwerach, dyrektora bezpieczeństwa loterii który manipulował generatorem liczb losowych czy w końcu administratora który odchodząc z pracy zniszczył całą infrastrukturę IT w firmie.

Jeśli monitorować to w jaki sposób?

Skoro ustaliliśmy już, że uprzywilejowanych użytkowników należy kontrolować, pozostaje pytanie jak to robić. Uprawnienia możemy ograniczać tylko do pewnego stopnia. Nie bez przyczyny nazywamy tych użytkowników uprzywilejowanymi – potrzebują tych przywilejów by wykonywać swoją pracę. Zatem skoro nie możemy im ich odebrać pozostaje monitorowanie ich pracy.

Istnieją co najmniej trzy sposoby monitorowania pracy użytkowników uprzywilejowanych a każdy z nich ma swoje wady i zalety. Użytkownik dostaje się do systemu, np. za pośrednictwem protokołu SSH czy RDP. Możemy zatem monitorować jego działania na jego stacji roboczej, na docelowym serwerze lub stojąc w środku, pomiędzy użytkownikiem, a serwerem. Przy projektowaniu Fudo rozważaliśmy wszystkie trzy metody. Poniżej wyjaśnię dlaczego zdecydowaliśmy się na jedną z nich.

Monitorowanie na poziomie stacji roboczej jest zdecydowanie najsłabszym pomysłem – użytkownik może znaleźć sposób na wyłączenie monitorowania lub po prostu użyć innej stacji. Na niekorzyść tego rozwiązania przemawia także konieczność utrzymania dodatkowego oprogramowania na stacjach użytkowników oraz pogorszenie wydajności stacji.

Monitorowanie na docelowym serwerze ma większy sens, bo właśnie na nim nam zależy, a tam możemy monitorować każde wywołanie systemowe (tj. otwarcie pliku, wykonanie połączenia, wysłanie sygnału do innego procesu). Nie jest to łatwe w implementacji, jednak część systemów operacyjnych posiada funkcjonalność audytu umożliwiającą rejestrowanie wszystkich wywołań systemowych w niezawodny sposób. Jest jednak kilka poważnych wad tego podejścia. Istnieje konieczność instalacji dodatkowego oprogramowania na każdym serwerze, który chcemy kontrolować, co oczywiście mocno komplikuje kwestie utrzymaniowe i będzie miało wyraźny wpływ na wydajność systemu. Jest również spora szansa, że skoro mówimy o użytkowniku uprzywilejowanym, to loguje się on na konto roota lub Administratora, a co za tym idzie ma pełną kontrolę nad monitorowanym systemem i w konsekwencji może monitoring wyłączyć. Natomiast chyba największy problem z tym podejściem jest taki, że nie będziemy w stanie zabezpieczyć wszelkiego rodzaju rozwiązań zamkniętych takich jak firewalle, routery, przełączniki sieciowe, itp. ponieważ nie mamy możliwości instalacji dodatkowego oprogramowania na takich urządzeniach.

Dla Fudo wybraliśmy trzecią możliwość, czyli znajdujemy się pomiędzy użytkownikami a serwerami. Połączenie przechodzi przez rozwiązanie monitorujące. Z perspektywy użytkownika nie ma dodatkowego kroku gdyż nie jest to stacja przesiadkowa. Wykorzystywana jest technika Man-in-the-middle i logowany jest całych ruch sieciowy (po odszyfrowaniu), na bazie którego możemy wizualnie odtworzyć przebieg sesji (nawet na żywo) dzięki czemu widzimy przez panel WWW dokładnie to, co widzi użytkownik na swoim ekranie. Nie musimy instalować żadnego oprogramowania na stacjach użytkowników ani na serwerach.

Uproszczony schemat działania

Uproszczony schemat działania

Dodatkowe atuty

Może zdarzyć się, że materiał zgromadzony przez tego typu rozwiązanie musi zostać wykorzystany jako dowód w sprawie sądowej. Z tego powodu ważne jest silne uwierzytelnienie użytkowników zapewniające atrybucję (a najlepiej możliwość dwuskładnikowego uwierzytelnienia). Zapisywane dane powinny być zaszyfrowane a ich integralność powinna być zapewniona przez weryfikację kryptograficzną. Powinna także istnieć możliwość pobrania surowego zapisu sesji (by udowodnić, że urządzenie monitorujące nie modyfikuje w żaden sposób ruchu) oraz możliwość znakowania sesji czasem przy użyciu niezależnego serwisu.

Często niestety zdarza się, że dostęp do kont uprzywilejowanych ma kilka osób. Jeżeli ktoś loguje się bezpośrednio na roota to ciężko jest później ustalić kim faktycznie był ten użytkownik. Nie pomaga tutaj wykorzystanie logowania po kluczach SSH, gdyż domyślnie serwer OpenSSH nie loguje informacji o użytym kluczu.

W naszym rozwiązaniu rekomendujemy zakładanie imiennych kont dla każdego użytkownika ponieważ istnieje możliwość podmiany „w locie” loginu i hasła, których użyjemy do automatycznego zalogowania użytkownika w  systemie docelowym. W praktyce użytkownik wykonuje komendę:

ssh -l jkowalski fudo.example.com

a zostaje zalogowany na konto roota. Dodatkowym atutem tego podejścia jest to, że użytkownik nie zna hasła konta roota w systemie docelowym, więc jeżeli nawet jest w stanie znaleźć obejście sieciowe by połączyć się bezpośrednio z serwerem to i tak nie będzie w stanie się zalogować. Z kolei jeżeli postanowi zmienić hasło na docelowym serwerze to będzie musiał to wykonać w ramach monitorowanej sesji.

Podsumowanie

Mam nadzieję, że udało mi się trochę przybliżyć temat użytkowników uprzywilejowanych i przekonać, że warto monitorować ich pracę. Jeżeli nie, cóż, do zobaczenia na Zaufanej Trzeciej Stronie? :)

Dla zachowania pełnej przejrzystości – jest to wpis sponsorowany za który otrzymujemy wynagrodzenie.