DNSSEC: I have no root and I must scream

11. 2. 2009
Doba čtení: 7 minut

Sdílet

Možná si ještě vzpomenete na chybovou hlášku některých verzí jádra, která se vypisovala v případě, že nebyl nalezen diskový oddíl pro kořenový adresář. V případě Linuxu došlo k zastavení bootovací sekvence. U DNSSEC není situace tak kritická a existují způsoby, jak chybějící podpis kořenové zóny vyřešit.

Po podpisu kořenové zóny bude stačit v konfiguraci validujícího resolveru mít pouze klíč pro kořenovou zónu. V ideální případě všechny ostatní domény budou podepsány tak, že k použitým klíčům povede řetěz důvěry od kořenového klíče. V současnosti však kořenová zóna podepsána není a proto je zapotřebí tuto situaci nějakým způsobem vyřešit. Pokud pomineme možnost DNSSEC validaci vůbec nepoužívat, tak nám zbývají tři cesty, jak vytvořit řetěz důvěry.

Způsob první – Jednotlivé klíče

Způsob první už jsme si ukázali v předchozích článcích. Do konfigurace validujícího resolveru přidáme jednotlivé klíče – pevné body důvěry – pro všechny domény (resp. ostrovy důvěry), které chceme validovat. Tento způsob je nejjednodušší, lze jej použít i na doménová jména, která nejsou veřejná, a administrátor má věci pevně pod kontrolou. Z výhod plynou i nevýhody – je zapotřebí se o individuální klíče pečlivě starat. Pokud by administrátor zapomněl nakonfigurovat nové klíče v případě jejich výměny na autoritativním serveru, došlo by k zneplatnění všech podpisů a doména by se jevila jako nedostupná. Tento systém je také velmi nepraktický – pokud bychom přidávali klíč pro každé doménové jméno, brzy by mohlo dojít k tomu, že bychom v konfiguraci validujícího resolveru měli klíčů příliš mnoho a údržba by přestala být zvladatelnou.

Způsob druhý – Domain Lookaside Validation

S druhým způsobem přišla společnost ISC – autor DNS serveru Bind. Mechanismus DLV funguje tak, že se validující resolver podívá „bokem“. V praxi to funguje tak, že nejprve se validující resolver snaží vytvořit řetěz důvěry mezi podpisem a nakonfigurovanými pevnými body důvěry – tedy hledá DS záznam v nadřazené zóně. Pokud DS záznam není v nadřazené zóně nalezen, připojí ke jménu validované domény název DLV registru a hledá DLV RR záznam pro tuto nově vzniklou kombinaci. V případě nálezu DLV záznamu je výsledek dotazu použit stejně, jako kdyby měl validující resolver k dispozici DS záznam v nadřazené zóně.

Komunikace validujícího resolveru s DLV registrem může vypadat například takto:

1. Zóna .cz je podepsaná a v DLV registru
2. Je vytvořen DNSSEC dotaz na A záznam jména www.dnssec.cz a je poslán kořenovým nameserverům
3. Není nalezen DS záznam v kořenové zóně pro zónu .cz
4. Validující resolver se zapnutou DLV validací bude hledat DLV záznam cz.dlv.isc.org

;; ANSWER SECTION:
cz.dlv.isc.org.     3319 IN DLV 7978 5 1 (
                9B6C3898470914CDDA98D0CC001688CB32C17A09 )
cz.dlv.isc.org.     3319 IN RRSIG DLV 5 4 3600 20090228094531 (
                20090129094531 9912 dlv.isc.org.
                GyjKws8ZveMSbDqL/DboeC7MHQmiqTiZDijMoaZd3B2k
                n9UxJPXlG9TPxDH2Ve5EgNOEPIV1Bm5YUzJ64JQFwF/l
                iIBsAMIFu5k41hj5oODsTuLryrUcKMBMCgJfJWBDxi02
                BXcRxfXUbbbCmI5fwEOFRsgDar/aKB6iVW3/Weg= )

5. Tento DLV záznam bude použit jako DS záznam pro zónu cz
6. Je vytvořen DNSSEC dotaz na A záznam jména www.dnssec.cz a je poslán autoritativním serverům pro zónu .cz
7. V zóně .cz je nalezen DS záznam pro zónu dnssec.cz
8. Tento DS záznam je použit pro validaci podpisu A záznamu v zóně dnssec.cz.

Konfigurace DLV registru pro DNS server Bind 9.3.3 a vyšší vypadá takto:

