www.grise.pl

Sieci > Bezpieczeństwo > Model TCP/IP > Warstwa procesów i aplikacji

Sieć WWW, poczta elektroniczna  Zdalny dostęp, transmisja plików  Usługi nazewnicze i katalogowe  AAA 


2.4 Warstwa procesów i aplikacji

Warstwa procesów i aplikacji jest najwyższą, bardzo bogatą i dynamicznie się zmieniającą warstwą modelu TCP/IP. Funkcjonuje w niej mnóstwo protokołów specyficznych dla konkretnych aplikacji. Wraz z aplikacjami często powstają więc nowe protokoły, a stare odchodzą w zapomnienie. Wiele z nich posiada też własne, wbudowane mechanizmy bezpieczeństwa. Z tego powodu podrozdział ten prezentuje najważniejsze, wybrane zagadnienia dotyczące bezpieczeństwa warstwy procesów i aplikacji.

2.4.1 Sieć WWW, poczta elektroniczna

WWW (ang. World Wide Web) i poczta elektroniczna to jedne z najważniejszych usług internetowych. WWW jest główną przyczyną rozwoju Internetu. To właśnie WWW pozwoliło na dostęp do Internetu bardzo szerokiemu gronu odbiorców [11]. Jest to usługa bardzo elastyczna i łatwo rozszerzalna, co w dużej mierze zadecydowało o jej popularności. Jednocześnie utrudnia to jednak jej zabezpieczenie. Najistotniejsze kwestie to zapewnienie bezpieczeństwa serwera, klienta oraz przesyłanych danych. Z kolei poczta elektroniczna narażona jest na ujawnianie przesyłanych wiadomości oraz otrzymywanie niechcianych informacji. Mogą to być na przykład uciążliwe reklamy lub też pliki zarażone wirusem. Ważną kwestią jest również zabezpieczenie samego serwera pocztowego.

Sieć WWW

Pierwszą istotną kwestią jest bezpieczeństwo serwera WWW. Podstawową funkcją takiego serwera jest obsługa protokołu HTTP. Odpowiada on na żądania klientów i zwraca im odpowiednie pliki. Obsługa protokołu HTTP bez rozszerzeń nie powoduje wielu zagrożeń. Najpowszechniejsze są różne rodzaje blokady usług, ale dobrze napisane serwery WWW są względnie odporne na tego typu ataki [23]. Bardzo ważne jest prawidłowe ustawienie uprawnień dla serwera. Stanowi to ochronę przed błędami w samym serwerze. Nie będzie on mógł udostępniać plików do których nie ma dostępu, a uruchomione przez niego aplikacje będą działały z minimalnymi przywilejami. Dużo większym problemem dla bezpieczeństwa są powszechnie stosowane rozszerzenia HTTP. Wiele serwerów korzysta z zewnętrznych programów i dodatkowych protokołów, co powoduje, że zaczynają one wykonywać wiele groźnych czynności (zapisywanie danych na dysku, uruchamianie zewnętrznych programów). Zdarza się, że strona WWW zawiera wiele warstw różnych programów (rysunek 2.23) i wówczas o bezpieczeństwie decyduje najsłabszy element.

Rysunek 2.23 Warstwy programów działających w serwerze WWW [23]

