[caption id="attachment_6972" align="aligncenter" width="1200"] Hardening od podstaw – Jak zabezpieczyć organizację[/caption]
Hardening, czy może po polsku „utwardzanie” (szczerze mówiąc wolę angielską nazwę), to w skrócie zwiększenie odporności danego systemu na włamania poprzez jego rekonfigurację. Utwardzać można zarówno systemy jak i urządzenia sieciowe, bazy danych, usługi czy stacje robocze.
Hardening – Od czego zacząć?
Oczywiście od planu. Warto zastanowić się jakie systemy chcemy hardenować, w jakiej kolejności i kiedy. Hardening zawsze dobrze jest rozpocząć od analizy ryzyka – odpowiedzmy tu sobie na pytania: które systemy są najbardziej narażone na włamania? Które systemy są kluczowe z punktu widzenia procesów biznesowych? Które systemy, w przypadku utraty integralności i dostępności niosłyby za sobą największe straty?
Potrzeba hardeningu może także wynikać z przebytego audytu zewnętrznego/wewnętrznego czy testów penetracyjnych, które wykazały istniejące podatności. Możemy mieć też potrzebę bycia zgodnymi z pewnymi standardami – dla przykładu, aby zachować zgodność z PCI-DSS musimy przeprowadzać okresowe skanowanie podatności i mitygować te, które są o wysokim priorytecie.
[caption id="attachment_6975" align="aligncenter" width="1920"] Hardening jakie rozwiązania cyberbezpieczeństwa wspierają hardening[/caption]
Jakie systemy utwardzać?
Najlepiej te, które są najbardziej krytyczne i narażone na włamania. Takimi systemami bez wątpienia są systemy, aplikacje i urządzenia, które są dostępne z Internetu. Atakujący z całego świata bez ustanku skanują Internet w poszukiwaniu udostępnionych usług. Nie muszą nawet robić tego sami – w Internecie dostępne są na bieżąco aktualizowane bazy danych, zawierające informacje na temat publicznych usług wystawionych do Internetu. Poniżej znajduje się jedna z takich usług – Shodan.
Proste zapytanie, pokazane poniżej, pozwoli nam wyszukać wszystkie usługi SSH dostępne w Polsce. I to nie tylko na domyślnym porcie 22. Muszę tutaj rozczarować fanów tzw. głębokiego ukrycia, a więc ukrywania usług na portach innych niż domyślne – wystawienie usługi na nietypowym porcie nie zabezpieczy nas przed znalezieniem naszej usługi. Jeśli atakujący jest uparty może to co najwyżej opóźnić trochę jego działania.
[caption id="attachment_1988" align="aligncenter" width="604"] Widok z konsoli shodan.io – liczba znalezionych usług SSH wystawionych do Internetu w Polsce[/caption]
Oprócz systemów wystawionych do Internetu warto brać także pod uwagę systemy krytyczne dla biznesu oraz te, które przechowują dane wrażliwe. Nie chcemy przecież, żeby atakujący przełamał zabezpieczenia bazy danych zawierających dane kadrowe naszych pracowników albo dostał się do systemu CRM, przechowującego dane wszystkich naszych klientów. Pamiętajmy, że atakujący może próbować uzyskać do takich systemów dostęp również z wewnątrz sieci. Jeśli jest to ktoś spoza naszej organizacji może użyć do tego stacji pośredniej (np. takiej wystawionej do Internetu, w przypadku nieprawidłowo wdrożonej segmentacji) albo stacji naszego nieświadomego pracownika – w końcu stacje użytkowników są jednym z najczęstszych źródeł ataku na organizację. Ponadto nasz pracownik może także działać świadomie na naszą szkodę – motywacja może być różna – od niezadowolenia z pracy do chęci zarobku kosztem naszej firmy.
Plan hardeningu
Nasze działania powinniśmy zaplanować. Mając już wstępną listę systemów, które warto zabezpieczyć możemy zrobić ich inwentaryzację i zaplanować ścieżkę aktualizacji. Dla przykładu mając serwer z Centos łatwiej zrobić nam będzie aktualizację do najnowszej wersji Centosa zamiast do Ubuntu. Dobrze byłoby przy tym zastanowić się, czy nasze działania nie spowodują niekompatybilności z istniejącymi usługami, które na danym hoście działają. Być może aktualizując system do najnowszej wersji sprawimy, że jakaś ważna usługa przestanie działać, bo np. jest dawno nie wspierana i nie jest z tą wersją kompatybilna.
Biorąc to pod uwagę możemy stworzyć sobie prosty arkusz, który pomoże nam zaplanować nasze prace. Poniżej znajduje się przykład takiego arkuszu.
Jest to oczywiście przykład, który zawiera bardzo podstawowe informacje i dla każdej organizacji taki arkusz może wyglądać inaczej i zawierać więcej istotnych parametrów.
Aktualizacje systemowe i oprogramowania
Każda organizacja powinna mieć tzw. politykę aktualizacji, która określa w jaki sposób realizowane jest aktualizowanie oprogramowania do nowszych wersji. Jeśli natomiast takiej polityki nie ma, lub nie jest ona przestrzegana może się zdarzyć, że mamy w swoim środowisku oprogramowanie, które jest nieaktualne i, w związku z tym, może posiadać podatności. Dlatego też myśląc o hardeningu powinniśmy wziąć pod uwagę aktualizację systemu operacyjnego do najnowszych, stabilnych wersji. To samo dotyczy usług i oprogramowania.
Oczywiście zanim przystąpimy do aktualizacji upewnijmy się, że nowe wersje będą ze sobą kompatybilne i po aktualizacji nie spowodujemy niedostępności jakichś krytycznych usług. Możemy zacząć od aktualizacji środowiska testowego, o ile takie środowisko posiadamy a dopiero później przejść do produkcji. Innym ze sposobów zabezpieczenia się przed taką ewentualnością jest wykonanie wcześniej kopii zapasowej a dopiero potem rozpoczęcie procesu aktualizacji. W razie problemów zawsze możemy wtedy odtworzyć system w oryginalnej formie i ustalić powód niedostępności po aktualizacji.
Wyłączenie zbędnych usług
Dzięki wyłączeniu zbędnych usług działających w systemie operacyjnym lub urządzeniu sieciowym efektywnie redukujemy ich powierzchnię ataku. Jeśli na przykład mamy serwer pocztowy Linux, na którym ktoś, z niewiadomych przyczyn, zainstalował kiedyś usługę NFS, pewnie powinniśmy ją odinstalować. O jedną usługę mniej do zabezpieczania, aktualizowania i utrzymywania. Dodatkową zaletą jest pozytywny wpływ na wydajność, bo te bardziej zaawansowane usługi potrafią czasami zajmować sporo miejsca w RAM i niepotrzebnie wykorzystywać cykle procesora.
Zablokowanie nieużywanych portów
Jeśli mamy jakieś usługi, których nie możemy wyłączyć może chociaż możemy zablokować do nich dostęp? Niektóre usługi są niezbędne dla prawidłowego działania systemu operacyjnego, ale niekoniecznie muszą być wystawione do sieci. Blokując do nich dostęp na zaporze sieciowej upewniamy się, że nie zostaną one wykorzystane do tzw. przemieszczania poziomego (Lateral Movement), a więc propagacji atakującego po naszej sieci.
Alternatywnie, jeśli usługa potrzebna jest tylko dla lokalnej aplikacji, możemy skonfigurować ją tak, żeby nasłuchiwała jedynie na lokalnym interfejsie loopback.
Jeśli chcemy sprawdzić jakie usługi nasłuchują na naszym systemie zarówno w systemach Linux jak i Windows możemy do tego użyć komendy „netstat”.
Odinstalowanie zbędnych programów
Niektóre programy mogą posiadać własne podatności, które pozwolą atakującemu przełamać zabezpieczenia danego hosta. Dobrym przykładem są tu stacje robocze. Zastanówmy się czy nadal potrzebujemy na stacjach roboczych zainstalowanego Flasha, skoro już od dawna jest on nie wspierany przez producenta i nie są do niego wydawane żadne aktualizacje zabezpieczeń a każdy szanujący się producent oprogramowania już dawno powinien zrezygnować z jego wsparcia.
Wyłączenie zbędnych protokołów
Protokoły sieciowe również mogą posiadać podatności. Ma to szczególne znaczenie w przypadku sprzętu sieciowego, ale może też dotyczyć serwerów czy stacji roboczych. Dla przykładu, szukając po słowie kluczowym „IPv6” na stronie MITRE możemy znaleźć sporo podatności występujących w implementacji tego protokołu. Czy rzeczywiście potrzebujemy wsparcia IPv6? Aktualnie adaptacja tego protokołu nie jest jeszcze powszechna, szczególnie w sieci LAN. Jeśli nie pracujemy jako ISP (Internet Service Provider) prawdopodobnie nie mamy potrzeby jego wspierania, tym samym, jeśli wyłączymy jego wsparcie na Access Pointach Wifi zabezpieczymy się przed znanymi i jeszcze nieznanymi podatnościami w implementacji danego vendora.
Zmiana domyślnych poświadczeń
Często urządzenia czy oprogramowanie, które kupujemy trafia do nas z zestawem domyślnych poświadczeń. Ma to szczególne znaczenie w przypadku sprzętu IoT, które czasami nie mają przypisanego swojego administratora w organizacji. Czasami też osoba, która nimi zarządza nie jest świadoma zagrożeń związanych z tymi urządzeniami. Warto jest więc upewnić się, że nasze usługi i urządzenia mają zmienione poświadczenia na inne niż domyślne. Listę przykładowych domyślnych poświadczeń możecie znaleźć poniżej.
Jeśli urządzeń mamy dużo najlepiej jest przeszukać je w poszukiwaniu domyślnych poświadczeń w sposób automatyczny. Możemy w tym celu skorzystać z darmowych dostępnych narzędzi, którymi przeskanujemy sieć i spróbujemy zalogować się do znalezionych usług domyślnymi poświadczeniami (przykładowy opis) albo możemy skorzystać z profesjonalnych, płatnych rozwiązań. Jednym z rozwiązań, które potrafi przeprowadzić taką ocenę jest Forescout, którego oferujemy w ramach naszego portfolio rozwiązań bezpieczeństwa.
Ochrona danych w spoczynku i w transmisji
Warto zadbać także o ochronę danych, zarówno w spoczynku jak i w locie. Jeśli w ramach komunikacji wysyłane są dane wrażliwe zawsze wykorzystujmy protokoły szyfrowane, co zapewni nam tajność przesyłanych danych w przypadku ich podsłuchania przez osoby niepowołane. Zamiast http używajmy HTTPS, zamiast telnetu SSH, zamiast FTP użyjmy FTPS/SFTP.
Co do danych w spoczynku szczególne znaczenie ma zabezpieczenie laptopów i innych urządzeń mobilnych. To one najbardziej narażone są na kradzież czy zgubę, zadbajmy więc o to, żeby dane przechowywane na nich były szyfrowane i to najlepiej metodą Full Disk Encryption. W środowiskach Windows najlepiej sprawdzi się tutaj wbudowany BitLocker, natomiast na systemach Linux można użyć LUKS a dla Mac OS mamy FileVault.
Skąd brać wskazówki na temat utwardzania systemów?
W dzisiejszych czasach ciężko jest być ekspertem od wszystkich systemów operacyjnych, usług, baz danych, wszystkich vendorów sieciowych i chmur obliczeniowych. Tego jest po prostu za dużo. 😊 Na szczęście nie musimy być ekspertem od wszystkiego, żeby zwiększyć poziom bezpieczeństwa naszej organizacji, niezależnie od tego z jakich rozwiązań korzysta.
Naprzeciw temu wyzwaniu wychodzą autorzy publikacji w CIS (Center of Internet Security). Udostępniają oni świetne dokumenty, zwane „CIS Benchmark”, które w prosty sposób opisują jak krok po kroku możemy przeprowadzić hardening danego rozwiązania.
Dokumenty podzielone są per system operacyjny, per usługa, per dana baza danych i pisane są przez ekspertów w swojej dziedzinie. Są łatwe do zrozumienia a każdy rozdział zawiera listę opisującą istotne ustawienia, które warto zmienić w danym systemie operacyjnym np. Windows Server 2016 czy Red Hat Linux w wersji 6. „Benchmarki” dostępne są do pobrania. Do pobrania wymagana jest jednak rejestracja. Dokumenty są dosyć obszerne (na przykład wskazówki dotyczące Windows Server potrafią mieć ponad 1000 stron), ale często są podzielone w taki sposób, żeby łatwo można było wybrać poszczególne podrozdziały, które mają znaczenie w naszej organizacji.
[caption id="attachment_1990" align="aligncenter" width="437"] Przykładowy fragment dokumentu CIS Benchmark dla Exchange 2016[/caption]
Oczywiście warto tutaj zauważyć, że zazwyczaj nie mamy potrzeby wprowadzać wszystkich wskazanych w tych dokumentach ustawień. Zalecenia są podzielone na kategorie istotności a także opisany jest potencjalny wpływ zastosowania danego ustawienia. Możemy więc podjąć świadomą decyzję czy daną zmianę powinniśmy wprowadzić czy nie.
Mimo, że dokumenty napisane zostały w ten sposób, żeby zrozumieć je mógł każdy specjalista bezpieczeństwa, niekoniecznie ekspert w danym systemie, na pewno powinniśmy wprowadzać opisane tam zmiany po konsultacji z lokalnym specjalistą odpowiedzialnym za dane zagadnienie w naszej organizacji. Niektóre ustawienia mogą mieć wpływ na powiązane usługi i lepiej jest dmuchać na zimne zamiast później tłumaczyć się z awarii 😊 Oczywiście przed takimi sytuacjami powinien chronić nas dobrze prowadzony proces Zarządzania Zmianą (Change Control), ale zdaję sobie sprawę, że nie każda organizacja taki proces stosuje.
Co prawda zalecenia CIS Benchmark to najlepsze praktyki i z punktu widzenia bezpieczeństwa najlepiej byłoby wdrożyć je wszystkie, ale na koniec i tak musimy patrzeć na nie przez pryzmat naszych potrzeb, polityk i procedur w naszej organizacji.
Automatyzacja procesu sprawdzania zgodności z dobrymi praktykami
Jeśli chcemy zaoszczędzić czas i szybko chcemy sprawdzić czy nasze środowisko jest zgodne z dobrymi praktykami opisanymi w CIS Benchmark może ten proces zautomatyzować.
Z pomocą przychodzi nam tutaj protokół SCAP (Security Content Automation Protocol), który pozwala na automatyczne skanowanie systemów w poszukiwaniu ustawień niezgodnych z dobrymi praktykami. Na stronie projektu OpenSCAP można pobrać narzędzia, które pozwolą nam wykonać takie skanowanie zarówno na maszynie lokalnej jak i na maszynie zdalnej, na przykład wykorzystując SCAP Workbench. W oparciu o analizę możemy później wprowadzić odpowiednie zmiany, żeby zwiększyć poziom bezpieczeństwa naszego serwera czy stacji roboczej.
[caption id="attachment_1991" align="aligncenter" width="494"] Narzędzie SCAP Workbench pozwala nam przeskanować lokalną lub zdalną maszynę pod względem zgodności z dobrymi praktykami[/caption]
Samo narzędzie jednak nie wystarczy – do skutecznej oceny stanu zgodności z dobrymi praktykami potrzebujemy też definicji reguł w formacie SCAP. Tu możemy wykorzystać na przykład darmowe repozytorium udostępnione przez NIST.
Alternatywnie swoją wersję narzędzia wraz z gotowymi regułami oferuje sama organizacja CIS – dostępna zarówno w wersji darmowej jak i płatnej CIS CAT Lite/Pro. Polecam wypróbować i sprawdzić na ile nasza stacja robocza zgodna jest z najlepszymi praktykami. Po weryfikacji otrzymujemy przejrzysty raport w HTML pokazujący wyniki naszego testu.
[caption id="attachment_1992" align="aligncenter" width="605"] Przykładowy wynik sprawdzenia stacji roboczej Windows narzędziem CIS CAT Lite[/caption]
Bezpieczeństwo w chmurze
Jeśli korzystamy z usług chmurowych często producenci tych środowisk udostępniają nam gotowe narzędzia automatyzujące proces „utwardzania” naszych usług, zarówno, jeśli chodzi o rozwiązania IaaS, PaaS jak i SaaS. Dla przykładu takim rozwiązaniem dla chmury Azure jest „Security Center”. Dla uzyskania wszystkich korzyści musimy posiadać wersję płatną, ale już w bezpłatnej może ona dać nam sporo wskazówek na temat tego jak zabezpieczyć nasze środowisko.
[caption id="attachment_1993" align="aligncenter" width="605"] Rekomendacje Azure Security Center[/caption]
Oczywiście Security Center ma dużo więcej możliwości, ale nie jest to tematem tego artykułu.
Utworzenie wzorca
Żeby zapewnić skalowalność naszego przedsięwzięcia dobrze jest zredukować powtarzalne procesy. Dla przykładu, jeśli planujemy utwardzić kilkanaście czy kilkadziesiąt systemów typu Centos dobrze jest zacząć od stworzenia maszyny wzorcowej. Stwórzmy jeden podstawowy obraz maszyny w postaci utwardzonej z wyłączonymi niepotrzebnymi usługami, bez zbędnych aplikacji, niepotrzebnie otwartych portów i z bezpieczną konfiguracją. Potem dla każdego nowego systemu nie musimy zaczynać od nowa a wystarczy skorzystać z istniejącego obrazu. Na tej samej zasadzie można stworzyć baseline konfiguracji urządzeń sieciowych.
Jeśli chodzi o środowiska chmurowe, często dostępne są już gotowe, utwardzone obrazy maszyn wirtualnych. Dla przykładu gotowe maszyny zgodnie z wytycznymi CIS (CIS hardened images) możemy znaleźć w poniższej tabeli.
[caption id="attachment_1994" align="aligncenter" width="605"] Gotowe obrazy maszyn wirtualnych, stworzone przez CIS[/caption]
Podsumowanie
Hardening, czy po polsku „utwardzanie” systemów, to proces długotrwały i wymagający dużo pracy, do którego powinniśmy podejść ostrożnie. Najlepiej byłoby, gdyby był wykonywany przez dział bezpieczeństwa w bliskiej kooperacji z działem IT oraz przy wsparciu zarządu. To w jakim stopniu utwardzimy systemy powinno wynikać z naszych potrzeb, polityk i aktualnych priorytetów. W trakcie realizacji dobrze jest postępować zgodnie z procesem Zarządzania Zmianą, który zapewni nam, że odpowiednie osoby zostaną poinformowane o zmianie i że proces w razie wystąpienia awarii będzie możliwy do odwrócenia.
Mam nadzieję, że tym artykułem przybliżyłem w skrócie na czym może polegać hardening. Jeśli potrzebujesz pomocy w realizacji podobnego przedsięwzięcia nie wahaj się skorzystać z doświadczenia profesjonalistów, jakimi są Integrity Partners.
Skontaktuj się z nami!
Czytaj więcej