Bezpieczeństwo w sieci Internet

Szymon Sokół, AGH Kraków

Referat był wygłoszony na konferencji "Internet w Polsce", Warszawa, 22.09.1995.

Sieć Internet w swojej pierwotnej postaci, podobnie jak i system operacyjny Unix, miała służyć przed wszystkim środowisku akademickiemu. W ostatnich latach, ze względu na dynamiczny rozwój Internetu i jego wykorzystywanie m.in. do celów komercyjnych stało się jasne, że niezbędne jest położenie większego niż do tej pory nacisku na kwestie bezpieczeństwa.

Dla zapobiegania naruszeniom bezpieczeństwa komputerów, informowania o znanych zagrożeniach i sposobach ich unikania, pomocy przy usuwaniu skutków ewentualnych naruszeń i koordynowania odpowiednich działań międzyinstytucjonalnych powołano w USA organizację o nazwie CERT (Computer Emergency Response Team). Organizacja ta wydaje m.in. biuletyny rozpowszechniane w sieci informujące o nowo poznanych zagrożeniach. Posiada swoje odpowiedniki w wielu krajach. Jak dotąd, nie istnieje polski odpowiednik CERT. Stworzenie go jest obecnie jednym z celów stowarzyszenia "Polska Społeczność Internetu".

Zagrożenia bezpieczeństwa w sieci Internet można ogólnie podzielić na następujące klasy:

Techniki, jakimi można posłużyć się dla osiągnięcia ktoregoś z w/w celów, opierają sie przede wszystkim na wykorzystaniu:

W każdej z powyższych kategorii można podać liczne przykłady, jak również sposoby zabezpieczania się przed tymi metodami. I tak np. mechanizmy TCP/IP pozwalają na fałszowanie adresu IP nadawcy pakietu - komputer do którego adresy te docieraja, interpretuje je jako wysłane przez inny komputer, niż w rzeczywistości miało to miejsce. Sposobem na zabezpieczenie się przed taką formą ataku jest rezygnacja z usług sieciowych, które opierają autentykację (sprawdzenie tożsamości użytkownika) na jego adresie IP (np. NFS w wersji podstawowej), lub ograniczenie ich do lokalnej podsieci (ukrytej za routerem filtrującym "podejrzane" pakiety).

Protokół TCP/IP nie zawiera wbudowanych mechanizmów szyfrowania przesyłanych danych. Umożliwia to przechwytywanie danych przez osoby trzecie, zwłaszcza w przypadku mediów transmisyjnych takich jak Ethernet, funkcjonujących na zasadzie magistrali. Czynione są obecnie próby włączenia szyfrowania (enkrypcji) danych jako opcji w nowej wersji protokołu IP (IPv6); tymczasowym rozwiązaniem jest stosowanie szyfrowania nie w warstwie transmisyjnej (TCP/IP), lecz na poziomie aplikacji. Przykładowe rozwiązania zostaną omówione poniżej.

Najczęstszym sposobem naruszenia bezpieczeństwa w sieci jest pozyskanie dostępu do cudzego konta na komputerze pracującym w systemie wielodostępnym (np. Unix) przyłączonym do sieci Internet. Cel ten można osiagnąć między innymi wykorzystując błędy w oprogramowaniu systemowym. Typowym przykładem jest błąd odkryty niedawno m.in. w systemie AIX (wersja Unixa firmy IBM), umożliwiający dowolnemu użytkownikowi na dowolnym komputerze w sieci Internet dostęp do konta "root" (tzn. administratora systemu) każdego komputera w sieci Internet pracującego pod systemem AIX. Tego typu naruszenie bezpieczeństwa tradycyjnie określa sie "włamaniem" do komputera. Włamanie na konto administratora jest szczególnie niebezpiecznym przypadkiem, umożliwia bowiem włamywaczowi dostęp do danych wszystkich użytkowników danego komputera, a także ułatwia zatarcie w systemie śladów włamania.