options {
    // zapneme DLV validaci
    dnssec-lookaside . trust-anchor dlv.isc.org.;

};
trusted-keys {
    dlv.isc.org. 257 3 5
        "BEAAAAPHMu/5onzrEE7z1egmhg/WPO0+juoZrW3euWEn4MxDCE1+lLy2
        brhQv5rN32RKtMzX6Mj70jdzeND4XknW58dnJNPCxn8+jAGl2FZLK8t+
        1uq4W+nnA3qO2+DL+k6BD4mewMLbIYFwe0PG73Te9fZ2kJb56dhgMde5
        ymX4BI/oQ+cAK50/xvJv00Frf8kw6ucMTwFlgPe+jnGxPPEmHAte/URk
        Y62ZfkLoBAADLHQ9IrS2tryAe7mbBZVcOwIeU/Rw/mRx/vwwMCTgNboM
        QktUdvNXDrYJDSHZws3xiRXF1Rf+al9UmZfSav/4NWLKjHzpT59k/VSt
        TDN0YUuWrBNh";
};

V sekci options řekneme, od jakého místa v DNS hierarchii se má použít alternativní validace přes DLV registr a jaký DLV registr budeme používat. V současné době je v provozu pouze jeden DLV registr – provozuje ho společnost ISC na adrese dlv.isc.org. Aby mohly být DLV záznamy považovány za důvěryhodné, je zapotřebí, aby k nim také vedla cesta přes řetěz důvěry. Proto je zapotřebí do konfigurace přidat aktuální klíč DLV registru. Pozor! Klíč použitý v příkladu byl aktuální v době psaní tohoto článku, a tento klíč se v pravidelných intervalech mění. Platný klíč vždy najdete na adrese secure.isc.or­g/ops/dlv/. Na stejné adrese také najdete podrobný popis toho, jak používání DLV registru nakonfigurovat.

Pro DNS server Unbound 1.1.0 a vyšší je konfigurace ještě jednodušší, ze stránek secure.isc.or­g/ops/dlv/ si stáhneme aktuální klíč pro zónu dlv.isc.org:

$ wget -O /etc/unbound/dlv.isc.org.key http://ftp.isc.org/www/dlv/dlv.isc.org.key

Na výše zmíněných stránkách je dostupný i PGP podpis tohoto klíče a je velmi vhodné si jej ověřit.

Do konfigurace unbound.conf pak přidáme jednu řádku v sekci server:

# dlv-anchor-file: "/etc/unbound/dlv.isc.org.key"

Načteme novou konfiguraci a DLV validace je tímto zapnuta.

Velká výhoda DLV registru je množství domén, které začnete validovat ve chvíli, kdy DLV registr začnete používat. Mezi nevýhody bych uvedl – žádná kontrola nad tím, jaké klíče chcete nebo nechcete validovat, a provoz jediného DLV registru není v rukou autorit, které mají na starosti správu kořenové zóny, ale konsorcia ISC. DLV registr také není příliš škálovatelný – DLV klíče sice lze rozdělit do více podzón, neexistuje automatizované rozhraní pro přidávání/měně­ní/mazání klíčů z DLV registru. I přes to všechno je DLV registr dobrým způsobem, jak začít s validací DNSSEC podpisů – v ideálním případě musíte hlídat pouze jeden klíč v konfiguraci. Bohužel v DLV registru nejsou ani všechny podepsané TLD domény – např. švédská doména .se v DLV registru uložena není, a pokud ji chcete validovat, musíte přidat její klíč do konfigurace ručně.

Způsob třetí – IANA

Třetí způsob v sobě zahrnuje celkem dvě metody – nicméně obě jsou provozovány organizací IANA, která je (zjednodušeně řečeno) zodpovědná za obsah kořenové zóny. IANA již nějakou dobu provozuje testovací prostředí na podepisování kořenové zóny a toto testovací prostředí je veřejně přístupné. Naleznete jej na adrese ns.iana.org/dns­sec/status.html. Na těchto stránkách lze také najít ukázkovou konfiguraci pro Bind 9:

options {
...
        dnssec-enable yes;
        dnssec-validation yes;
...
};

zone "." {
     type hint;
     file "dnssec.root";
};

