DNS
Adam Tkáč, 207449@mail.muni.cz
DNS - co to vlastně je
- celosvětově distribuovaná databáze
- primárně slouží k přiřazení jmen IP adresám
- původně se pro tento účel používal soubor /etc/hosts
- databáze je uložena na strojích - nameserverech
- klienti - resolvery - se dotazují nameserverů
Struktura DNS
- root nameservery (ftp://internic.net/domain/named.root) - nerekurzivní, delegují správu subdomén
- nameservery vyšších domén (.cz, .com, .edu ...) a pote každá subdoména ma vlastní nameserver
- pokud nameserver neví odpověď tak se ptá root nameserveru (nebo forwardera)
Resolver
- klient dotazující se nameserverů
- konfigurace typicky v /etc/resolv.conf (popřípadě /etc/nsswitch.conf)
- možnosti - nameserver, domain, search, dále v manuálové stránce resolv.conf(5)
- nevýhody - bezpečnost (neumí TSIG, DNSSEC, ...) - používat vlastní nameserver jako resolver? :)
Nameserver
- program odpovídající na dotazy resolverů
- záznamy pro určitou (sub)doménu uloženy v tzv. zónách
- primární - obsahuje zónu pro danou doménu, neměl by být vidět na síti
- sekundární - pravidelně si stahuje zónu z primárního nameserveru
- autoritativní/neautoritativní - pokud je NS záznam serveru v zóně (primární + sekundární)
- caching-only - není autoritativní pro žádnou zónu
- implementace - BIND, NSD, djbdns, M$ servery
- rekurzivní/iterativní - když nameserver neví odpoveď tak buď se zeptá sám dalšího ns, nebo odpoví ptej se támhle
DNS protokol, rozšíření, bezpečnost
- resolvery a nameservery spolu komunikují DNS protokolem (původně RFC 1032 - RFC 1035)
- dnes jeden z klíčových protokolů na sítích
Trocha terminologie
- Query - dotaz na nameserver
- RR (Resource Record) - defakto název dat, co putují po síti
- TTL (Time To Live) - jak dlouho může být záznam cachován
- Type - A, AAAA, NS, SOA, CNAME, DNAME, ... - typ RR
- Class - IN, ANY, CH, ... - tříta RR
- komunikace na UDP, port 53, pro větší packety se používá TCP
- přesný formát RR prvně specifikován v RFC 1035, mnohokrát aktualizován
- původní protokol naprosto nezabezpečený, dnes bezpečnost VELMI podceňována (rsh vs. ssh)
TSIG - Transaction SIGnature
- funguje na principu sdíleného tajemství
- každá query je podepsána
- dnes už zastaralý (distribuce klíčů, MD5)
EDNS + DNSSEC
- EDNS - rozšíření původního protokolu, možnost další rozšiřitelnosti, nutné pro DNSSEC
- DNSSEC - založena na veřejných/privátních klíčích
- GSS-TSIG - používaný u M$ serverů, autentizace přes kerberos
BIND - Berkeley Internet Name Domain/Daemon
- tradiční, referenční, multiplatformní implementace nameserveru - démon named, www.isc.org
- okolo 70% nameserverů na internetu
- může být nasazen na všech úrovních
- verze 8 nepodporována, dnes používány řady 9.3 a 9.4
- konfigurace v /etc/named.conf
Příklad /etc/named.conf
options {
directory "/var/named"; // kde jsou uloženy soubory se zónami
forwarders { IP; }; // kam se směřují query, na ktere neni odpověď
recursion yes; // povolení rekurzivního chování
allow-query { IP;
10.0.0.0/24;
key server1-server2; }; // kdo se může dotazovat (TSIG)
};
zone "." IN { // zóna kořenových nameserverů
type hint;
file "named.ca";
};
zone "bogus.com" IN { // dopředná zóna pro bogus.com.
type master; // primární zóna
file "bogus.com.db"; // kde se nachází soubor zóny
allow-update { IP; key server1-server2; }; // kdo smí updatovat záznamy
allow-transfer { IP; key server1-server2; } // kdo může stahovat zónu
};
zone "0.0.10.in-addr.arpa" IN { // reverzní zóna pro 10.0.0
type master;
file "bogus.com.db.reverse"
};
zone "slave.bogus.com" IN {
type slave; // sekundární zóna
file "slave.bogus.com";
masters { 1.1.1.1 key server1-server2; }; // primární server
};
key server1-server2 { // TSIG
secret "VSULj7NkAd7g6tFFrfE9hg==";
algorithm hmac-md5;
};
server 1.1.1.1 { // pro komunikaci se serverem 1.1.1.1 používej tento klíč
keys server1-server2;
};
- generování TSIG: $ dnssec-keygen -a HMAC-MD5 -b 128 -n HOST server1-server2
Vzled zóny pro bogus.com
$TTL 1D
@ IN SOA ns.bogus.com 123456.fi.muni.cz ( ; Primární NS a email administrátora
20060304 ; Slouží k identifikaci verze zóny pro sekundární NS
3H ; Jak často sekundární NS stahuje zónu
15M ; Pokud stažení selže za jak dlouho stahovat znovu
2W ; Za jak dlouho je zóna neplatná (pokud neni updatovaná)
1D ) ; Defaultni TTL pro zaznamy
IN NS ns ; autoritativní server
IN NS ns-slave ; -||-
IN MX ns ; mailserver
alias IN CNAME ns ; alias.bogus.com. je alias pro ns.bogus.com.
ns IN A 192.168.2.111 ; IPv4 dopředné mapování
ns-slave IN AAAA asdf::asdf ; IPv6 dopředné mapování
Bezpečnost
- chroot - tradiční, ale na moderních systémech zastaralý způsob ochrany proti "Remote code execution" útokům (parametr -t a -u)
- SELinux, moderní kompilátor, ...
archiv referátů PV090