Spośród wersji Unixa eksploatowanych obecnie w Uczelnianym Centrum Informatyki AGH każda (DEC Ultrix, Sun SunOS 4.1.3 i 5.4, HP HP-UX 9.05, SGI IRIX 6.0, SCO 3.2, Linux 1.1.90) zawierała co najmniej jeden błąd umożliwiający dowolnemu użytkownikowi lokalnemu (tzn. korzystającemu z konta na danym komputerze) włamanie na konto "root". Ponadto, 5 z w/w systemów zawierało błędy pozwalające na włamanie osobie nie mającej konta na danym komputerze (włamanie zdalne).

Producenci poszczególnych systemów operacyjnych na ogół udostępniają (często za pośrednictwem sieci Internet) poprawki do swoich produktów, usuwające poszczególne błędy. Nawet jednak po instalacji wszelkich poprawek (ang. "patch") nie ma całkowitej gwarancji "szczelności" systemu. Ponadto, nawet system nie zawierający błędów sensu stricto, może zostać błędnie skonfigurowany przez instalatora lub administratora. Dla przykładu, system SunOS 4.1.x bezpośrednio po instalacji zawiera znak "+" w pliku /etc/hosts.equiv, co umożliwia dostęp (bez znajomości hasła) do dowolnego konta na tej maszynie posiadaczowi konta o tej samej nazwie na dowolnej innej maszynie. Pierwszą czynnością instalującego system powinna być zmiana zawartości lub usunięcie tego pliku - niestety, nie każdy zdaje sobie z tego sprawę.

Podobne działanie ma plik .rhosts w katalogu użytkownika - pozwala wchodzić bez podania hasła wszystkim użytkownikom wymienionym w tym pliku w postaci par "użytkownik adres_komputera". Wiążą się z tym dwojakie zagrożenia:

Pomocą w wyszukiwaniu znanych błędów i luk w konfiguracji służy szereg programów dostępnych w sieci, m.in. COPS, TIGER i SATAN. Sporządzają one szczegółowe raporty o potencjalnych furtkach umożliwiających włamywaczowi przeniknięcie do systemu.

Kolejnym cenionym przez administratorów narzędziem jest pakiet TCP_wrappers Wietsego Venemy. Pakiet ten umozliwia selektywne traktowanie żądań obsługi nadchodzacych do serwera w różnych protokołach. Np. możliwe jest skonfigurowanie go tak, aby usługi Telnet i Rlogin - umożliwiające zdalną pracę interakcyjną - były dostępne tylko dla użytkowników z wybranych maszyn (np. w obrębie lokalnej domeny DNS czy podsieci IP). Ponadto, TCP_wrappers generuje szczegółowe raporty (logi) odnośnie połączeń do danego servera: skąd (ewentualnie kto, jeśli komputer zdalny udostępnia tę informację), kiedy, i jakiej usługi żądano (Telnet, Rlogin, FTP, NNTP, Gopher, Finger itd.itp.). Administrator dzięki temu może wcześnie zauważyć wiele działań potencjalnych włamywaczy, a jeśli już dojdzie do włamania, łatwiej jest odszukać sprawców.

Usuwanie skutków włamania jest jednym z najbardziej niewdzięcznych zadań administratora, głównie ze względu na konieczność upewnienia się, czy nie zostały wprowadzone do systemu modyfikacje umożliwiające włamywaczowi powtórne wejście (tzw. backdoor). Program TRIPWIRE ułatwia sprawdzenie czy newralgiczne pliki systemowe nie zostały zmodyfikowane, utrzymując (w bezpiecznym miejscu) listę sum kontrolnych tych plików i okresowo sprawdzając zgodność. Niestety, w przypadku gdy włamywacz okaże się wandalem, często jedyna deską ratunku pozostaje odtworzenie systemu z taśm - stad konieczność regularnego tworzenia kopii bezpieczeństwa (backup).

