Bezpieczeństwo sieci komputerowych

Maja Górecka-Wolniewicz

Uczelniane Centrum Informatyczne, Uniwersytet Mikołaja Kopernika, Toruń


Z dnia na dzień rośnie liczba użytkowników Internetu. Jednocześnie zwiększa się ilość i różnorodność usług sieciowych. Taka tendencja sprawia, że coraz szersze są możliwości w zakresie edukacji, badań naukowych, a także coraz łatwiej jest prowadzić firmy, nawiązywać kontakty handlowe itp. Internet pomału zmienia nasze życie, chcemy za jego pomocą robić zakupy, obsługiwać swoje konto w banku, załatwiać wszelkie formalności w urzędach. Bardzo różnicuje się poziom zaufania wymagany od sieci komputerowych w celu niezawodnego świadczenia usług.

Nie sposób nie zauważać bardziej pesymistycznych aspektów dynamicznego wzrostu popularności Internetu - coraz częściej dają o sobie znać zdarzenia wskazujące na nieprawidłowe stosowanie sieci komputerowej, jej nadużycie. Pojawia się nowy problem - konieczność zagwarantowania bezpieczeństwa w sieciach komputerowych.

Wymaganiem stawianym bezpiecznym sieciom komputerowym jest ochrona danych transmitowanych w sieci, natomiast bezpieczeństwo stacji komputerowej obejmuje wszelkie aspekty związane z takim zorganizowaniem środowiska pracy komputera, by były chronione gromadzone na nim dane i zasoby programowe oraz by uruchomienie programu nie groziło uszkodzeniem systemu operacyjnego, czy wymazaniem danych z dysku. Obecnie, gdy stacje komputerowe są integralnym elementem sieci komputerowej, intranetu lub Internetu, coraz częściej zaciera się granica między obydwoma typami bezpieczeństwa. Dobrym przykładem jest zagrożenie wprowadzane przez wirusy komputerowe. Wirus może dostać się do systemu komputerowego za pomocą dyskietki - wówczas mówimy o naruszeniu bezpieczeństwa komputera. Istnieje jednak coraz więcej wirusów (zwanych popularnie robakami), które instalują się poprzez Internet, np. za pomocą e-maila, a na dodatek następnie poprzez Internet rozprzestrzeniają się na inne stacje.

Zaawansowane aplikacje, serwisy sieciowe, czy programy użytkowe dla zapewnienia swojej uniwer-salności nie mogą ignorować zagrożeń występujących w sieciowym środowisku pracy. Istotna jest również rola użytkownika, który powinien zdawać sobie sprawę z konsekwencji architektury, na jakiej bazuje Internet. Typowo dane są przekazywane w sieci "otwartym tekstem", czyli w postaci niezaszyfrowanej (oczywiście zwykłe dane są obudowywane dla celów transmisji informacjami standardowy-mi dla protokołów warstw sieciowych uwikłanych w proces dostarczenia danych). Stwarza to potencjalne zagrożenie, że takie dane zostaną przechwycone i dostaną się w niepożądane ręce. Podstawowe niebezpieczeństwa, które trzeba wziąć pod uwagę, to podsłuchiwanie informacji przesyłanej przez sieć, przechwycenie danych i ich zniszczenie lub zniekształcenie przed dostarczeniem do odbiorcy, ale również fałszywa prezentacja jednej ze stron w celu otrzymania danych przewidzianych dla innego odbiorcy, albo wyparcie się faktu nadania lub odbioru danych.

W prawidłowo administrowanych systemach komputerowych zwykły użytkownik nie może śledzić informacji krążącej w sieci; chęć wykonania takiej operacji wiąże się z potrzebą nabycia uprawnień nadzorcy, co oznacza po prostu włamanie się do systemu. Zadaniem administratora jest takie zarzą-dzanie systemem, by zminimalizować zagrożenia polegające na nieuprawnionym pozyskaniu dostępu do funkcji nadzorcy. Wystarczy spojrzeć do sekcji Bugtraq strony http://www.security focus.org/ , czy do Advisories pod adresem http://www.cert.org/advisories/, by się przekonać, jak wielkie wyzwanie stoi przed osobami administrującymi sieciowymi systemami operacyjnymi. Niestety, aż mnoży się od tzw. dziur w systemach, które upraszczają hackerom wdarcie się do systemu.