Wszelkie rozszerzenia serwera HTTP powinny być więc wykonywane bardzo ostrożnie, po zastanowieniu się i przetestowaniu ich wpływu na poziom bezpieczeństwa. Dobrą praktyką jest uruchamianie newralgicznych serwerów na odpowiednio skonfigurowanym hoście bastionowym [23]. Inną kwestią jest bezpieczeństwo klienta HTTP. Przeglądarki WWW mogą nie zabezpieczać pewnych istotnych informacji. Może to dotyczyć na przykład haseł i nazw użytkowników. Wówczas dane takie przesyłane są do serwera jawnym tekstem. Rozwiązaniem jest zabezpieczenie kanału komunikacyjnego. Zastosowany może być na przykład popularny obecnie HTTPS, który wykorzystuje protokoły TLS i SSL. Osobną sprawą jest natomiast pewność czy bezpiecznie przesłane informacje są prawidłowo przechowywane po stronie serwera. Chcąc przesyłać ważne dane należy dodatkowo sprawdzić czy dana witryna podjęła prawne zobowiązanie do ich ochrony. Informacje pomiędzy klientem i serwerem wymieniane mogą być również z wykorzystaniem ciasteczek (ang. cookies). Ciasteczka są jednak przesyłane w postaci niezaszyfrowanej i nie mogą być stosowane do krytycznych operacji. Inną istotną sprawą są zewnętrzne przeglądarki i systemy rozszerzeń. Serwery przesyłają dane do klienta w różnych formatach. Klient HTTP rozumie jednak tylko podstawowe typy danych (HTML, zwykły tekst, JPEG, GIF), a pozostałe są obsługiwane przez inne programy. Podobnie jak w przypadku serwerów WWW ma to istotny wpływ na bezpieczeństwo. Przykład może tutaj stanowić plik postscriptowy [23]. PostScript jest językiem sterowania drukarki, ale równocześnie jest pełnoprawnym językiem programowania. Można wyobrazić sobie sytuację, w której użytkownik pobiera dokument postscriptowy. Przeglądarka WWW uruchamia wówczas zewnętrzny program Ghostscript. Ten z kolei wykonuje zawarte w pliku polecenia, które nakazują usunięcie wszystkich plików z lokalnego katalogu. Podobne zagrożenie stanowią inne systemy rozszerzeń (JavaScript, VBScript, Java, ActiveX). Systemy te obsługują różne metody zabezpieczeń, ale nie gwarantują bezpieczeństwa. JavaScript, VBScript, Java próbują powstrzymać program przed robieniem czegoś groźnego. Na przykład Java nie może otwierać połączeń sieciowych z serwerem innym niż ten, z którym użytkownik nawiązał połączenie. Takie sposoby zabezpieczeń nie sprawdzają się jednak w praktyce. Aby język rozszerzeń wykonywał rzeczywiście interesujące i przydatne zadania, musi mieć duże możliwości, ale im więcej możliwości ma język, tym jest bardziej niebezpieczny [23]. Z tego powodu ActiveX stosuje inne podejście i wykorzystuje cyfrowe podpisy. Daje to pewność pochodzenia programu, ale rodzi kolejne pytania. Kim jest osoba, która napisała kontrolkę? Czy jej intencje były dobre i potrafi pisać bezpieczne programy? Jeśli program nie jest podpisany to z czego to wynika? Podsumowując zewnętrzne przeglądarki i systemy rozszerzeń należy stosować ostrożnie. Trzeba też odpowiednio skonfigurować opcje zabezpieczeń dostępne w samej przeglądarce.

Poczta elektroniczna

System pocztowy pod względem funkcjonalnym można podzielić na kilka części. Ilustruje to rysunek 2.24.

Rysunek 2.24 Budowa systemu pocztowego

Poszczególne funkcje mogą być realizowane przez pojedynczy program lub zbiór programów:
 - agent transferu poczty (ang. Mail Transfer Agent - MTA) zajmuje się wysyłaniem i przyjmowaniem poczty,
 - agent doręczania poczty (ang. Mail User Agent - MDA) jest odpowiedzialny za umieszczenie poczty we właściwej skrzynce,
 - agent użytkownika (ang. Mail User Agent - MUA) pozwala na czytanie i redagowanie wiadomości pocztowych, często jest on równocześnie klientem protokołu POP lub IMAP.

Poufność i uwierzytelnianie przesyłanej poczty jest podstawową sprawą. Wiele protokołów wykorzystuje w tym celu zaszyfrowane łącza. Jednak w przypadku poczty elektronicznej ten sposób nie zawsze się sprawdza. Może być zastosowany tylko w niektórych okolicznościach, kiedy klient i serwer komunikują się ze sobą bezpośrednio. Wykorzystać można wówczas protokół dysponujący szyfrowaniem (Secure POP, ESMTP z STARTTLS) lub wirtualną sieć prywatną. W pozostałych przypadkach, kiedy wiadomości przechodzą przez wiele serwerów na swojej drodze, należy skorzystać z innego sposobu. Rozwiązaniem jest szyfrowanie treści przesyłanej wiadomości. Przykładowo wielu agentów użytkownika oferuje takie usługi. W tym celu wykorzystywana jest kryptografia z kluczem publicznym. Najczęściej stosowanym rozwiązaniem są S/MIME i OpenPGP, które stanowią rozszerzenie MIME (ang. Multimedia Internet Mail Extension). Rozwijane są one jako standardy internetowe [19],[21] i obsługują szyfrowanie oraz podpisy cyfrowe.

