DNS (Domain Name System) Labolatorium Numer 5 DNS to system serwerów oraz protokołów komunikacyjnych zajmujących się zmianą adresów IP na adresy zrozumiałe dla urządzeń tworzących sieć komputerową. Zacznijmy od początku systemy oparte czy to o serwer DNS czy tez protokoły zmieniają znane adresy IP na nazwy bądź odwrotnie. Jak to działa dla przykładu po wpisaniu w przeglądarce http://212.77.100.101/ otworzy nam się nazwa wirtualnej polski i odwrotnie po wpisaniu na przykład korzystając z przeglądarki IE i wpisaniu w niej www.wp.pl nasza nazwa zostanie zamieniona na adres 212.77.100.101. Po co nam takie rozwiązanie? Odpowiedź jest dość prosta by kaŝdy z nas nie musiał pamiętać uciąŝliwych numerów wystarczy pamiętać nazwę, a nasza nazwa zostanie automatycznie zamieniona na dany adres. Jak to się dzieje? Adresy DNS składają się z domen internetowych rozdzielonych kropkami. W ten sposób moŝliwe jest budowanie hierarchii nazw, które porządkują Internet. DNS to złoŝony system komputerowy oraz prawny. Zapewnia z jednej strony rejestrację nazw domen internetowych i ich powiązanie z numerami IP. Z drugiej strony realizuje bieŝącą obsługę komputerów odnajdujących adresy IP odpowiadające poszczególnym nazwom. Jakie moŝemy wyróŝnić struktury Wewnątrz kaŝdej domeny moŝna tworzyć tzw. subdomeny - stąd mówimy, Ŝe system domen staje się 'hierarchiczny'. Przykładowo wewnątrz domeny.pl utworzono wiele domen: regionalnych jak 'opole.pl', czy 'warmia.pl' funkcjonalnych jak 'com.pl', 'gov.pl' czy 'org.pl' czy teŝ edu.pl oraz naleŝących do firm, organizacji lub osób prywatnych jak 'onet.pl', 'zus.pl'. Nazwy domen i poszczególnych komputerów składają się z pewnej liczby nazw, oddzielonych kropkami. Ostatnia z tych nazw jest domeną najwyŝszego poziomu. KaŜda z tych nazw moŝe zawierać litery, cyfry lub znak '-'. Od niedawna w nazwach niektórych domen moŝna uŝywać znaków narodowych (IDN) takich jak 'ą' czy 'Ŝ', ale większość współczesnych programów nie przewiduje moŝliwości wykorzystania takich funkcji. Trwają prace nad nowymi standardami odpowiadającymi DNS, które będą obsługiwać kodowanie Unicode, co pozwoli na umieszczanie w nazwach domen dowolnych znaków np. polskich
albo chińskich równocześnie. Wewnątrz kaŝdej z poddomen moŝna tworzyć dalsze poddomeny. DNS, jako system organizacyjny, składa się z dwóch instytucji - IANA i ICANN. Nadzorują one ogólne zasady przyznawania nazw domen i adresów IP. Jednak te dwie instytucje nie są w stanie zajmować się wszystkim i dlatego cedują swoje uprawnienia na szereg lokalnych instytucji i firm. W wielu krajach domena internetowa przyznana przez system DNS staje się własnością tego, kto pierwszy ją kupi. W Polsce jest ona tylko wynajmowana na określony czas. JeŜeli ktoś zrezygnuje ze swojej popularnej domeny i zwróci ją administratorowi DNS, to moŝe się spodziewać, Ŝe trafi ona w niepowołane ręce. Instytucje administrujące DNS na świecie: [2] ICANN-IANA - nadzór ogólny nad nazewnictwem i strukturą domen najwyŝszego poziomu (TLD - ang. Top Level Domains), np.:.pl,.gov,.com. VeriSign Global Registry Services - rejestracja i nadzór nad domenami:.net,.org,.com Rząd USA - rejestracja i nadzór nad domenami -.mil i.gov NeuLevel - rejestracja i nadzór nad domeną -.biz SITA - rejestracja i nadzór nad domeną -.aero Afilias Limited - rejestracja i nadzór nad domeną -.info Global Name Registry - rejestracja i nadzór nad domeną -.name EurID - rejestracja i nadzór nad domeną -.eu rządy poszczególnych krajów: rejestracja i nadzór nad domenami "krajowymi", np..pl (zazwyczaj rządy poszczególnych krajów przekazują ten nadzór wyspecjalizowanym instytucjom)
Instytucje administrujące DNS w Polsce [2] NASK - nadzór nad domeną.pl jako całością, oraz obsługa rejestrowania domen:.com.pl,.biz.pl,.org.pl,.net.pl oraz kilkudziesięciu innych domen "funkcjonalnych" (łącznie z np. dom.pl) oraz części domen lokalnych, np..waw.pl. IPPT PAN - rejestracja domeny.gov.pl; ICM -.art.pl,.mbone.pl; Stowarzyszenie Klon/Jawor -.ngo.pl; TASK -.med.pl,.gda.pl,.gdansk.pl,.gdańsk.pl,.sopot.pl,.gdynia.pl; SGH -.irc.pl; Politechnika Wrocławska.usenet.pl. MoŜemy wyróŝnić dwa podstawowe rodzaje zapytań do DNS [1] Rekurencyjne zmusza serwer do znalezienia wymaganej informacji lub zwrócenia wiadomości o błędzie. Ogólną zasadą jest, Ŝe zapytania od resolwera (program, który potrafi wysyłać zapytania do serwerów DNS) do serwera są typu rekurencyjnego, czyli resolwer oczekuje podania przez serwer adresu IP poszukiwanego hosta. Wykonywanie zapytań rekurencyjnych pozwala wszystkim uczestniczącym serwerom zapamiętać odwzorowanie (ang. DNS caching), co podnosi efektywność systemu. Iteracyjne wymaga od serwera jedynie podania najlepszej dostępnej mu w danej chwili odpowiedzi, przy czym nie musi on łączyć się jeszcze z innymi serwerami. Zapytania wysyłane pomiędzy serwerami są iteracyjne, przykładowo wiarygodny serwer domeny org nie musi znać adresu IP komputera www.pl.wikipedia.org, podaje więc najlepszą znaną mu w tej chwili odpowiedź, czyli adresy serwerów autorytarnych dla domeny wikipedia.org
Odpowiedzi na zapytania Autorytatywne dotyczące domeny w strefie, nad którą dany serwer ma zarząd, pochodzą one bezpośrednio z bazy danych serwera, jest to pozytywna odpowiedź zwracana do klienta. W komunikacie DNS zawiera ustawiony bit uwierzytelniania (AA - Authoritative Answer)wskazujący, Ŝe odpowiedź została uzyskana z serwera dokonującego bezpośredniego uwierzytelnienia poszukiwanej nazwy Nieautorytatywne dane które zwraca serwer pochodzą spoza zarządzanej przez niego strefy, odpowiedzi nieautorytatywne są buforowane przez serwer przez czas TTL. Wyspecyfikowany w odpowiedzi, później są usuwane. Protokół DNS Zapytania i odpowiedzi DNS są najczęściej transportowane w pakietach UDP. KaŜdy komunikat musi się zawrzeć w jednym pakiecie UDP (standardowo 512 oktetów, ale wielkość tę moŝna zmieniać pamiętając równieŝ o ustawieniu takiej samej wielkości w MTU Maximum Transmission Unit). W innym przypadku przesyłany jest protokołem TCP i poprzedzony dwubajtową wartością określającą długość zapytania i długość odpowiedzi (bez wliczania tych dwóch bajtów). Format komunikatu DNS został zdefiniowany w RFC 1035. Format komunikatu DNS: [2] NAGŁÓWEK - (Header) ZAPYTANIE - (Question) do serwera nazw ODPOWIEDŹ - (Answer) zawiera rekordy będące odpowiedzią ZWIERZCHNOŚĆ - (Authority) wskazuje serwery zwierzchnie dla domeny DODATKOWA - (Additional) sekcja informacji dodatkowych Forma nagłówka, który określa rolę całego komunikatu: Sekcja nagłówka występuje zawsze. W sekcji zapytania zawsze znajduje się jedno zapytanie zawierające nazwę domenową, Ŝądany typ danych i klasę. Sekcja odpowiedzi zawiera rekordy zasobów stanowiące odpowiedź na pytanie.
ID [16 bitów] (IDentifier) identyfikator tworzony przez program wysyłający zapytanie; serwer przepisuje ten identyfikator do swojej odpowiedzi, dzięki czemu moŝliwe jest jednoznaczne powiązanie zapytania i odpowiedzi QR [1 bit] (Query or Response) określa, czy komunikat jest zapytaniem (0) czy dpowiedzią (1) OPCODE [4 bity] określa rodzaj zapytania wysyłanego od klienta, jest przypisywany przez serwer do odpowiedzi. Wartości: 0 QUERY standardowe zapytanie, 1 IQUERY zapytanie zwrotne, 2 STATUS pytanie o stan serwera, 3-15 zarezerwowane do przyszłego uŝytku AA [1 bit] (Authoritative Answer) oznacza, Ŝe odpowiedź jest autorytatywna. TC [1 bit] (TrunCation) oznacza, Ŝe odpowiedź nie zmieściła się w jednym pakiecie UDP i została obcięta. RD [1 bit] (Recursion Desired) oznacza, Ŝe klient Ŝąda rekurencji pole to jest kopiowane do odpowiedzi RA [1 bit] (Recursion Available) bit oznaczający, Ŝe serwer obsługuje zapytania rekurencyjne Z 3 bity zarezerwowane do przyszłego wykorzystania. Pole powinno być wyzerowane. RCODE (Response CODE) kod odpowiedzi. Przyjmuje wartości: 0 brak błędu 1 błąd formatu serwer nie potrafił zinterpretować zapytania 2 błąd serwera wewnętrzny błąd serwera 3 błąd nazwy nazwa domenowa podana w zapytaniu nie istnieje 4 nie zaimplementowano serwer nie obsługuje typu otrzymanego zapytania 5 odrzucono serwer odmawia wykonania określonej operacji, np. transferu strefy
6-15 zarezerwowane do przyszłego uŝytku Przykład działania systemu DNS Oto przykład działania systemu DNS. UŜytkownik komputera wpisuje w swojej przeglądarce stron WWW adres internetowy pl.wikipedia.org. Przeglądarka musi poznać adres IP komputera będącego serwerem WWW dla tej strony. Cały proces przebiega zgodnie z tabelą. NajwaŜniejsze typy rekordów DNS, oraz ich znaczenie: rekord A lub rekord adresu (ang. address record) mapuje nazwę domeny DNS na jej 32-bitowy adres IPv4. rekord AAAA lub rekord adresu IPv6 (ang. IPv6 address record) mapuje nazwę domeny DNS na jej 128 bitowy adres IPv6. rekord CNAME lub rekord nazwy kanonicznej (ang. canonical name record) ustanawia alias nazwy domeny. Wszystkie wpisy DNS oraz poddomeny są poprawne takŝe dla aliasu. rekord MX lub rekord wymiany poczty (ang. mail exchange record) mapuje nazwę domeny DNS na nazwę serwera poczty. rekord PTR lub rekord wskaźnika (ang. pointer record) mapuje adres IPv4 na nazwę kanoniczną hosta. Określenie rekordu PTR dla nazwy hosta (ang. hostname) w domenie in-addr.arpa, który odpowiada adresowi IP, pozwala na implementację odwrotnej translacji adresów DNS (ang. reverse DNS lookup). rekord NS lub rekord serwera nazw (ang. name server record) mapuje nazwę domenową na listę serwerów DNS dla tej domeny. rekord SOA lub rekord adresu startowego uwierzytelnienia (ang. start of authority record) ustala serwer DNS dostarczający autorytatywne informacje o domenie internetowej.
rekord SRV lub rekord usługi (ang. service record) pozwala na zawarcie dodatkowych informacji dotyczących lokalizacji danej usługi, którą udostępnia serwer wskazywany przez adres DNS. TXT - rekord ten pozwala dołączyć dowolny tekst do rekordu DNS. Rekord ten moŝe być uŝyty np. do implementacji specyfikacji Sender Policy Framework. Inne typy rekordów dostarczają informacje o połoŝeniu hosta (np. rekord LOC), lub o danych eksperymentalnych. Konfiguracja Zwykle dane o konfiguracji protokołu DNS w domowym komputerze przekazywane są przez dostawcę Internetu. Większość operatorów udostępnia w swojej sieci protokół DHCP. Dzięki niemu komputer automatycznie moŝe pobrać adres serwera DNS operatora. Serwer ISP działa najszybciej, bo ma zgromadzone w swojej pamięci najwaŝniejsze adresy i jest blisko uŝytkownika Internetu. Serwery DNS Telekomunikacji Polskiej to 194.204.152.34 oraz 194.204.159.1. Kiedy system automatycznego pobierania adresów serwera DNS nie działa, moŝna je wprowadzić ręcznie. W systemie GNU/Linux pozwala na to plik: /etc/resolv.conf który zawiera listę serwerów DNS. Dla przykładu, jeŝeli chcemy ręcznie ustawić serwery TPSA jako aktywne to moŝemy wpisać do tego pliku ich adresy: nameserver 194.204.152.34 nameserver 194.204.159.1 i wtedy komputer wykorzysta je do odnajdywania nazw DNS. W GNU/Linuksie i innych wersjach Uniksa istnieje plik: /etc/hosts który zawiera listę zdefiniowanych przez uŝytkownika nazw komputerów: 127.0.0.1 localhost #adres lokalnego interfejsu sieciowego
192.168.0.1 brama #serwer dostępu do sieci 192.168.0.2 kasia #inne komputery w sieci lokalnej 192.168.0.3 janek W systemach Windows NT, Windows 2000 oraz Windows XP plik taki moŝna znaleźć w: %SYSTEMROOT%\system32\drivers\etc\hosts najczęściej odpowiada to ścieŝce: C:\WINDOWS\system32\drivers\etc\hosts UŜytkownik moŝe do tego pliku wpisać własne nazwy dla komputerów lokalnych. Dzięki temu nie będzie musiał wpisywać ich adresów IP, tylko łatwe do zapamiętania nazwy. Nazwa mnemoniczna localhost oznacza komputer, na którym pracujemy. JeŜeli uŝytkownik chce w swojej sieci lokalnej uruchomić własny serwer DNS moŝe posłuŝyć się programem BIND. Jednak jest on dosyć skomplikowany w uŝytkowaniu i podatny na atak. Z tego względu lepiej jest uruchomić własny serwer DHCP, który wszystkim komputerom w sieci lokalnej przekaŝe właściwe adresy DNS. Odnośnie bezpieczeństwa NaleŜy zdać sobie sprawę, Ŝe system DNS został zaprojektowany wiele lat temu przez naukowców. Nie przewidzieli oni istnienia światowej sieci uŝywanej do prowadzenia powaŝnych operacji. W Internecie pojawiła się grupa osób wykorzystująca luki w systemie DNS do łamania prawa. Wyobraźmy sobie Alicję, która jest uŝytkownikiem e-banku o adresie tanibank.pl. Alicja płaci przez Internet swoje rachunki i obserwuje, jak rośnie jej debet. W tym momencie pojawia się Paweł i wysyła do Alicji list, podając się za Tani Bank SA i prosi ją, Ŝeby weszła na stronę tanibank.pt i zaktualizowała dane, bo inaczej skasuje jej konto. Zdenerwowana Alicja wchodzi na stronę tanibank.pt podaje swoje hasła i wpisuje jeszcze raz swoje dane. Adres tanibank.pt naprawdę prowadzi do komputera Pawła, który korzystając z hasła Alicji robi jej naprawdę spory debet. Błąd Alicji polegał na tym, Ŝe zaufała systemowi DNS. Oczywiście komputery zadziałały poprawnie. Alicja nie zauwaŝyła, Ŝe przesłany przez Pawła adres róŝni się ostatnią literą. Administrator domeny.pt przyznał Pawłowi domenę tanibank.pt, nie zdając sobie sprawy z istnienia strony tanibank.pl. JeŜeli Alicja chce być pewna, Ŝe nie zostanie oszukana, musi posłuŝyć się oprócz DNS jakimś systemem kryptografii, np. SSL. Klucze cyfrowe pozwalają na weryfikację toŝsamości banku.
Przeglądarka internetowa zazwyczaj informuje uŝytkownika, Ŝe strona WWW jest autentyczna odpowiednią ikoną, zwykle w kształcie kłódki. Wynika z tego wprost Ŝe znaczenie DNS jak i nazw odgrywa bardzo waŝną rolę i musi być nadzorowana przez instytucje do tego wyznaczone. Pyzatym kaŝdy uŝytkownik jak w omawianym przez nas wcześniej przykładzie sam powinien zadbać o bezpieczeństwo nie tylko DNS- u ale przede wszystkim własnych danych. [3] [1] Windows 2000 DNS Autorzy: Roger Abell, Herman Knief, Jeffrey Graham, Andrew Daniels Wydania: 09/2001 [2] http://pl.wikipedia.org [3] Windows Server 2003. Podręcznik administratora Autorzy: Nelson Ruest, Danielle Ruest Wydania: 03/2004 Opracował: Adam Kaltenbek.