Bezpieczeństwo sieci komputerowych to problem wieloaspektowy i bardzo trudny. Dużo łatwiej sformułować wymagania i postawić sobie cel. O wiele trudniej osiągnąć pożądany skutek. Nie istnieją jednoznaczne miary poziomu bezpieczeństwa, na domiar złego zasady bezpieczeństwa, które wpro-wadzamy obecnie mogą okazać się niewystarczające w sytuacji, która pojawi się nawet w bliskiej przyszłości. Internet nie jest środowiskiem przewidywalnym. Zależności między różnymi składowymi sieciowego środowiska pracy są tak duże, że nie sposób z góry ustalić, jakie są wszystkie potencjalne niebezpieczeństwa. Trzeba jednak zrobić wszystko, by wprowadzone techniki w sposób najlepszy (best efford, maksimum dobrej woli) chroniły sieciowy system komputerowy.

Systemy wielodostępne

Nowoczesne systemy komputerowe, z których obecnie powszechnie korzystamy cechuje wielodostępność. Oznacza to, że na jednym komputerze może jednocześnie pracować wielu użytkowników. Użytkownik, aby rozpocząć pracę w systemie, musi uwierzytelnić swoją tożsamość, czyli przejść przez procedurę logowania, podczas której w typowej sytuacji posługuje się swoim identyfikatorem i hasłem. Po zalogowaniu jest jednoznacznie identyfikowany w systemie i dysponuje własną przestrzenią dyskową. Do reszty zasobów systemu ma ograniczony dostęp, co najwyżej może odczytywać pewne dane. Standardowy proces logowania za pomocą pary danych identyfikator/hasło (uwierzytelnianie proste, simple authentication) jest jedną z podstawowych przyczyn zagrożeń bezpieczeństwa. Najczęściej użytkownik loguje się do stacji zdalnej, co oznacza, że poufne dane potrzebne do jego uwierzytelnienia w systemie są przekazywane przez sieć komputerową. Jest więc potencjalna możliwość podsłuchania danych i przechwycenia hasła. Często nie są jednak potrzebne tak skomplikowane techniki, gdyż właściciele kont na komputerach wielodostępnych niewystarczająco dbają o zabezpieczenie się przed atakami - wybierane hasła są zbyt proste i liczne programy, posługując się specjalnymi słownikami, potrafią je złamać. Przejęcie danych uwierzytelniających jakiegoś użytkownika wystarcza, by intruz uzyskał dostęp do obcego systemu, a od tego tylko krok, by dorobił się praw nadzorcy - musi tylko znaleźć odpowiedni exploit, czyli specjalny program wykorzystujący słabości systemu operacyjnego. Przestrzeganie zasad dotyczących haseł (obejmujących sposób ich doboru, przechowywania, posługiwania się hasłem, ustalenie częstotliwości zmiany haseł; polecam przewodnik dostępny pod adresem http://www.securityfocus.com/ infocus/1537) bardzo pomaga w zwiększeniu stopnia bezpieczeństwa systemu. Drugim, od razu narzucającym się rozwiązaniem, jest ulepszenie techniki logowania, tak by dane należące wyłącznie do właściciela konta, nie były przekazywane przez sieć komputerową, której nie możemy zaufać (uwierzytelnianie silne, strong authentication). Takie podejście stosuje np. technika SSH (Secure Shell), coraz popularniejsza metoda dostępu do odległego komputera sieciowego, na którym mamy konto.

Usługi sieciowe

Zmierzając do zwiększenia bezpieczeństwa sieci komputerowej musimy pamiętać o właściwej konfiguracji usług oferowanych użytkownikom. Złym nawykiem jest nadmierna swoboda i liberalność w tym zakresie. Należy pamiętać, że każda otwarta usługa, to otwarty dostęp do portu na serwerze. Takiego portu włamywacz może użyć do unieszkodliwienia albo całego systemu, albo jakiejś aplikacji. Popularny jest atak denial of service, masowe zarzucanie komputerów zleceniami, prowadzące do zablokowania usługi, a nawet awarii pracy systemu. Poza tym należy szybko reagować na informację o zdiagnozowanych niedociągnięciach w oprogramowaniu serwerów. Drugą istotną sprawą jest definiowanie zasad korzystania z usług sieciowych: jaki użytkownik ma do nich prawo, jakie połączenia są akceptowane (z jakiego źródłowego adresu IP). Istnieje oprogramowanie wspomagające uszczelnianie systemu. Bardzo przydatnym narzędziami są programy tcpwraper czy tcpserver, które potrafią filtrować ruch wchodzący według ustalonych reguł, z drugiej strony dzięki nim powstają dzienniki (logs) rejestrujące nieuprawnione próby dostępu do serwera. Jeśli zamiast standardowego programu inetd, domyślnie instalowanego w takich systemach jak Solaris, użyjemy ulepszonego serwera pełniącego funkcję nadzorcy usług sieciowych - xinetd, to bez potrzeby używania programu tcpwraper będzie można egzekwować reguły dostępu do usług, ograniczać liczbę przychodzących połączeń, wykluczać dostęp do usług na podstawie czasu dnia, eliminować połączenia przychodzące z określonego adresu lub połączenia do określonej usługi.

Systemy wykrywania infiltracji/włamania

Istotnym komponentem narzędzi administratora są obecnie systemy wykrywania infiltracji lub włamania (Intrusion Detection Systems, IDSs). Dostępna jest duża różnorodność takich narzędzi, różniących się funkcjonalnością oraz stosowanymi metodami pracy. Nie jest łatwo podjąć decyzję, jaki system wybrać. Z nazwy już wynika, że zadaniem narzędzi IDS jest wykrywanie ataków oraz prób niewłaściwego wykorzystania stacji komputerowej oraz powiadamianie o wszelkich tego typu problemach właściwe osoby. Systemów służących do wykrywania infiltracji nie należy identyfikować ze ścianami ogniowymi (firewalls). IDS to zestaw narzędzi umożliwiających śledzenie zdarzeń w systemie i informujących o nadużyciach. Natomiast firewall bywa porównywany do ogrodzenia wokół domu - służy do ochrony systemu komputerowego, a raczej całej sieci lokalnej przed potencjalnymi intruzami, może blokować wszystko co niedozwolone zarówno na wejściu, jak i na wyjściu. Systemy wykrywania realizują trzy operacje: monitorują, wykrywają i reagują na wypadki nieautoryzowanego dostępu. Zdarzenia podlegające infiltracji definiuje wewnętrzna polityka bezpieczeństwa. Niektóre narzędzia IDS nie tylko wykrywają, ale również automatycznie reagują na atak, np. dopisując do tablic określających zasady ograniczania dostępu odpowiednie wpisy, by zapobiec podobnym wypadkom w przyszłości, czy blokując dostęp do konta. Z wiarygodnych źródeł wynika, że 80-85% incydentów z zakresu bezpieczeństwa pochodzi z wewnętrznej sieci, a znikoma reszta wiąże się z atakiem z zewnątrz (atak typu denial of service, czy próby penetracji infrastruktury sieci). Narzędzia wykrywające infiltrację muszą reagować na oba źródła zagrożenia bezpieczeństwa. Wśród implementacji IDS rozróżnia się dwa podstawowe typy: systemy przeznaczone dla stacji komputerowych (host-based IDS) oraz systemy nakierowane na sieć komputerową (network-based IDS). Pierwszymi rozwijanymi produktami były narzędzia IDS przeznaczone dla stacji komputerowych. Ich praca przebiega w oparciu o znany poprawny, oryginalny stan zasobów systemowych komputera. Dokonują okresowego przeglądu istotnych plików systemowych i powiadamiają o wszystkich niespójnościach. W ten sposób można wykryć atak wewnętrzny, czy nieautoryzowaną modyfikację zasobów. Wadą takiego podejścia, w szczególności, gdy w sieciach lokalnych pojawia się coraz większa liczba stacji, jest konieczność skrupulatnego śledzenia zdarzeń wszystkich komputerach stanowiących potencjalne zagrożenie bezpieczeństwa. Systemy nakierowane na sieć komputerową analizują pakiety sieciowe (packet sniffing) przesyłane w sieci i na tej podstawie wykrywają nietypowe sytuacje (np. porównując przekazywane dane z empirycznymi wzorcami). Takie systemy są ze swojej natury rozproszone i ich zasięg jest szerszy. Mogą wykryć próbę nieautoryzowanego dostępu z zewnątrz (logowanie nie zakończone sukcesem), zmasowany atak na konkretną usługę, czy zdarzenia polegające na zapychaniu dostępnego pasma. Oczywiście, ta technika nie sprawdza się, gdy przesyłane dane są zaszyfrowane, a również jeśli mamy do czynienia z bardzo szybkim nośnikiem.

Na stronie http://www.securityfocus.com/infocus/1520 można znaleźć więcej informacji na temat systemów wykrywania infiltracji.

Kryptografia a bezpieczeństwo sieci komputerowej

Do podstawowych technik służących do wzmocnienia poziomu bezpieczeństwa należą metody kryptograficzne. Początkowo była dostępna wyłącznie kryptografia symetryczna. Ta technika (polegająca na szyfrowaniu danych na czas transmisji lub przechowywania na dysku, a następnie deszyfrowaniu tym samym kluczem, którym zostały zaszyfrowane) stwarza spore ograniczenia. Zasadniczą trudnością jest konieczność dysponowania takim samym kluczem przez dwie strony biorące udział w komunikacji - pojawia się więc problem, jak przekazać taki klucz partnerowi, jak chronić klucz przed obcymi, w jaki sposób dyscyplinować użytkowników, by nie używali tego samego klucza symetrycznego do komunikacji z wieloma osobami (co zdecydowanie zmniejsza wiarygodność klucza). Szerokie możliwości w zakresie ochrony sieciowych systemów komputerowych otworzyła kryptografia asymetryczna. Szyfry asymetryczne korzystają z dwóch różnych, ale zależnych od siebie kluczy. Jeden z tych kluczy jest nazywany publicznym, gdyż może być rozgłaszany, przesyłany w sieci, magazynowany i nie stanowi to żadnego zagrożenia dla bezpieczeństwa drugiego klucza pary, prywatnego, który musi być ściśle chroniony (gdyż nie jest możliwe, by ktoś inny poza twórcą klucza wyznaczył klucz prywatny na podstawie klucza publicznego). Stąd bierze się nazwa techniki: kryptografia klucza publicznego (Public Key Cryptography, PKC). Ogromną zaletą kryptografii klucza publicznego jest możliwość zastosowania obu kluczy pary zarówno do szyfrowania, jak i deszyfrowania. Drugą ważną własnością jest rozszerzony zakres zastosowań, zaoferowanie innych usług niż szyfrowanie. Wadą jest mniejsza wydajność niż w przypadku kryptografii symetrycznej i stosunkowo rozbudowana implementacja. Za pomocą kryptografii klucza publicznego można nie tylko wysyłać zaszyfrowane dane (wówczas do zaszyfrowania używamy klucza publicznego adresata, a do rozszyfrowania jest niezbędny jego klucz prywatny odbiorcy). Technika ta pozwala również złożyć podpis cyfrowy pod komunikatem, udowadniający wiarygodność źródła danych (w tym celu komunikat jest poddawany działaniu jednokierunkowej funkcji skrótu, hash function, co daje, niezależnie od rozmiaru komunikatu, ciąg znaków o stałym rozmiarze, który w następnym kroku jest szyfrowany kluczem prywatnym nadawcy). Weryfikacji podpisu może dokonać każdy, kto zna klucz publiczny nadawcy. Pozytywna weryfikacja podpisu daje pewność, że komunikat nie został sfałszowany, wysłała go faktycznie osoba wskazywana jako nadawca. Z podpisem cyfrowym łączy się kolejna usługa kryptografii klucza publicznego - integralność danych. Opisany powyżej sposób może służyć nie tylko uwierzytelnieniu nadawcy, ale również daje gwarancję, że wysłane dane nie zostały po drodze przejęte i zmienione. Pewność taką można mieć dlatego, że jednokierunkowa funkcja skrótu nie może wyprodukować tej samej wartości na podstawie dwóch różnych ciągów znaków. Z powodu stosunkowo słabej wydajności algorytmów asymetrycznych często stosuje się kryptografię klucza publicznego wyłącznie do zainicjowania poufnej komunikacji: jeden z partnerów generuje klucz tajny, szyfruje go kluczem publicznym adresata i wysyła, odbiorca rozszyfrowuje klucz tajny swoim kluczem prywatnym, następnie klucz tajny (zwany kluczem sesji) jest stosowany do szyfrowania symetrycznego przekazywanych danych przez czas trwania sesji (jest więc kluczem krótkotrwałym).

Jeżeli klucz publiczny ma być podstawą bezpiecznej komunikacji, to musi być wiarygodny. W tym celu wprowadza się specjalne urzędy certyfikacyjne, które są instytucjami gwarantującymi zaufanie. Urząd certyfikacyjny poświadcza swoim podpisem klucz publiczny i właśnie ten poświadczony klucz publiczny, czyli certyfikat, jest jednym z istotnych elementów bezpiecznej komunikacji. Aby ułatwić użytkownikowi certyfikację klucza urzędy certyfikacyjne zazwyczaj tworzą hierarchię zintegrowaną ze strukturą organizacyjną jednostki. Powstaje tzw. infrastruktura kluczy publicznych, Public Key Infrastructure, PKI, której zadaniem jest świadczenie wiarygodnej usługi certyfikacji, utrzymywanie repozytoriów certyfikatów, odwoływanie certyfikatów, które utraciły wiarygodność, prowadzenie list odwołanych certyfikatów, itp.

PKI to obecnie istotny komponent bezpiecznego środowiska pracy. Coraz więcej aplikacji sieciowych korzysta z technik kryptograficznych. Powstały specjalne protokoły wspomagające współpracę z infrastrukturą kluczy publicznych, np.: bezpieczna poczta elektroniczna realizowana w oparciu o protokół S/MIME (Secure/Multi-purpose Internet Mail Extensions), bezpieczny dostęp do serwera WWW realizowany w oparciu o protokół Secure Sockets Layer lub Transport Layer Security, bezpieczne wirtualne sieci prywatne (Virtual Private Network, VPN) realizowane w oparciu o protokół IPSec, bezpieczna usługa DNS (Domain Name Service) działająca w oparciu o techniki kryptografii asymetrycznej). We wszystkich tych zastosowaniach kryptografia asymetryczna jest stosowana do nawiązania komunikacji między klientem a serwerem; serwer posługuje się swoją parą kluczy: certyfikat, klucz prywatny. Od klienta, w zależności od kontekstu pracy aplikacji oraz od wprowadzonego poziomu ochrony może być wymagane przedstawienie się za pomocą certyfikatu. Na ogół w następnej fazie po uwierzytelnieniu, czyli do samego przesyłania danych między klientem i serwerem jest stosowana kryptografia symetryczna.