Niepożądana poczta również wiąże się z tematem bezpieczeństwa. Oficjalna nazwa to UCE (ang. Unsolicited Commercial Email), ale najczęściej nazywana jest spamem. Akronim ten wywodzi się ze skeczu Monty Pythona, w którym mięsny produkt firmy Hormel o nazwie SPAM jest niechciany, ale wszechobecny [23]. Niepożądana poczta może być tylko irytująca, ale może być też jawnie wroga. Dla zabezpieczenia się, nie należy wykonywać kodu przesłanego pocztą elektroniczną. Zasadę tę trzeba stosować także do zaufanych wiadomości, ponieważ do kolejnych ataków często wykorzystywana jest książka adresowa ofiary. Należy pamiętać, że niebezpieczne są nie tylko pliki wykonywalne. Zagrożenie stanowią również inne typy danych, które obsługiwane są przez zewnętrzne programy. Przykład mogą stanowić pliki HTML (mogą zawierać niebezpieczny kod w postaci programów języka Java, JavaScript, VBScript lub też kontrolki ActiveX) oraz dokumenty Worda (makra w języku Visual Basic potrafią robić to wszystko, co inne programy). Warto więc stosować filtry i programy antywirusowe na serwerze pocztowym oraz jednocześnie informować użytkowników o potencjalnym niebezpieczeństwie.

Serwer pocztowy jest również narażony na ataki. Znane są szeroko dyskutowane problemy z bezpieczeństwem Sendmaila. Nie oznacza to jednak, że inne programy są bezpieczniejsze, są one po prostu mniej popularne. Inne znane systemy pocztowe to Lotus Notes i Microsoft Exchange. Oferują one dodatkowo również inne usługi: grupy dyskusyjne, zarządzanie kontaktami oraz wymianę i współdzielenie dokumentów. Bezpieczeństwo każdego z takich serwerów pocztowych jest sprawą indywidualną. Najważniejsza jest prawidłowa konfiguracja oraz późniejsza konserwacja systemu.

2.4.2 Zdalny dostęp, transmisja plików

Zdalny dostęp pozwala na korzystanie z zasobów innego komputera. Tryb graficzny sprawia, że korzystanie ze zdalnego komputera staje się tak samo łatwe jak korzystanie z komputera lokalnie. Druga część podrozdziału poświęcona jest transmisji plików. Zarówno zdalny dostęp jak i współdzielenie plików wymagają odpowiedniego zabezpieczenia.

Secure Shell

Pierwotna wersja SSH (ang. Secure Shell) została napisana przez Tatu Ylönena. Celem autora było dostarczenie bezpiecznego zamiennika dla poleceń „r” z Uniksa. Polecenia te pozwalają na wygodny zdalny dostęp: zdalne wykonywanie poleceń (rsh, rex), zdalne logowanie (rlogin), zdalne kopiowanie plików (rcp, rdist). Problem polega na tym, że polecenia te korzystają z uwierzytelniania opartego na adresach i napastnik może podszyć się pod „zaufany” komputer. SSH stanowi również bezpieczną alternatywę dla protokołów Telnet i FTP, w których hasła przesyłane są otwartym tekstem. Tatu Ylönen udostępnił bezpłatną implementację wraz z kodem źródłowym, co zadecydowało o popularności SSH. Obecnie SSH nie jest już produktem darmowym, ale powstało mnóstwo bezpłatnych implementacji. Najbardziej rozpowszechniona to OpenSSH. Najnowsza druga wersja protokołu SSH rozszerza bezpieczeństwo SSH-1. Warto zauważyć, że pozwala ona na obsługę protokołu TLS [23]. Mnogość implementacji i sposób licencjonowania sprawia jednak, że w użyciu są obie wersje protokołu SSH.

Działanie SSH

SSH wykorzystuje kryptografię dla zapewnienia bezpieczeństwa. Klient i serwer wspólnie negocjują algorytm szyfrowania. W przypadku SSH-2 na tym etapie ustalany jest również mechanizm wymiany kluczy oraz rodzaj sum kontrolnych integralności. Obie strony są uwierzytelniane.

Do potwierdzenia tożsamości serwera najczęściej używa się kryptografii z kluczem publicznym. Klient otrzymuje klucz publiczny serwera i porównuje go z przechowywanym lokalnie kluczem publicznym. W razie rozbieżności porównania lub braku klucza wyświetlane jest ostrzeżenie i opcjonalnie nowy klucz jest zapisywany do późniejszego użycia. Taki sposób sprawdzania klucza pozwala SSH funkcjonować w sytuacji, kiedy nie istnieje standardowa, globalna infrastruktura rozpowszechniania i weryfikacji kluczy publicznych. Dzięki temu klient jest narażony na atak wrogiego serwera tylko podczas pierwszego połączenia. Wraz z rozwojem serwisów certyfikujących sytuacja zmienia się na lepsze i być może niedługo to one będą powszechnie weryfikowały klucze publiczne. Po sprawdzeniu ważności klucza sprawdzana jest tożsamość serwera. Klient przesyła do serwera komunikat zaszyfrowany kluczem publicznym. Kiedy serwer potrafi rozszyfrować przesłaną wiadomość oznacza to, że zna prywatną część klucza i klient może założyć, że porozumiewa się z właściwym serwerem.

