Bezpieczeństwo w sieci Internet
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. 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.
Zagrożenia bezpieczeństwa w sieci Internet można ogólnie podzielić na następujące klasy:
uzyskanie* dostępu do danych transmitowanych przez sieć lub przechowywanych na dołączonych do sieci komputerach przez osoby niepowołane;
uzyskanie dostępu do innych* zasobów (moc obliczeniowa komputerów itd.) przez osoby niepowołane;
utrata* danych na skutek złośliwej ingerencji zewnętrznej;
fałszerstwo danych* (dotyczy zwłaszcza poczty elektronicznej, gdzie zachodzi m.in. możliwość podszywania się pod innego nadawcę).
Techniki, jakimi można posłużyć się dla osiągnięcia któregoś z w/w celów, opierają się przede wszystkim na wykorzystaniu:
wad protokołu TCP/IP i protokołów pokrewnych (DNS, SMTP);*
błędów w oprogramowaniu systemowym.*
błędów administratora lub* użytkownika systemu.
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 docierają, 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ą autentyfikacją (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 osiągnąć 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.
Przyczyny i rodzaje zagrożeń związanych z funkcjonowaniem sieci i podłączeniem do Internetu.
Sniffing (podsłuch (dosł. węszenie) transmisji danych) Używając programów typu analizator pakietów można "podsłuchać" transmisję TCP, taką jak np. sesje TELNET czy FTP, gdzie wszystkie wymieniane dane to "gołe" pakiety i dzięki temu przechwycić hasło wymagane przy logowaniu się, po przechwyceniu hasła można wejść na konto użytkownika i spróbować wykorzystać np. exploita dzięki któremu spodziewamy się dostać prawa administratora. Warto zauważyć że programy tego typu korzystają z "promiscous mode", a więc aby uruchomić taki program należy JUŻ mieć gdzieś prawa administratora systemu (najlepiej w domenie gdzie znajduje się obiekt naszego ataku), takie programy to LanWatch, IPtrace, snoop, sniffit, LinuxSniffer, Ipinvestigator, strobe.
Spoofing (podszywanie się pod legalną "zarejestrowaną" maszynę) podszywanie ma na celu ominięcie zabezpieczeń związanych z dostępem do usług tylko dla wybranych adresów, np. tylko lokalni użytkownicy mogą korzystać z usługi która może okazać się niebezpieczną po udostępnieniu jej światu zewnętrznemu. Programy reprezentujące ten typ ataków to: fakerwall i spoofer.
Cracking (łamanie haseł z passwd metodą słownikową, lub też próbkowanie programu autoryzującego słowami z odpowiednio przygotowanych słowników). Są jeszcze systemy, gdzie "czyste" passwd można sobie skopiować przez TFTP, lub też po "zorganizowaniu" sobie konta zwykłego użytkownika skopiować passwd, i programem crack z odpowiednią ilością słowników próbkować po kolei wszystkie konta. Dostęp do passwd można też uzyskać wykorzystując tzw. błąd phf niektórych serwerów webowych i ich CGI, istnieją nawet programy wyszukujące takie serwery. Można też próbkować w ten sposób sam program autoryzujący (np. w POP3) , lecz jest to łatwe do wykrycia, ze względu na ruch generowany w sieci i obciążenie maszyny autoryzującej.
Hijacking (przechwytywanie zdalnej sesji legalnego użytkownika systemu), metoda przejęcia sesji użytkownika oparta o mechanizm połączeniowy protokołu TCP (3-way handshaking) na czym opiera się TELNET, oraz wygenerowanie odpowiedniego numeru sekwencyjnego. Forma ataku, którą trudno jest wykryć, a użytkownik którego sesja jest przechwytywana, może zorientować się że cos jest nie tak, po nagłym 'resecie' sesji, lub później przeglądając to co robił, programem 'history'. Administrator może rozpoznać tę formę ataku po wykryciu stanu DESYNCH połączenia, oraz lekko zwiększonej ilości pakietów TCP ACK w segmencie, zwiększa się także współczynnik utraty pakietów. Aby uchronić się przed tym rodzajem ataku, należy zrezygnować z TELNET'a na rzecz np. SSH, lub też zaimplementować KERBEROSA.
Denial of Service (blokada usług świadczonych przez system). Przez wysyłanie niewłaściwie sformowanych pakietów, lub flood'owanie danego portu systemu, można spowodować jej zawieszenie, lub też zawieszenie całego systemu, wykorzystują błędy w implementacji obsługi gniazd (np. zbyt długie pakiety ICMP ) itp. Ratunkiem przed tego typu atakami są jedynie patche (czyli łatki) na oprogramowanie, oraz zaopatrzenie się w odpowiednie narzędzia logujące zdarzenia. W pewnych określonych sytuacjach sprawę rozwiązuje jednak dopiero zakup FIREWALL'a.
Wykorzystywanie tzw. exploit'ów. Exploity to małe programy głównie w C i PERL'u, które wykorzystują dziury w oprogramowaniu systemowym (np. SUID), polegające głównie na przepełnianiu buforów i skokach podprogramów w losowe miejsce w pamięci normalnie zabronione dla użytkownika (GCC trampolines) , dzięki czemu można uzyskać prawa administratora systemu. Ta forma ataku może się powieść, jednak intruz musi najpierw zdobyć konto na danej maszynie. Obroną przed tego typu atakiem, jest śledzenie na bieżąco list dyskusyjnych poświeconych dziurom w oprogramowaniu sieciowym (BUGTRAQ, linux-security), regularnym sprawdzaniem logów.