Stručně a jasně o DNSSEC
Cílem DNSSEC je chránit uživatele před zfalšovanými DNS údaji. Ty by totiž mohly odvádět nepozorovaně lidi například na phishingové stránky. DNSSEC přidává do DNS záznamu elektronický podpis, který potvrzuje jeho pravost. Překotné nasazování DNSSEC způsobilo publikování takzvaného Kaminského útoku, který umožňuje rekurzivnímu DNS serveru podstrčit falešné informace, které jsou pak rozšiřovány dále.
Pokud vás zajímá podstata celé technologie DNSSEC, určitě si přečtěte seriál Ondřeje Surého, který vše vysvětluje velmi podrobně. V Česku je pomocí DNSSEC chráněno asi 15 % domén, což se sice nezdá jako příliš vysoké číslo, přesto to z nás ve světovém měřítku dělá DNSSEC velmoc.
Přestože je celý DNSSEC velmi komplexní a jeho pochopení vyžaduje nemálo studia (třeba už zmíněného seriálu), dobrou zprávou je, že pro samotné nasazení nepotřebujete nic z toho vědět. Stačí prostě nainstalovat správný rekurzivní DNS server a provést jeho (docela triviální) konfiguraci. Právě tímto praktickým nasazením se dále bude zabývat tento článek.
Unbound je náš muž
DNSSEC je tedy spuštěn, kořenová zóna je podepsaná a tak nám nic nebrání v ověřování pravosti podepsaných domén. To by za nás měl dělat DNS server našeho poskytovatele, který používáme. Bohužel většina poskytovatelů ještě DNSSEC do svých DNS neimplementovala, takže se budeme muset zařídit sami. Je možné si bez problému nainstalovat Unbound i na lokální počítač, pokud jej nemáme možnost připravit pro celou sít.
Zřejmě nejpoužívanějším DNS serverem vůbec je BIND. Je velmi mocný a umí vše, co byste kdy mohli od DNS serveru chtít. Bohužel to zároveň znamená, že se jedná o software, jehož ovládnutí není příliš snadné a řada uživatelů se jej tedy bojí. Pravdou je, že v případě rekurzivní DNS pro lokální síť se jedná o pověstný kanón na vrabce.
Unbound je přímou konkurencí serveru BIND a je určen právě pro nasazení v roli rekurzivního serveru. První návrhy Unboundu byly vytvořeny teprve v roce 2004. Později přišly investice od společností VeriSign, NLnet Labs a dalších a tak v roce 2006 začal vývoj skutečně produkční aplikace. Dnes jej najdeme ve většině distribucí, včetně těch pro embedded zařízení jako OpenWRT. Nasazení je skutečně otázkou několika minut.
Jdeme na to
Instalace by měla být naprosto triviální, stačí použít balíčkovací systém. Mimochodem Unbound existuje i pro Windows. Nemám možnost něco takového otestovat, ale předpokládám, že se vše bude chovat naprosto stejně.
Konfiguraci najdete v /etc/unbound/unbound.conf
. Celý soubor je připravený a dobře komentovaný, neměli byste se v něm ztratit. V první řadě je třeba nastavit rozhraní, na kterých bude Unbound poslouchat a obsluhovat dotazy. Standardně jsou nastaveny jen lokální adresy IPv4 i IPv6:
interface: 127.0.0.1 interface: ::1
Pokud chcete dělat překlad i jiným počítačům v síti, nastavte IP adresy některého z vnějších rozhraní. Další důležitá volba určuje, ve kterém souboru je uložen veřejný klíč kořenové zóny. Ten je jediným centrálním bodem důvěry v celém DNSSEC a proti němu se pak kontrolují podpisy nižších autorit až k té nejnižší.
auto-trust-anchor-file: "root.ds"
Do souboru /etc/unbound/root.ds
ještě musíme tento klíč uložit. Najdeme ho na IANA.org a pravost můžete ověřit pomocí SSL nebo GPG. Prověření provedeme tak, že ze stejného adresáře na serveru IANA stáhneme ještě soubor root-anchors.asc nebo root-anchors.p7s. Poté spustíme pro SSL:
$ openssl smime -verify -noverify -inform DER -in root-anchors.p7s
-content root-anchors.xml
Nebo pro GPG:
$ gpg --recv-key 0F6C91D2
$ gpg --verify root-anchors.asc root-anchors.xml
Ze staženého a ověřeného XML souboru vytvoříme jeden řádek, ve kterém jsou položky odděleny mezerou. Celý tento řádek zkopírujeme do zmíněného souboru root.ds
. Příjemné je, že klíč musíme získat jen na začátku při první konfigurací serveru. Unbound jej bude v budoucnu získávat z DNS sám a o aktualizaci klíče se tak už nemusíme nikdy starat. Samozřejmě server potřebuje mít právo zápisu do zmíněného souboru.
A to je vše. Teď už stačí namířit konfiguraci našeho počítače (nebo počítačů) na nás nový DNS server. Stačí v souboru /etc/resolv.conf
uvést řádku
nameserver 127.0.0.1
Programy žádající systém o překlad adresy tak budou automaticky používat náš DNS server. Výsledkem také bude, že by mělo vše probíhat rychleji, protože náš Unbound si bude udržovat už přeložené adresy v cache. Pokud chceme, aby záznamy sám obnovoval těsně před vypršením, přidáme mu do konfigurace ještě užitečnou volbu:
prefetch: yes
Zkouška ohněm
Existuje několik možností ověření. Nejjednodušší je použít příkaz dig
a hledat ve výstupu správný flag. Konkrétní příklad:
$ dig +dnssec www.dnssec.cz|grep ad ;; flags: qr rd ra ad
Pokud DNS sever vrátil flag „ad“, znamená to, že provedl ověření a vše proběhlo v pořádku. Můžete ještě vše vyzkoušet na doméně rhybar.cz, která má schválně špatný DNSSEC podpis, aby bylo možné ověřit vše i na „podvrženém“ záznamu. Na příkaz
$ dig +dnssec www.rhybar.cz
byste tedy neměli dostat žádnou IP adresu. Pokud oba výše uvedené příklady fungují, používáte správně DNSSEC.
Uživateli na očích
Obecnou nevýhodou DNSSEC je, že je pro uživatele vlastně skryt a vše probíhá na pozadí. To řadu lidí znervózňuje, protože to vypadá, že se vlastně „nic neděje“. Existují ovšem nejméně dva způsoby, jak vše ověřit přímo uživateli na očích.
Na webu DNSSEC.cz je k dispozici grafický ukazatel – klíč – měnící barvu podle toho, zda váš DNS server DNSSEC podporuje nebo ne.
Druhou možností je rozšíření pro Firefox jménem DNSSEC Validátor. To se usídlí v adresním řádku Firefoxu a obarvuje se podle toho, jak vám DNSSEC funguje. Nezapomeňte po instalaci v nastavení zvolit správný DNS server.