3.3. Bezpieczeństwo systemów sieciowych wprowadzenie Zagadnienia bezpieczeństwa odgrywają ważną rolę w codziennej pracy każdego systemu sieciowego, poczynając od pojedynczych komputerów osobistych aż do superkomputerów i dużych sieci rozległych. W przypadku sieci korporacyjnych zagadnienia te stają się kluczowe, gdyż nieautoryzowany dostęp do sieci i zawartych w niej zasobów korporacyjnych grozi wręcz katastrofalnymi następstwami. Trudno przeanalizować wszystkie skutki złamania zabezpieczeń siec korporacyjnych, jednak wśród najważniejszych z nich można wymienić: dostęp konkurencji do poufnych dokumentów wewnętrznych; utratę dokumentacji nowo opracowywanych produktów; przedostanie się do konkurencji szczegółów planowanych kampanii marketingowych; wykradnięcie bazy klientów firmy i ich danych osobowych; oszustwa finansowe, np. przesłanie z systemu ERP komunikatu EDI z poleceniem rozliczenia nieistniejącej faktury; szkody dla wizerunku firmy, np. w przypadku umieszczenia na jej witrynie internetowej informacji ją ośmieszających. Walka o bezpieczeństwo sieci korporacyjnych odbywa się na trzech głównych płaszczyznach: bezpieczeństwo systemów operacyjnych, baz danych i aplikacji, zapory sieciowe, zastosowanie kryptografii do zabezpieczenia transmisji i plików. 3.3.1. Bezpieczeństwo systemów operacyjnych, baz danych i aplikacji Można wyróżnić kilka najważniejszych technik używanych przez włamywaczy/szpiegów informatycznych najczęściej, takich jak: Łamanie haseł do systemu; częstym sposobem włamywania się do pierwszych systemów podłączonych do Internetu było przechwytywanie plików z zakodowanymi hasłami i deszyfrowanie ich za pomocą programów typy Johny the Ripper czy Crack. W chwili obecnej sposób ten jest już rzadko używany. Spoofing i Sniffing, czyli podsłuchiwanie i przechwytywanie transmitowanych danych. Hakerzy używający tych technik mogą przechwycić hasła lub przejmować sesje, podszywając się pod autoryzowanego użytkownika. 42
Ataki typu DOS (Denial of Service), polegające na blokowaniu pewnych usług lub unieruchomieniu całych systemów komputerowych. Ataki związane z przepełnieniem bufora. Jest to bardzo popularny rodzaj ataków polegający na wykorzystywaniu błędów w programach. Jeśli programiści tworzący oprogramowanie systemowe nie przyłożyli odpowiedniej wagi do sprawdzania poprawności i rozmiaru danych wejściowych, to jest możliwe takie skonstruowanie tych danych, że zawierają one również dodatkowe instrukcje wykonywane przez program. Dzięki temu mechanizmowi haker może przejąć kontrolę nad komputerem wykonującym błędnie napisany program. Tego typu błędy są wykrywane dość często, na szczęście najczęściej czas od wykrycia luki do stworzenia poprawki programu usuwającej ją nie przekracza kilku dni. Ataki typu code-injection (wstrzykiwanie, wrzucanie kodu) ze szczególnie popularnymi odmiana cross-site scripting (XSS) i SQL injection, polegające na tym, iż w polach formularzy wypełnianych na stronach internetowych (np. nazwach użytkowników i hasłach) wprowadzane są fragmenty kodu języka skryptowego (np. JavaScript) lub języka zapytań do baz danych Structured Query Language, a przy spełnieniu pewnych warunków i braku odpowiedniego filtrowania wprowadzanych danych mogą one być wykonane za pomocą wyświetlenia np. zakodowanego hasła dostępu do części zabezpieczonej serwisu lub dodania do bazy nowego użytkownika z uprawnieniami administratora. Podobnie jak w przypadku błędów typu przepełnienie bufora największą odpowiedzialność za ich unikanie ponosi programista systemu. 3.3.2. Zapory sieciowa Ściana (bądź zapora) ogniowa, czyli firewall, to pojęcie ze świata motoryzacyjnego, oznaczające część samochodu oddzielającą silnik od kabiny pasażera, zrobioną z niepalnych materiałów i znacznie zwiększającą bezpieczeństwo w przypadku pożaru. Jeśli przyjąć, że pakiety zawierające dane spreparowane przez potencjalnego włamywacza lub odwołujące się do niebezpiecznych usług wewnątrz sieci lokalnej (choćby tych, dla których można zdalnie przeprowadzić atak z przepełnieniem bufora) to rodzaj pożaru, a sieć korporacyjna jest odpowiednikiem kabiny samochodowej, to funkcja zapór sieciowych w przesyłaniu danych jest zbliżona do jej odpowiednika motoryzacyjnego. 43
Zapory sieciowe są bardzo istotnym elementem systemu bezpieczeństwa sieci. Ich najważniejsze zastosowania można podzielić na trzy grupy: filtr pakietów; serwer przekazujący (proxy); NAT/Masquerade. Filtr pakietów Podstawowym zastosowaniem firewalli jest decydowanie o tym, które pakiety mogą przejść z sieci wewnętrznej do Internetu i odwrotnie oraz z których usług sieciowych mogą korzystać użytkownicy. Taka funkcja nosi nazwę filtru pakietów (packet filter lub screening host). Zwykle filtrowanie odbywa się przez zdefiniowanie wielu reguł określających z/do jakich adresów możliwe jest łączenie z sieci lokalnej oraz z jakich usług (identyfikowanych tu przez numery portów sieciowych) mogą korzystać komputery w niej się znajdujące. Filtrowanie pakietów jest na tyle popularnym mechanizmem, iż powoli przestaje być uważane za funkcję zapory ogniowej, a raczej wchodzi w skład systemu operacyjnego, o czym świadczyć może fakt, iż praktycznie wszystkie dystrybucje nowoczesnych systemów operacyjnych mają wbudowane filtry pakietów. Rysunek 3.3 przedstawia taką usługę dla MS Windows XP. Ponadto coraz popularniejsze jest oprogramowanie komercyjne lub typu shareware oferujące funkcje prostego osobistego filtru pakietów dla systemu Windows. Przykładami takich rozwiązań są Symantec Endpoint Protection czy McAffe Personal Firewall. 44
Rys. 3.3. Ustawienia filtru pakietów w systemie MS Windows XP Źródło: opracowanie własne. Serwer przekazujący Innym sposobem ograniczenia możliwości ataków jest całkowite zablokowanie komunikacji między siecią korporacyjną a siecią zewnętrzną. Cały ruch z sieci korporacyjnej odbywa się w takiej sytuacji za pośrednictwem serwera przekazującego (proxy). Przykładowy scenariusz połączenia z zewnętrznym serwerem WWW i pobranie strony wygląda następująco: przesłanie polecenia ściągnięcia strony z komputera w sieci korporacyjnej do serwera przekazującego, nawiązanie połączenia serwera przekazującego z serwerem WWW, przesłanie wybranej strony WWW do serwera przekazującego, pobranie strony WWW przez komputer lokalny z serwera przekazującego. Warto zauważyć, że w takim scenariuszu w żadnym momencie nie jest nawiązywane połączenie komputera chronionego z sieci lokalnej z komputerem zewnętrznym. Istnieją dwie podstawowe klasyfikacje oprogramowania typu proxy: 45
1. Według uniwersalności: a) pośredniczące w dowolnej usłudze, czyli proxy uniwersalne, takie jak SOCKS 4, SOCKS 5, Microsoft Internet Security & Acceleration Server (ISA) czy Microsoft Proxy 2.0; b) proxy wyspecjalizowane, najczęściej typu http proxy i ftp proxy, np. SQUID. 2. Według korzystania z pamięci podręcznej: a) zapamiętujące przekazywane dane w dyskowej pamięci pomocniczej proxy typu CACHE, takie jak SQUID, ISA, MS Proxy 2.0; b) tylko pośredniczące SOCKS 4, SOCKS 5. Efektem ubocznym korzystania z proxy typu CACHE może być zwiększenie przepustowości sieci. Łatwo wyobrazić sobie scenariusz, gdy kilkadziesiąt stacji roboczych pobiera w krótkim okresie ten sam obiekt (stronę WWW, plik itp.). Jeśli pośredniczy w tym oprogramowanie typu SQIUD lub ISA Server, to faktycznie obiekt jest pobierany tylko przy pierwszym połączeniu, a pozostałe stacje robocze otrzymują kopię lokalną. Przy bardzo często spotykanej sytuacji, w której przepustowość sieci lokalnej jest kilkadziesiąt (lub nawet kilkaset) razy większa niż sieci zewnętrznej, oszczędność jest bardzo wyraźna. NAT/MASQUERADE Dodatkowym zabezpieczeniem komputerów w sieci lokalnej może być adresowanie ich prywatnymi numerami IP. Taki mechanizm nazywany jest Network Address Tranlation (NAT) lub Masquerade. Mechanizmy Network Address Translation i Masquerade, mimo iż pokrewne, nie są tożsame. Pierwszy z nich umożliwia tłumaczenie adresów prywatnych na pulę adresów publicznych, drugi zawsze korzysta z jednego adresu IP. Warto przypomnieć, iż mechanizm NAT jest dodatkowo receptą na brak publicznych adresów IP w sieci Internet (zob. pkt 3.1.) 3.3.3. Zastosowanie kryptografii Trzecią z płaszczyzn, na której toczy się walka z włamywaczami komputerowymi, jest kodowanie danych tak, żeby nawet po ich przechwyceniu były nieczytelne dla osób nieuprawnionych do ich odbierania. Tu w sukurs idzie matematyka, a głównie teoria liczb i algorytmy kryptograficzne symetryczne (tylko z kluczem prywatnym służącym zarówno do 46
szyfrowania, jak i do deszyfrowania), asymetryczne (z parą kluczy publicznym służącym do kodowania, i prywatnym służącym do dekodowania) oraz jednokierunkowe funkcje skrótu przypisujące fragmentom tekstu niepowtarzalne liczby szesnastkowe w taki sposób, aby na ich podstawie nie dało się ustalić tekstu przed przekształceniem. Najważniejsze algorytmy klucza prywatnego (symetryczne) to: Algorytmy historyczne: Cezara, Plyfaira, ROT-13; DES Data Encryption Standard najpopularniejszy algorytm symetryczny; seria permutacji, zastąpień i kombinacji bloku 64 bitów i 56-bitowego klucza; IDEA seria 8 operacji XOR, dodawania modulo 2 16 i mnożenia modulo (2 16 +1) bloku 64 bitów i 128-bitowego klucza; SkipJack; BlowFish. Wśród algorytmów klucza publicznego (asymetrycznych) warto wymienić: algorytm RSA opatentowany w 1977 r. przez Ronalda Rivesta, Adi Shamira i Leonarda Adelmana (stąd nazwa) algorytm RSA jest najbardziej popularnym w Europie i zyskującym coraz większą popularność w USA algorytmem klucza publicznego; algorytm ElGamala algorytm, którego bezpieczeństwo związane jest ze złożonością obliczania dyskretnych logarytmów; Algorytm DSA (Digital Signature Algorithm) amerykański standard kodowania podpisów cyfrowych jest algorytmem, który może być używany jedynie do tworzenia podpisów cyfrowych. DSA opiera się na elementach algorytmu ElGamala. Natomiast trzy najważniejsze rodziny funkcji skrótu to: CRC, MD5, rodzina algorytmów SHA SH-0,SH-1,SH-224,SHA-256,SHA-384,SHA-512. Najważniejsze zastosowania symetrycznych i asymetrycznych algorytmów kryptograficznych to podpis elektroniczny, SSL, PGP i szyfrowane tunele. 47
Podpis elektroniczny Podpis cyfrowy to Wynik przekształcenia kryptograficznego dokonanego za pomocą czyjegoś klucza prywatnego w celu potwierdzenia zawartości dokumentu. Aby efekt działania algorytmu kryptograficznego mógł zostać nazwany podpisem elektronicznym, musi spełniać cztery podstawowe funkcje: uniemożliwienie podszywania się innych pod daną osobę (autentyfikacja); zapewnienie wykrywalności wszelkiej zmiany w danych transakcji (integralność transakcji); zapewnienie niemożności wyparcia się podpisu przez autora; umożliwienie weryfikacji podpisu przez osobę niezależną. PGP Pretty Good Privacy to wymyślony w 1991 r. przez P. Zimmermana system kodowania poczty oparty na połączeniu protokołu asymetrycznego i symetrycznego. Listy są kodowane kluczem symetrycznym, natomiast sam klucz jest przesyłany do odbiorcy protokołem asymetrycznym. Każdy uczestnik systemu PGP ma swój klucz prywatny (służący do odczytywania listów, zabezpieczony hasłem) i publiczny, który udostępnia innym. Jeśli chcemy wysłać list, które ma odczytać wybrana osoba, kodujemy go kluczem publicznym tej osoby, co zapewnia, że ktoś, kto niema klucza prywatnego odpowiadającego kluczowi publicznemu, nie jest w stanie dokonać deszyfrowania. SSH/SSL Zastosowanie szyfrowania z kluczem publicznym pozwala zarówno na utajnienie przesyłanych przez sieć danych (a więc zabezpiecza przed przechwyceniem np. numeru karty kredytowej drogą podsłuchu), jak i dzięki podpisowi elektronicznemu na wzajemne uwierzytelnienie uczestników transakcji. Jako pierwsza wykorzystało to firma Netscape, wprowadzając już w pierwszych wersjach swojej przeglądarki WWW protokół o nazwie SSL. W zamierzeniach miał być stosowany do szyfrowania połączeń internetowych dowolnego typu, ale w chwili obecnej używany jest głównie w odniesieniu do WWW. Obecnie SSL dostępny jest we wszystkich ważniejszych przeglądarkach WWW i na serwerach WWW Apache, IIS, Netscape. Oprócz bezpiecznego przeglądania stron WWW ssl może służyć do bezpiecznej zdalnej pracy na komputerze. Trzecim zastosowaniem SSL jest Stunnel (http://www.stunnel.org/ ) służący do bezpiecznego przesyłania haseł pocztowych w protokole POP3. 48
Szyfrowane tunele Szyfrowane tunele, nazywane również wirtualnymi prywatnymi sieciami (VPN Virtual Private Network) pozwalają na bezpieczne połączenie za pomocą Internetu dwóch fizycznie rozdzielonych sieci i pracę tak jak w jednej sieci wewnętrznej (intranetowej). Najpopularniejsze protokoły realizujące funkcje szyfrowanych tuneli to: IPsec, PPTP, OpenVPN, L2TP, Hamachi. Istnieją trzy najważniejsze odmiany sieci VPN: bezpieczne połączenia VPN (secure VPN) cały ruch sieciowy musi być szyfrowany i uwierzytelniany, standardy zabezpieczeń muszą być uzgodnione przez wszystkie strony korzystające z bezpiecznego połączenia, nikt oprócz stron korzystających z sieci nie może mieć wpływu na ustalenia dotyczące zabezpieczeń w sieci; zaufane połączenia VPN (trusted VPN) nikt inny niż zaufany dostawca VPN nie może mieć wpływu na tworzenie lub modyfikację trasy w sieci, zasady adresowania i ustalania marszrut sieciowych (routingu) w sieci muszą być ustalone, zanim sieć jest utworzona, i nie mogą być zmieniane; hybrydowe połączenia VPN (hybrid VPN) łączące cechy obu poprzednich rozwiązań. Na przykład w sytuacji, gdy wydzielony dział firmy, pracujący nad koncepcjami nowych produktów, w celu dodatkowej ochrony przed wyciekiem informacji dodatkowo wprowadza sieć szyfrowaną, bazując na zaufanym połączeniu VPN funkcjonującym w całym przedsiębiorstwie (we wszystkich jego lokalizacjach). 49