trusted-keys {
        "." 257 3 5 "AwEAAff8EiNa/S3wovNzPUmuBqe1pSjnNoen
                                        cXDNMpmjTgngGMPct+8KDKxM6FwvPSRx15gN
                                        RyRQfzSPU0WshDNkBV2TMtVpzqn/dsurbmTo
                                        ixRzLyLK2Kd2adg5o5yS/gaTgCo0HVBmIruS
                                        N3FVI2ugCWJBFLkFGHLvMJ0BTSYVqWGwQIzp
                                        EPKCbKN+L9nrLcvJRCWG59Yq6BUsSEKlzSK3
                                        jMhYQs6y5IiCGAVol+3VyjN93/lXkeUG6u7d
                                        lQsyiY9fxfeUvmn004y0TjAgjZqdwKZB0K9M
                                        A7qcALG3Tw2TXEdQsn9aY3DzNii3YEBidzER
                                        mY7n4hIUri1r59MnuNJq2x0=";
        "." 257 3 5 "AwEAAb+qUOkdZKCP0Qn/4TxJy2XD07xOckKj
                                        wwAHOE/Hn3rLGy0RpmVYCOrmJbVtfyC6i8SQ
                                        sRRKj6YUVlNg7EJ9gjK6rTiDlYMxSc0hFsoG
                                        I8qfAfmsjwClVh86rSIJvruvbcRsQURp/gvJ
                                        EdOaEHlA3JEIHS3cRR5AjKeF1IQdsGYtJMBM
                                        2VMtrgHKgOPZjzfM6bPyg+H9uMBwOm2HkSiE
                                        geAw2vXEHp0eNM2sOxUQMYYPkoywa28oxP4v
                                        dUI7ht4I8etlq3gNCEuBJjV4347ZQ0VHIwDw
                                        JSVmYBzc4f3REfEZS7h6fR33wPVQIw9NNi9p
                                        Cy7JRqzEGwHVft/re6SRqE0=";
};

Soubor dnssec.root pak bude obsahovat následující obsah:

. 3600 IN NS ns.iana.org.
ns.iana.org 3600 IN A 208.77.188.32

Touto konfigurací způsobíme přepsání konfigurace kořenových nameserverů na pouhý jeden. V případě výpadku toto serveru by (po vypršení záznamů ve vyrovnávací paměti resolveru) přestalo DNS být dostupné. Proto je tato konfigurace vhodná pouze pro testovací účely.

Žhavou novinkou chladného měsíce ledna je spuštění beta verze Interim Trust Anchor Repository na adrese itar.iana.org. ITAR je dočasné úložiště klíčů pro kořenovou zónu do doby než bude podepsaná kořenová zóna a DS záznamy budou uloženy přímo v ní. Z toho plynou určitá omezení – klíče do ITARu můžou vkládat pouze TLD operátoři. V současné době je ITAR v testovacím provozu a obsahuje klíče pro tři TLD – švédskou, brazilskou a také tu naši českou. Použití klíčů z ITAR registru pro DNS server Bind je v současnosti poněkud krkolomné, protože ITAR negeneruje soubor ve formátu trusted-keys, tudíž jeho použití znamená trochu toho skriptování na konverzi z DS záznamů do konfigurace Bindu. Master soubor je poskytován i ve speciálně naformátovaném souboru XML, který bude velmi snadné přes XSLT transformaci dostat do požadovaného formátu ve formě trusted-keys {}; direktivy.

Unbound podporuje formát souboru anchors.mf. Tento soubor je ke stažení na výše uvedených stránkách (včetně synchronizace přes protokol rsync):

$ rsync -rvP rsync://rsync.iana.org/itar/ /etc/unbound/itar/
$ cd /etc/unbound/itar/ && gpg --verify anchors.mf.sig anchors.mf
gpg: Signature made Sun 01 Feb 2009 01:45:06 AM CET using DSA key ID 81D464F4
gpg: Good signature from "IANA Trust Anchor Repository <itar@iana.org>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 1642 571A 578F 0DF2 6F82  785F F47D FB30 81D4 64F4

Zapnutí validace se provede následující direktivou:

trust-anchor-file: "/etc/unbound/itar/anchors.mf"

Opět i o této službě platí, že je zatím vhodná k použití pouze v testovacím provozu. V případě použití v produkčním prostředí bych doporučil spíše ruční kontrolu nově stažených klíčů a následné úpravy v konfiguraci DNS serverů dělat také ručně. Nicméně předpokládám, že v průběhu první poloviny tohoto roku dojde ke stabilizaci a spuštění repozitáře ITAR do produkce.

bitcoin_skoleni

To je pro dnešek vše a v příštím díle seriálu o technologii DNSSEC se dostaneme k již avizovanému hledání problémů v DNSSEC validaci.


Autor je technickým ředitelem sdružení CZ.NIC.

Autor článku

Autor spojil svůj profesní život s open-source a DNS.