Brak świadomości wśród użytkowników jest prawdopodobnie najczęstszą przyczyną naruszeń bezpieczeństwa. W większości systemów wielodostępnych, włącznie z Unixem, dostęp do konta chroniony jest indywidualnym hasłem użytkownika. Stosowanie trywialnych haseł (łatwych do odgadnięcia, np. użytkownik Jan Kowalski, hasło: "janek") jest przyczyna znakomitej większości włamań - ok. 80% znanych mi z autopsji przypadków. Istnieją specjalizowane programy (np. "Crack") służące do zautomatyzowanego (z użyciem słownika) odgadywania haseł. Dość skutecznym zabezpieczeniem jest modyfikacja oprogramowania systemowego (w Unixie: komendy passwd) tak, aby uniemożliwiało użytkownikowi wprowadzenie nazbyt prostego hasła. Funkcję taką spełnia np. program "npasswd" czy "ANLpasswd". Nawet jednak najlepsze hasło nie zabezpiecza przed możliwością jego przechwycenia przez osoby postronne, np. z użyciem tzw. "Ethernet sniffera" - narzędzia umożliwiającego podgląd danych transmitowanych siecią Ethernet. Przychodza tu z pomoca:

Szyfrowanie odgrywa bardzo ważna rolę z punktu widzenia bezpieczeństwa. Odpowiednio mocne (tzn. nie dające się złamać metodami kryptoanalitycznymi) algorytmy znane są już od dawna; ich popularność w Internecie rośnie stopniowo, główne przyczyny ograniczające ich stosowanie to:

Obecnie szereg programów wykorzystujących mocne algorytmy szyfrowania (np. potrójny DES czy IDEA) można znaleźć w sieci Internet.

Szczególną karierę wśród nich robi program o nazwie PGP (Pretty Good Privacy), którego głównym przeznaczeniem jest szyfrowanie poczty elektronicznej (e-mail). Program ten, opracowany przez Phila Zimmermanna, opiera się na tzw. metodzie kluczy publicznych, a konkretnie na algorytmie RSA (Rivest-Shamir-Adleman). Metoda kluczy publicznych pozwala rozwiązać typowy w przesyłaniu tekstów zaszyfrowanych problem: jak przekazać adresatowi klucz umożliwiający odszyfrowanie? Nie możemy przecież przekazać go tym samym (narażonym na "podsłuch") kanałem, co zaszyfrowany dokument...

Przychodzi nam z pomocą matematyka, a konkretnie fakt, że o ile znając 2 liczby możemy obliczyć ich iloczyn w stosunkowo krótkim czasie, o tyle operacja odwrotna - faktoryzacja, czyli znalezienie liczb, ktorych iloczyn jest daną liczbą (czynników) jest operacją niezwykle czasochłonną przy zastosowaniu obecnnnie znanych algorytmów. Algorytm RSA wykorzystuje ów iloczyn jako składnik klucza szyfrowania, klucz deszyfrowania zaś opiera się o czynniki. Użytkownik PGP ma zatem dwa klucze: jeden służący do deszyfrowania, zwany prywatnym, i drugi, do szyfrowania, zwany publicznym. Klucz publiczny użytkownik może rozpowszechnić - jego znajomość wystarczy, aby zaszyfrować list, ale do odszyfrowania niezbędna jest znajomość klucza prywatnego, który pozostaje sekretem właściciela.

Liczby wykorzystywane przy tworzeniu klucza w PGP są rzędu 10^100 (10 do potęgi 100), a nawet większe. Faktoryzacja takich liczb najszybszym obecnie istniejącym komputerom zajęłaby bardzo wiele czasu (lata). Tym samym, złamanie szyfru RSA jest obecnie praktycznie niemożliwe (o ile nie nastąpi znaczący przełom w dziedzinie teorii liczb, umożliwiający stworzenie szybszych algorytmów faktoryzacji).