Uwierzytelnianie klienta odbywa się najczęściej poprzez zapytanie o hasło logowania. Połączenie jest już jednak szyfrowane, więc hasło nie jest przesyłane jawnym tekstem. Możliwe jest również sprawdzenie tożsamości klienta wykorzystując kryptografię z kluczem publicznym oraz serwery uwierzytelniające.

Wiadomości przesyłane w trakcie trwania połączenia są szyfrowane kluczem sesyjnym, sprawdzana jest również ich integralność. Utrudnia to w znacznym stopniu potencjalne ataki.

Przekazywanie portów

SSH oferuje mechanizm przekazywania portów, który pozwala na przesyłanie innych protokołów przez połączenie SSH. W przekazywaniu lokalnym klient SSH przyjmuje połączenia i przesyła je do serwera, a w przekazywaniu zdalnym to serwer przyjmuje połączenia i przekazuje je do klienta. Działanie mechanizmu przekazywania portów ilustruje rysunek 2.25.

Rysunek 2.25 Lokalne i zdalne przekazywanie portów w SSH [23]

Mechanizm ten pozwala utworzyć prostą wirtualną sieć prywatną. Wówczas dane przesyłane tym tunelem będą zabezpieczane przez protokół SSH.

Zdalne interfejsy graficzne

SSH daje dostęp do komputera w trybie tekstowym. Obecnie jednak wielu użytkowników przyzwyczajonych jest do trybu graficznego i w taki sam sposób chcieliby oni uzyskiwać zdalny dostęp.

Uniksowe systemy graficzne opierają się na X11 Window System. Warto zauważyć, że w systemie X11 odwrócona jest relacja klient-serwer [23]. „Serwer” X11 to jednostka składająca się z ekranu, myszy i klawiatury, a „klienci” to aplikacje sterujące oknami albo współpracujące z myszą i klawiaturą w serwerze. Serwer działa więc na komputerze użytkownika (sieć wewnętrzna), a klienci w zdalnych komputerach do których podłączył się użytkownik (sieć zewnętrzna). Napastnik może więc potencjalnie uzyskiwać zrzuty ekranowe, odczytywać naciśnięte klawisze lub też wstawiać znaki, jakby były wpisywane z klawiatury przez użytkownika. Istotną sprawą dla bezpieczeństwa komputera użytkownika jest więc sprawdzanie tożsamości klienta. Pierwotny sposób zabezpieczania X11 to mechanizm xhosts. Mechanizm ten informuje serwer od których zdalnych adresów IP może przyjmować połączenia. Druga, doskonalsza metoda uwierzytelniania odbywa się za pomocą ciasteczek (MIT-MAGIC-COOKIE-1). Polega to na współdzieleniu sekretu przez serwer i legalnych klientów. Wadą tej metody jest jednak przesyłanie ciasteczek bez zabezpieczeń. Z tego powodu powstał mechanizm o nazwie XDM-AUTHORIZATION-1. Ciasteczka w mechanizmie tym nie są przesyłane, ale wykorzystywane do zaszyfrowania innych danych, które następnie są przesyłane przez sieć. Pewna liczba serwerów i klientów potrafi obsługiwać również inne mechanizmy uwierzytelniania, jak na przykład Kerberos.

Dla systemu operacyjnego Microsoftu istnieje wiele programów pozwalających na zdalny dostęp w trybie graficznym (na przykład LapLink, RemotelyPossible, pcANYWHERE). Większość z tych programów korzysta z firmowych protokołów i różnych sposobów zapewnienia bezpieczeństwa. Zawsze istotne są natomiast następujące kwestie bezpieczeństwa [23]:
 - czy zdalni użytkownicy komputera są rozróżnialni? czy użytkownik lokalny może kontrolować czynności użytkowników zdalnych i czy użytkownicy zdalni są zabezpieczeni przed ingerencją ze strony użytkowników lokalnych?
 - czy uwierzytelnianie zdalnych użytkowników jest bezpieczne i ścisłe?
 - czy można przechwycić dane przesyłane między użytkownikiem zdalnym i komputerem?
 - jakie możliwości ma zdalny użytkownik? czy może zrestartować komputer albo skopiować z niego pliki?

Terminal Server jest rozwiązaniem Microsoftu pozwalającym na zdalny dostęp. Jest to odrębna edycja Windows NT, która stała się zwykłą usługą w Windows 2000. Usługi terminalowe używają domyślnie protokołu Microsoftu RDP (ang. Remote Desktop Protocol), który jest rozszerzeniem standardu T.120 Międzynarodowej Unii Telekomunikacyjnej. RDP zapewnia trzy tryby szyfrowania:
 - niski (tylko dane przesyłane od klienta do serwera są szyfrowane kluczem 40 bitowym),
 - średni (wszystkie dane są szyfrowane kluczem 40 bitowym),
 - wysoki (wszystkie dane są szyfrowane kluczem 128 bitowym).
