Samotný postup vygenerování klíčů a podepsání zóny byl již mnohokrát na internetu uveden, takže nemá cenu jej popisovat znova. Článek tedy pouze odkazuje na návod uvedený na HowtoForge. Na základě tohoto návodu jsou jednotlivé kroky (vygenerování klíčů, podepsání zóny) zautomatizovány pomocí skriptu v BASHi. Nakonec je uveden postup jak přidat DS záznamy do registru DLV.
DNSSEC
DNSSEC je rozšíření systému DNS, které má za úkol zvýšit jeho bezpečnost a zajistit důvěryhodnost údajů získaných z DNS. DNSSEC tedy poskytuje uživatelům jistotu, že informace, které z DNS serveru/záznamů získal, byly poskytnuty správným zdrojem, jsou úplné a jejich integrita nebyla při přenosu narušena. Více informací o DNSSEC naleznete např. na [1, 2]
Vygenerování klíčů, podepsání zón
Samotný postup vygenerování klíčů již velmi podrobně popsal Falko Timme ve svém článku na HowtoForge [3].
Jelikož je manuální generování klíčů a následné podepisování zón zdlouhavá práce, vytvořil jsem si k tomuto účelu skript v BASHi - gen-sig-zones.sh. Skript vygeneruje KSK a ZSK klíče pro jednotlivé zóny, které následně podepíše. Zároveň vytvoří konfigurační soubory pro rollerd a donutsd - daemony pro automatické rolování klíčů a automatické testy podepsaných zón.
Po jakékoliv změně v zónovém souboru je nutno zónu znova podepsat. Pro znovu podepsání všech zón slouží skript resign-zones.sh
Přidání DS záznamu do DLV registru
Pokud vaše nadřazená zóna ještě není zabezpečena, nebo váš registrátor domén nepodporuje předání DS záznamu do nadřazené zóny, můžete využít registru DLV.
DLV registr je podepsaná zóna, která obsahuje záznamy, které suplují neexistující DS záznamy v nadřazené zóně.
Zjednodušeně to celé potom funguje tak, že se revolver nejdříve podívá do nadřazené zóny, zda tato obsahuje DS záznam. Pokud jej tam nenajde, zkusí se podívat do DLV registru. Pokud v registru najde záznam pro doménu, použije jej pro ověření důvěryhodného klíče pro ověřovaný podpis.
Návod na konfiguraci DNS serveru BIND9 naleznete v návodu na stránce DLV [4]. Samotné přidání zóny je pak jednoduché a celým procesem Vás provede průvodce. Postup lze shrnout do několika bodů:
- Zaregistrovat se
- Přidat zónu
- Přidat DNSKEY/DS záznam k zóně. ( DS zjistit getds zone.tld )
- Přidat vygenerovaný ověřovací TXT záznam do zónového souboru, znova podepsat zónu
- Počkat až se změny projeví na všech DNS serverech
- Znova ověřit DNSKEY na dlv.org, nebo počkat až dojde k automatickému ověření
Po dokončení ověřit zabezpečení DNSSEC některým z validátorů, např. [5, 6, 7].
Skripty:
gen-sig-zones.sh :
#!/bin/bash
#
# gen-sig-zones.sh
# ver.20130730
#
# Set variables
PATH="/etc/bind/zones";
KEYPATH="/etc/bind/zones-keys";
ROLLFILE="/etc/dnssec-tools/dnssec-tools.rollrec";
CHECKFILE="/etc/bind/checkzones.txt";
ADMIN="domainmaster"; # Set your email prefix ex. domainmaster@tld.com
# Paths to executables
LS="/bin/ls";
RM="/bin/rm";
TOUCH="/bin/touch";
AWK="/usr/bin/awk";
ECHO="/bin/echo";
GREP="/bin/grep";
ZONESIGNER="/usr/sbin/zonesigner";
ROLLINIT="/usr/sbin/rollinit";
# Recreate rollfile and checkfile
$RM -rf $ROLLFILE
$TOUCH $ROLLFILE
$RM -rf $CHECKFILE
$TOUCH $CHECKFILE
# Generate KSK and ZSK for all zones, create rollfile and checkfile
# - NOsigned zone filenames = "named.zone.tld"
# - '-l dlv.isc.org' = include DLV record
cd $KEYPATH
for FILE in $( $LS $PATH | $GREP -v ".signed"); do
ZONE=`$ECHO $FILE | $AWK -F. {' print $2"."$3 '}`
$ZONESIGNER -szopts '-l dlv.isc.org' -genkeys -usensec3 -zone $ZONE $PATH/$FILE
$ROLLINIT -zonefile $PATH/$FILE.signed -keyrec $KEYPATH/$ZONE.krf –admin $ADMIN@$ZONE $ZONE >> $ROLLFILE
$ECHO "$PATH/$FILE.signed $ZONE $ADMIN@$ZONE" >> $CHECKFILE
done
# Restart BIND
/etc/init.d/bind9 restart
resign-zones.sh :
#!/bin/bash
#
# resign-zones.sh
# ver.20130730
#
# Set variables
PATH="/etc/bind/zones";
KEYPATH="/etc/bind/zones-keys";
# Paths to executables
LS="/bin/ls";
AWK="/usr/bin/awk";
ECHO="/bin/echo";
GREP="/bin/grep";
ZONESIGNER="/usr/sbin/zonesigner";
# Sign zones
# - NOsigned zone filenames = "named.zone.tld"
# - '-l dlv.isc.org' = include DLV record
cd $KEYPATH
for FILE in $( $LS $PATH | $GREP -v ".signed"); do
ZONE=`$ECHO $FILE | $AWK -F. {' print $2"."$3 '}`
$ZONESIGNER -szopts '-l dlv.isc.org' -zone $ZONE $PATH/$FILE
done
# Restart BIND
/etc/init.d/bind9 restart
Zpět na vygenerování klíčů a podepsání zón
Odkazy:
[1] – CZ.NIC - O DNSSEC,[online].,,[cit. 2013-08-09], Dostupný na www :<http://www.nic.cz/dnssec/>
[2] – Seriál DNSSEC a bezpečné DNS - Root.cz,[online].,,[cit. 2013-08-09], Dostupný na www :<http://www.root.cz/serialy/dnssec-a-bezpecne-dns/>
[3] – Configuring DNSSEC On BIND9 (9.7.3) On Debian Squeeze/Ubuntu 11.10 | HowtoForge - Linux Howtos and Tutorials,[online].,,[cit. 2013-08-09], Dostupný na www :<http://www.howtoforge.com/configuring-dnssec-on-bind9-9.7.3-on-debian-squeeze-ubuntu-11.10>, případně na mém lokálním HOWTOs mirror (str.1, str.2, str.3, str.4)
[4] – ISC DLV Registry,[online].,,[cit. 2013-08-09], Dostupný na www :<https://dlv.isc.org/about/using>
[5] – DNSSEC Analyzer,[online].,,[cit. 2013-08-09], Dostupný na www :<http://dnssec-debugger.verisignlabs.com/>
[6] – DNSViz | A DNS visualization tool,[online].,,[cit. 2013-08-09], Dostupný na www :<http://dnsviz.net/>
[7] – DNSSEC Validator,[online].,,[cit. 2013-08-09], Dostupný na www :<http://www.dnssec-validator.cz/>