DNS

Štefan Miklošovič, 387090@fi.muni.cz

Obsah

Čo je to DNS

DNS je hierarchický systém doménových mien, ktorý je realizovaný servermi DNS a protokolom rovnakého mena, skrz ktorý si vymieňajú informácie. Jeho hlavnou úlohou a príčinou vzniku boli vzájomné prevody doménových mien a IP adries uzlov siete. DNS používa porty TCP/53 aj UDP/53. DNS servery sú organizované hierarchicky, systém DNS umožňuje efektívne udržovať decentralizované databázy doménových mien a ich preklady na IP adresy (a naopak).

Potreba vzniku DNS vznikla prirodzene. Kým DNS nebolo v prevádzke, klient, ktorý chcel kontaktovať server skrz jeho doménové meno, musel mať v počítači zoznam, ktorý mapoval IP adresu na toto meno. Tento spôsob bol postupom času neudržateľný a vrcholne nepraktický, aj keď sa napr. zoznam IP adries a im prislúchajúcich doménových mien udržiaval centralizovane, stále sa hlavné problmémy len obchádzali. A tak vzniklo DNS.

Ako funguje DNS

Priestor doménových mien je vlastne strom. Každý uzol tohoto stromu obsahuje informácie o časti mena (doméne). Koreňom stromu je tzv. koreňová doména, ktorá udržiava informácie o adresách serverov TLD (top level domains). Tieto domény sú buď tematické (com, edu, mil, info ...) alebo štátne (cz, sk, us, br, cn ..). Strom možno deliť do tzv. zón a táto zóna je autoritatívna pre spravované domény. Zóna môže obsahovať viac domén, ale vo vyšších vrstvách DNS systému obsahuje zóna práve jednu doménu.

Riešenie dotazu

Koncový počítač má v operačnom systéme definové DNS servery, na ktoré majú smerovať svoje dotazy. V unix-like systémoch je to /etc/resolv.conf. Keďže jeden krát vidieť je lepšie ako sto krát počuť, riešenie dotazu som si dovolil opísať na názornom príklade. Dotaz sa môže riešiť rekurzívne alebo nerekurzívne. Rekurzívne sa správajú zvyčajne lokálne servery, kvoli záťaži. Nerekurzívne sa správajú napr. koreňové servery, tie len odkazujú na servery v stromovej štruktúre pod nimi.

Typy DNS serverov

DNS servery môžu zohrávať voči doméne jednu z troch rolí

Primárny DNS server

je to server, na ktorom dáta vznikajú. Ak chceme v doméne previesť zmenu, musíme tak spraviť na primárnom serveri. Každá doména má jeden primárny server.

Sekundárny DNS server

tento server je kópiou primárneho. Tento server priebežne aktualizuje dáta a slúži ako záloha v prípade, že nastane výpadok primárneho servera alebo ako prostriedok na znižovanie záťaže u frekventovaných domén, každá doména by mala mať aspoň jeden sekundárny server.

Pomocný (caching only) DNS server

slúži ako vyrovnávacia pamäť pre zníženie celého systému. Uchováva si odpovede a poskytuje ich klientovi (resolver) kým nevyprší ich platnosť.

Root servery

mapa root serverov
Názov root serveruOperátor
AVeriSign Global Registry Services
BUniversity of Southern California - Information Sciences Institute
CCogent Communications
DUniversity of Maryland
ENASA Ames Research Center
FInternet Systems Consortium, Inc.
GU.S. DOD Network Information Center
HU.S. Army Research Lab
IAutonomica/NORDUnet
JVeriSign Global Registry Services
KRIPE NCC
LICANN
MWIDE Project

Implementácie DNS

porovnanie dns serverov

na roznych platformach

Konfigurácia DNS

Nasleduje konfigurácia dns systému BIND na operačnom systéme Mac OS X.
xSup1-2:~ miklosovic$ cat /etc/named.conf 
controls {
	inet 127.0.0.1 port 54 allow { any; };
};

options {
	directory "/var/named";
	listen-on { 127.0.0.1; 10.1.1.0/16; };
	forwarders { 4.2.2.4; 10.0.0.138; };
};

// dopredná zóna
zone "xws" IN {
        type master;
        file "xws/xws.zone";
        allow-update { any; };
};

// reverzná zóna
zone "1.10.in-addr.arpa" IN {
        type master;
        file "xws/xws.reverse";
        allow-update { none; };
};

// 
// a caching only nameserver config
// 
zone "." IN {
	type hint;
	file "named.ca";
};

zone "localhost" IN {
	type master;
	file "localhost.zone";
	allow-update { none; };
};

zone "0.0.127.in-addr.arpa" IN {
	type master;
	file "named.local";
	allow-update { none; };
};

logging {
        category default {
                _default_log;
        };

        channel _default_log  {
                file "/Library/Logs/named.log";
                severity info;
                print-time yes;
        };
};

Typy záznamov

Aobsahuje IPv4 adresu priradenú doménovému menunieco IN A 1.2.3.4
AAAAobsahuje IPv6 adresu priradenú doménovému menunieco IN AAAA 2001:718:1c01:1:02e0:7dff:fe96:daa8
CNAMECanonical Name Record - alias, iné meno pre meno, ktoré už bolo zavedenéwww IN CNAME nieco
MXMail eXchange record - oznamuje adresu a prioritu serveru pre príjem elektronickej pošty pre danú doménu.
nieco	IN	MX	10	mail
	IN	MX	20	mail.inde.cz.
	