Im dłuższa jest przestrzeń klucza (ang. keyspace) tym trudniej jest złamać klucz metodą siłową. Celem jest, aby złamanie klucza było „droższe”, niż informacja, którą chroni [6].

Współdzielenie plików

Protokół NFS (ang. Network File System) pozwala na sieciowy dostęp do plików w systemach uniksowych. Zazwyczaj działa on ponad protokołem UDP. Podstawowym problemem bezpieczeństwa NFS jest słabe uwierzytelnianie żądań. Serwer sprawdza tożsamość komputera klienta na podstawie adresu IP. Sprawia to, że łatwo można podszyć się pod zaufany komputer fałszując adres IP. Uwierzytelnianie użytkowników wykonywane jest przez klienta. Użytkownik posiadający więc odpowiednie uprawnienia na lokalnym komputerze może przejąć kontrolę nad klientem i zmienić swoją tożsamość. Kolejnym problemem jest to, że serwer NFS dokonuje uwierzytelniania tylko podczas pierwszego żądania dostępu. Potem użytkownik dysponujący ważnym uchwytem może już swobodnie korzystać z systemu plików. Swobodnie może korzystać również z tych zasobów osoba, która posiada podsłuchany lub sfałszowany uchwyt. Kolejne implementacje NFS w różny sposób rozwiązują te problemy, ale należy zwrócić na nie szczególną uwagę przy wykorzystaniu protokołu NFS do udostępniania plików.

Współdzielenie plików w sieciach Microsoftu wiąże się z wieloma różnymi protokołami. Najważniejszym jest CIFS (ang. Common Internet File System). Pomimo swojej nazwy nie jest to wyspecjalizowany protokół współdzielenia plików. Wywodzi się on bezpośrednio z SMB (ang. Server Message Block) i oferuje również usługi przesyłania komunikatów, drukowania oraz przetwarzania transakcji. Z współdzieleniem plików wiążą się również terminy NetBEUI, NetBIOS, NetBT i LanManager. NetBEUI to protokół działający na tym samym poziomie co IP, używany w sieciach lokalnych. NetBIOS to protokół działający pierwotnie ponad NetBEUI, a NetBT to implementacja NetBIOS-u ponad TCP/IP. LanManager to z kolei starszy protokół wciąż obsługiwany przez CIFS i SMB. CIFS może też działać bezpośrednio ponad TCP/IP. Rysunek 2.26 ilustruje te zależności.

Rysunek 2.26 Stos protokołów [23]

Istotne jest to, że CIFS zapewnia lepszą identyfikację klientów niż NFS. W przeciwieństwie do NFS wymaga on uwierzytelniania się samego użytkownika. W zależności od wynegocjowanego sposobu hasła przesyłane są jawnym tekstem lub też mogą być weryfikowane za pomocą wyzwań i odpowiedzi. Dodatkowo CIFS może też uwierzytelniać przesyłane w czasie połączenia komunikaty. Niestety, nie oferuje on szyfrowania.

2.4.3 Usługi nazewnicze i katalogowe

Usługi nazewnicze i katalogowe wykorzystywane są do dystrybuowania informacji. Usługi nazewnicze tłumaczą nazwy hostów na adresy IP. Internetowym standardem jest DNS, ale w pewnych sytuacjach wykorzystywane są NIS i WINS. Usługi katalogowe ułatwiają natomiast przechowywanie informacji w katalogach. Bazy te mogą zawierać na przykład informacje o użytkownikach i ich komputerach.

Domain Name System (DNS)