Algorytm RSA jest dość złożony i szyfrowanie długich plików z jego użyciem jest czasochłonne. Z tego względu PGP nie korzysta z tego algorytmu bezpośrednio do szyfrowania przesyłanych danych - zamiast tego szyfruje je "konwencjonalnym" tzn. używającym jednego klucza szyfrowania/deszyfrowania algorytmem IDEA. Klucz szyfru IDEA jest dla każdego uruchomienia PGP generowany losowo, co przy długości klucza 128 bitów oznacza około 10^40 różnych możliwych kluczy. Następnie, klucz ten jest szyfrowany z użyciem RSA i dołączany do zaszyfrowanego listu. U odbiorcy, PGP używa algorytmu RSA (i klucza prywatnego adresata) do odszyfrowania klucza IDEA, a następnie używa tego klucza do odszyfrowania treści. Poza przyśpieszeniem działania, daje to dodatkową możliwość: zaszyfrowania listu przeznaczonego dla wielu odbiorców. List taki będzie zawierał kilka kopii klucza IDEA, z których każda jest zaszyfrowana innym kluczem publicznym RSA.

PGP służy nie tylko do zapewnienia tajności naszych listów, ale także do sygnowania (podpisywania) listów w celu potwierdzenia ich autentyczności (tzn. umożliwia stwierdzenie, że autor listu jest w posiadaniu klucza prywatnego, związanego ze znanym odbiorcy kluczem publicznym). W tym celu PGP oblicza rodzaj sumy kontrolnej z treści, i dołącza ją do listu zaszyfrowaną kluczem prywatnym. Każdy kto posiada klucz publiczny danego nadawcy, może sprawdzić zgodność sumy kontrolnej i tym samym potwierdzić, że list był sygnowany przez osobę będącą w posiadaniu klucza prywatnego. Fakt, ze suma jest liczona na podstawie całej treści listu, uniemożliwia wprowadzenie niewykrywalnych zmian w treści przez osoby postronne.

PGP może być wykorzystywane nie tylko do wymiany poczty, ale także np. do szyfrowania danych przechowywanych w plikach na komputerze - wystarczy jako klucza szyfrowania użyć wląsnego klucza publicznego, aby odszyfrowanie stało się możliwe tylko dla właściciela.

Ogromny sukces PGP wywołał duże zainteresowanie metodą klucza publicznego. Secure Shell (SSH) jest pakietem wykorzystującym algorytm RSA w sposób analogiczny dla PGP dla szyfrowania zdalnej interakcyjnej sesji użytkownika. Pomyślany jest jako następca protokołu Rlogin. Podobnie jak w protokole Rlogin możliwe jest skonfigurowanie SSH tak, aby niepotrzebne było podawanie hasła przez użytkownika; w odróżnieniu od Rlogin jednak autentykacja następuje nie na podstawie adresu sieciowego użytkownika nawiązującego połączenie, lecz na podstawie faktu posiadania przez użytkownika właściwego klucza. Nawet w przypadku używania haseł, szyfrowanie całego przebiegu sesji (tak akcji użytkownika, jak i reakcji systemu) zabezpiecza przed przechwyceniem hasła przez osoby postronne.

Źródłem wielu problemów jest coraz większa liczba komputerów pracujących pod systemem MS-DOS w sieci Internet. Ze względu na brak autentykacji użytkowników systemu MS-DOS problematyczne jest stosowanie ich tam, gdzie w użyciu są mechanizmy autentykacji bazujące na informacji dostarczanej przez inny komputer w sieci (np. nazwie zdalnego użytkownika). Jedyne na razie sensowne rozwiązania to bezpieczeństwo fizyczne, tzn. uniemożliwienie fizycznego dostępu do komputera osobom niepowołanym, oraz używanie haseł na poziomie BIOS (na co nie wszystkie komputery PC pozwalają).