Opisana powyżej technika pracy daje dwie ważne korzyści: dostęp do usług serwera może być autoryzowany oraz dane przekazywane między klientem i serwerem są szyfrowane.

Wdrożenie infrastruktury kluczy publicznych umożliwia również implementowanie rozwiązań, w których użytkownik posługuje się kluczem prywatnym oraz certyfikatem w procesie uzyskiwania dostępu do usług sieciowych (np. przy logowaniu do systemu, dostępie do skrzynki pocztowej, czy dostępie do chronionych danych serwera WWW). Powstają też systemy pozwalające danemu użytkownikowi korzystać z różnych usług sieciowych (do których wcześniej przyznano mu uprawnienia) po jednokrotnym zalogowaniu (single sign-on).

Przed technikami pracy przedstawionymi w tej części artykułu nie sposób będzie uciec w najbliższej przyszłości. Już obecnie dużo serwerów pocztowych oraz WWW stosuje ochronę danych za pomocą protokołu TLS/SSL. Zadaniem ich implementatorów usług oraz programów dostępowych jest takie przygotowanie środowiska pracy, by każdy użytkownik, również mało zaawansowany, potrafił z tych narzędzi korzystać.

W tym artykule zdołałam omówić zaledwie podstawowe zagadnienia dotyczące bezpieczeństwa sieci komputerowej. Osoby zainteresowane bardziej szczegółowymi aspektami tego tematu odsyłam do licznych książek, które są dostępne na rynku.

O Autorce

Pani Maja Górecka-Wolniewicz jest kierownikiem Zespołu Systemów Sieciowych w Uczelnianym Centrum Informatycznym Uniwersytetu Mikołaja Kopernika w Toruniu. Zajmuje się między innymi zagadnieniami związanymi z usługami katalogowymi (LDAP, X.500) oraz systemami bezpieczniej wymiany informacji.

e-mail: Maja.Wolniewicz@uni.torun.pl.