DNS (ang. Domain Name System) jest jednym z najbardziej istotnych systemów obsługujących sieć Internet. To właśnie od niego zależy prawidłowe działanie innych usług internetowych: WWW, poczty elektronicznej i innych. DNS jest globalną, rozproszoną bazą danych [12], która tłumaczy nazwy urządzeń sieciowych na adresy IP oraz adresy IP na nazwy urządzeń sieciowych. W Uniksie funkcję DNS pełni BIND (ang. Berkeley Internet Name Domain), a w systemach Windows Microsoft DNS Server. Fakt, że DNS spełnia podstawową rolę powoduje, że ataki na ten system mogą mieć bardzo poważne skutki. Fałszowanie informacji DNS pozwala na udostępnianie fałszywych usług internetowych pod ich legalnymi, znanymi użytkownikom nazwami. Możliwe jest także blokowanie dostępu i uniemożliwienie nawiązania połączenia. Z tego powodu zaproponowano nową wersję DNS. Jest nią DNSSEC [18], który wyposażony jest w dodatkowe mechanizmy bezpieczeństwa. Uwierzytelnianie stron transakcji oraz zapewnienie integralności przesyłanych danych to kluczowe mechanizmu nowego systemu. Do realizacji tych celów wykorzystano cyfrowe podpisy. Dzięki temu odbiorca może sprawdzić nadawcę i integralność otrzymanych informacji. W sytuacji, kiedy nie jest znany publiczny klucz serwera, który przesłał dane odbiorca może prześledzić „łańcuch zaufania” wzwyż hierarchii DNS. 1 listopada 2002 roku w Holandii rozpoczęto eksperyment SECREG, którego celem jest testowanie następcy DNS. Projekt realizowany jest przez NLNetLabs.NL we współpracy z organizacją SIDN, która jest odpowiedzialna za wydawanie i rejestrowanie nazw domenowych ‘.nl’. Celem eksperymentu, który potrwa rok jest:
 - zebranie doświadczeń we wdrażaniu DNSSEC,
 - testowanie działania następcy DNS,
 - propagowanie i wyjaśnianie funkcjonowania nowej technologii,
 - próba ustalenia pewnych parametrów DNSSEC.

Network Information Service (NIS)

NIS (ang. Network Information Service) to protokół używany w Uniksie, który pozwala na dostęp do informacji administracyjnych współdzielonych w sieci. Przykładem są tablice hostów, pliki haseł lub aliasy pocztowe. Możliwe jest także realizowanie odwzorowywania nazw w sieci lokalnej. Wówczas NIS jest w przeciwieństwie do DNS protokołem rozgłoszeniowym. Większość serwerów NIS potrafi też działać jako bramka DNS w celu tłumaczenia zewnętrznych nazw. Problemem jest bezpieczeństwo NIS. Aby uzyskać dane wystarczy znać nazwę domeny i adres serwera NIS. Niektóre serwery mogą uwierzytelniać klientów na podstawie adresu IP. Podnosi to poziom bezpieczeństwa, ale nie uniemożliwia ataków. Najlepszym wyjściem jest zablokowanie potencjalnym napastnikom dostępu do serwera NIS. W tym celu można wykorzystać na przykład ścianę ogniową.

Odwzorowywanie nazw w sieciach Microsoftu

W sieciach Microsoftu odwzorowanie nazw odbywa się w różny sposób. Windows 2000 korzysta w większości z DNS, ale inne wersje Windows używają wielu różnych metod tłumaczenia nazw na adresy. Możliwe jest:
 - skorzystanie z danych przechowywanych w pamięci podręcznej,
 - sprawdzenie lokalnego plik o nazwie lmhosts lub hosts pod kątem wpisu zawierającego szukaną nazwę,
 - przeprowadzenie lokalnego rozgłoszenia i sprawdzenie, czy komputer o danej nazwie na nie odpowie,
 - wysłanie zapytania do WINS,
 - wysłanie zapytania do DNS.

Do tłumaczenia nazw netbiosowych na adresy IP służy usługa nazewnicza NetBT. Pierwsza metoda wykorzystuje mechanizm rozgłoszeniowy, a każdy z komputerów przechowuje informacje w lokalnej bazie danych. Innym sposobem jest przechowywanie danych przez dedykowany serwer. Implementacja Microsoftu nosi nazwę WINS. W NetBIOS-ie nie występuje hierarchia. Zakres definiuje grupę komputerów, które mogą się ze sobą komunikować. Metoda ta sprawdza się w kontrolowanej sieci, ale nie stanowi ochrony przed atakami. Nazwa zakresu przesyłana jest przez sieć jawnym tekstem, więc podsłuchanie jej nie stanowi problemu. Zdobyta nazwa zakresu może być wykorzystana do wielu różnych ataków.

Lightweight Directory Access Protocol (LDAP)

LDAP jest protokołem, który zapewnia dostęp do baz danych katalogowych. W bazach tych mogą być przechowywane na przykład certyfikaty z kluczem publicznym, informacje adresowe lub też dane służące do uwierzytelniania użytkowników. Jest to protokół usługowy wykorzystywany najczęściej przez programy wyszukujące informacje. Jeśli serwery LDAP przesyłają niezaszyfrowane informacje może być stosowany tylko w kontrolowanych sieciach. Chcąc zwiększyć bezpieczeństwo można zastosować LDAPS, który korzysta z TLS i tym samym zapewnia szyfrowanie i uwierzytelnianie.

Active Directory