NSName Server record - oznamuje meno autoritatívneho DNS serveru pre danú doménuIN NS niekde.com
PTRPoinTeR record - špeciálny typ záznamu pre reverzné zóny, na pravej strane je meno, na ľavej adresa.4 IN PTR nieco.niekde.sk.
SOAStart Of Authority. Týmto záznamom sa začína zónový súbor. Obsahuje meno primárneho serveru, e-mail správcu a údaje:
  • Serial - sériové číslo - zväčšuje sa s každou zmenou v zázname - tak sekundárny server pozná že prišlo k zmene
  • Refresh - frekvencia opätovného dotazovania sekundárneho servera na novú verziu zóny (v sekundách)
  • Retry - frekvencia opakovania pokusov o synchronizáciu sekundárneho servera v prípade, že sa mu to nepodarí
  • Expire - čas platnosti dát, po ktorom označí sekundárny server svoje záznamy za neaktuálne, ak sa mu nepodarí kontaktovať primárny server
  • TTL - implicitná platnosť údajov
  • 
    	

    dopredná zóna

    xSup1-2:~ miklosovic$ cat /var/named/xws/xws.zone 
    $TTL 86400
    $ORIGIN xws.
    xws.            1D      IN      SOA     mac.xws.   root.mac.xws.      (
                                               2009012001   ; serial (d. adams)
                                                    3H      ; refresh
                                                    15M     ; retry
                                                    1W      ; expiry
                                                    1D )    ; minimum
    
                            IN      NS              mac.xws.
                            IN      MX      10      mail
    
    linux           1D      IN      A       10.1.1.105
    mac             1D      IN      A       10.1.1.107
    bonjour			IN      CNAME   mac.xws.
    davical			IN		CNAME	linux.xws.
    calendar		IN		CNAME	linux.xws.
    pgadmin			IN		CNAME	linux.xws.
    
    _carddav._tcp.davical.xws. IN      SRV 0    5      80   davical.xws.
    

    reverzná zóna

    Reverzné mapovanie zistí k IP adrese kanonický názov hostiteľa. Preto bola vytvorená špeciálna doména in-addr.arpa. Tá obsahuje IP adresy v obrátenej bodkovej notácii. teda napd. 10.1.1.107 zodpovedá 107.1.1.10.in-addr.arpa. Medzi zónami a IP sieťami môže byť vzťah 1:n, ku každej IP podsieti sa musia vytvoriť zodpovedajúce zóny v in-addr.arpa.

    xSup1-2:~ miklosovic$ cat /var/named/xws/xws.reverse 
    $TTL 86400
    @       1D      IN      SOA     mac.xws    root.mac.xws.      (
                                    2008062501      ; Serial
                                            3H      ; Refresh
                                            15M     ; Retry
                                            1W      ; Expire
                                            1D)     ; Minimum
                                            
    			IN      NS      mac.xws.
    107.1			IN      PTR     mac.xws.
    105.1			IN      PTR     linux.xws.
    
    _carddav._tcp.davical.xws. IN      SRV 0    5      80   davical.xws.
    

    Časté chyby

  • bodky v súboroch so záznamami
  • zvýšenie sériového čísla, treba to zmeniť pri každej zmene, inak sa nedostane na sekundárne servery
  • server po zmenách nereštartujeme
  • reverzný (PTR) záznam ukazuje na CNAME záznam
  • MX záznam ukazuje na CNAME záznam
  • CNAME záznam ukazuje na CNAME záznam
  • DNSSEC

    DNSSEC je skratka pre Domain Name System Security Extensions, v informatike je to sada IETF inštrukcii, ktoré umožňujú zabezpečiť informácie poskytované DNS systmémom na Internete. Jedná sa o rozšírenia, ktoré klientom DNS (resolvery) umožňuje overenie dát, ich integrity. Nezaisťuje však zašifrovanie (utajenie) prenášaných dát a nezaručuje ich dostupnosť.

    DNSSEC používa asymetrické šifrovanie. Držiteľ domény, ktorá používa DNSSEC, vygeneruje privátny a verejný kľúč. Svojim privátnym kľúčom potom elektronicky podpíše technické údaje, ktoré o svojej doméne do DNS vkladá. Pomocou verejného kľúča, ktorý je uložený u nadradenej autority jeho domény je tak možné overiť pravosť tohoto podpisu. Aj na úrovni národnej domény sú dáta v DNS elektronicky podpísané a verejný kľúč k tomuto podpisu je opäť správcom registru predaný nadradenej autorite.

    Medzi svetových invátorov patrí Česká republika (.cz), ktorá používa DNSSEC pre svoje top-level domény. Prvým registrátorom, ktorý začal ponúkať DNSSEC, bol Web4U a v súčasnej dobe je zároveň najväčším registrátorom DNSSEC vo svetovom meradle.

    Bezpečnosť + chroot

    Najzámejší a najrozšírenejší DNS server BIND bol v minulosti veľmi kritizovaný pre svoje bezpečnostné diery, ktorých zneužitie moholo pre systém priniesť rad problémov. Preto sa vyvinuli riešenia, ktoré aspoň z časti eliminujú potenciálne problémy, napríklad chroot. Chrootovaním dosiahneme to, že bind je "uväznený" v určitom adresári, takže nemôže pristupovať alebo čítať súbory mimo tohoto adresára, bind proces nevidí nič zo súborového systému os. Samotný proces chrootovania pozostáva z týchto krokov:

    1. vytvorenie užívateľa a skupiny named
    2. vytvorenie adresárovej štruktúry
    3. prekopírovanie súborov špecifických pre bind do chroot adresárovej štruktúry
    4. vytvorenie zariadení /dev/null /dev/random (/dev/zero)
    5. nastavíme prísnejšie prístupové práva
    6. nainštalujeme bind do chroot adresára, upravíme inicializačné skripty

    Literatúra