Active Directory jest usługą katalogową wykorzystywaną przez Windows 2000. DNS służy do odwzorowywania nazw hostów na adresy IP, a Active Directory do rozpowszechniania informacji specyficznych dla obiektów domenowych Windows. Do rozpowszechniania informacji między serwerami Active Directory wykorzystywane jest RPC lub SMTP. Rozpowszechnianie wymaga informacji uwierzytelniających o partnerze, dlatego istotny jest dostęp do serwera certyfikującego. Przesyłane informacje są szyfrowane. Komputer, który jest częścią domeny musi mieć rekord DNS zawierający jego IP oraz rekord Active Directory przechowujący informacje uwierzytelniające. Wykorzystywane są one podczas podłączania się do domeny. Do odpytywania serwera Active Directory wykorzystywany jest protokół LDAP. Ważne jest również to, że Active Directory do uwierzytelniania używa Kerberosa.

2.4.4 Uwierzytelnianie, autoryzacja i ewidencjonowanie

Identyfikacja tożsamości użytkowników i określenie ich uprawnień są niezbędnymi elementami potrzebnymi dla zapewnienia bezpieczeństwa. Operacje te mogą się odbywać lokalnie lub przy pomocy systemu operacyjnego. Najlepszym jednak rozwiązaniem jest centralny mechanizm uwierzytelniający. Pozwala to na łatwiejsze zarządzanie newralgicznymi danymi i zapewnia im wyższy poziom bezpieczeństwa. Rozwiązanie takie nazywane jest systemem AAA (ang. Authentication, Authorization and Accounting). System taki świadczy zgodnie z nazwą następujące usługi:
- uwierzytelnianie (weryfikacja tożsamości),
- autoryzacja (ustalenie co komu wolno zrobić),
- ewidencjonowanie (przechowywanie informacji o pomyślnym lub niepomyślnym przebiegu uwierzytelniania lub autoryzacji).
Usługa uwierzytelniania wymaga tutaj dokładniejszego omówienia. Stosowane mogą być bowiem różne mechanizmy. Najczęściej dzieli się je na kategorie:
- kim jesteś – biometria (skanowanie odcisków palców, skanowanie siatkówki, analiza głosu),
- co wiesz – tradycyjny system haseł,
- co masz – jednorazowe notatniki, inteligentne karty.
Najczęściej stosowanym mechanizmem są jednak hasła. Są one tanie i szybkie w użyciu oraz nie wymagają stosowania specjalnych urządzeń. Istotne jest, żeby ich nie ujawniać oraz aby były odpowiednio trudne do odgadnięcia. Być może w przyszłości hasła zostaną zastąpione przez urządzenia biometryczne (obecnie stosowane przez 5% badanych, planuje zastosować kolejne 11% [3]) lub elektroniczne karty identyfikacyjne (obecnie stosowane przez 12% badanych, planuje zastosować kolejne 21% [3]).

Jednym z najlepszych i najbardziej znanych systemów uwierzytelniania jest Kerberos. Do uwierzytelniania zdalnych użytkowników stosowany jest RADIUS oraz TACACS. Należy również wspomnieć o modularnych mechanizmach uwierzytelniania możliwych do zastosowania w Uniksie. Przykładem może być serwer uwierzytelniający z zestawu narzędziowego TIS FWTK (ang. Trusted Information Systems Internet Firewall Toolkit) lub PAM (ang. Pluggable Authentication Modules). W obu rozwiązaniach programy uwierzytelniające (jak login lub ftpd) są jednokrotnie modyfikowane, aby korzystać z zalet zewnętrznego systemu AAA.

Kerberos

Kerberos jest kryptograficznym systemem uwierzytelniania opracowanym w MIT (ang. Massachusetts Institute of Technology). Dostarcza on centralny mechanizm uwierzytelniania działający ponad niezabezpieczoną siecią [14]. Spełnione muszą być jednak pewne wymagania. Istotne jest, aby serwer uwierzytelniający Kerberosa był odpowiednio zabezpieczony przed obcą ingerencją. Klienci i serwery muszą ufać serwerowi uwierzytelniającemu. Ważna jest też synchronizacja czasu, ponieważ stemple czasowe stanowią ochronę przed atakami powtórzeniowymi.

Bilety i identyfikatory

Każdy serwer świadczący usługi wymaga od użytkownika przesłania biletu na usługę (ang. service ticket) i identyfikatora (ang. authenticator). Bilet na usługę potwierdza tożsamość użytkownika. Zawiera on nazwę klienta, adres sieciowy, nazwę serwera, stempel czasowy oraz klucz sesji. Bilet taki jest zaszyfrowany, więc użytkownik nie może go odczytać i zmodyfikować.

Identyfikator zawiera z kolei nazwę klienta, stempel czasowy i opcjonalnie dodatkowy klucz sesji. Jest on zaszyfrowany kluczem sesji klienta i serwera. Identyfikator pozwala udowodnić, że klient zna klucz sesji, a stempel czasowy powoduje, że jest on ważny tylko przez określony czas.

Działanie Kerberosa
Otrzymywanie biletu na bilety

Użytkownik zwraca się z prośbą o bilet na bilety (ang. Ticket Granting Ticket -TGT) do serwera uwierzytelniającego (ang. Authentication Server - AS). Wysyła do niego swoją nazwę logowania i nazwę usługi wydającej bilety (ang. Ticket Granting Service - TGS), której chce użyć. AS generuje klucz sesji, który wykorzystywany będzie przez klienta i TGS. AS tworzy też TGT dla użytkownika, aby mógł potwierdzić swoją tożsamość przed TGS. TGT jest szyfrowany tajnym kluczem TGS (klucz ten musi być wcześniej uzgodniony i bezpiecznie dostarczony). Użytkownik otrzymuje więc od AS klucz sesji i bilet na bilety. Aby odczytać klucz sesji potrzebne jest hasło, więc tylko uprawniony użytkownik może to zrobić. TGT jest z kolei zabezpieczony kluczem znanym tylko TGS i AS, więc użytkownik nie może nic z nim zrobić. TGT zawiera ID użytkownika i TGS oraz stempel czasowy. TGT jest ważny zwykle osiem godzin.

Otrzymywanie biletu na usługi z TGS

Chcąc otrzymać bilet na usługi użytkownik musi uwierzytelnić się przed TGS. W tym celu klient wysyła TGT i utworzony przez siebie identyfikator. TGS odszyfrowuje TGT i otrzymuje klucz sesji. Następnie korzysta z tego klucza, aby odszyfrować identyfikator i zweryfikować informacje przesłane przez klienta. Po pomyślnej weryfikacji TGS sprawdza czy użytkownik ma prawo do wybranej usługi (autoryzacja). Jeśli tak, to wystawiany jest bilet na usługę oraz klucz sesji. Klucz ten będzie wykorzystywany przez klienta i serwer świadczący usługę.

Uwierzytelnianie użytkownika przed wybraną usługą

Użytkownik wysyła serwerowi bilet na usługę i identyfikator. Podobnie jak TGS serwer sprawdza identyfikator i w ten sposób weryfikuje tożsamość użytkownika. W sytuacji, kiedy serwer musi uwierzytelnić się przed klientem wysyła on wiadomość zaszyfrowaną kluczem sesji. Pozwala to udowodnić tożsamość serwera przed klientem. Należy zaznaczyć, że każda usługa sama określa swój stopień paranoi. Przykładowo usługa pozwalająca na zmianę hasła wymagać będzie zwykle biletu bezpośrednio od serwera uwierzytelniającego. Wymagać to więc będzie ponownego wpisania hasła przez użytkownika.

RADIUS

RADIUS (ang. Remote Authentication Dial In User Service) jest protokołem stosowanym zazwyczaj do uwierzytelniania użytkowników, którzy łączą się z siecią telefonicznie. Jest to standard internetowy [20]. Kiedy użytkownik łączy się z NAS (ang. Network Access Server) ten występuje w roli klienta RADIUS-a. NAS pośredniczy w przekazywaniu informacji pomiędzy użytkownikiem a serwerem RADIUS-a. Serwer ten natomiast jest odpowiedzialny za rozpatrzenie żądania, ewidencjonowanie oraz uwierzytelnienie i autoryzację użytkownika. Ilustruje to rysunek 2.27. Warto też zauważyć, że RADIUS wspiera takie protokoły uwierzytelniania jak PAP i CHAP.

Centralne przechowywanie danych potrzebnych do uwierzytelniania i autoryzacji użytkowników jest bezpieczniejsze i łatwiejsze w zarządzaniu. Klient i serwer RADIUS-a współdzielą sekret, co pozwala zapewnić integralność przesyłanych danych oraz uwierzytelnianie klienta i serwera. RADIUS szyfruje hasła, ale inne dane (informacje o nazwach użytkowników i ich uprawnienia) są przesyłane jawnym tekstem. Z tego powodu nie jest zalecane stosowanie RADIUS-a w niekontrolowanych sieciach, zbyt wiele informacji może się dostać w niepowołane ręce [23].

TACACS

TACACS (ang. Terminal Access Controller Access System) pełni podobne funkcje co RADIUS świadcząc usługi AAA [13]. Nowsze wersje TACACS to XTACACS i TACACS+. Istotne jest to, że TACACS i XTACACS przesyłają wszystkie dane jawnym tekstem. Z tego powodu mogą one być stosowane tylko w kontrolowanych sieciach. Zamiast nich powinien być stosowany TACACS+. Szyfruje on wszystkie przesyłane dane i z tego powodu jest bezpieczniejszy od RADIUS-a.



Wstecz  Spis treści  Dalej