Jak vylistovat doménu cz.

10. 12. 2010 7:22 (aktualizováno) Ondřej Caletka

Česká národní top-level doména cz. je světovým leaderem v zabezpečení DNSSEC, aspoň co se týče kvantity zabezpečených zón. I když se praktické důsledky podepisování DNS záznamů zatím spíše nedoceňují, či podceňují, jde o systém, který se může v budoucnu pomoci ve snaze o bezpečnější Internet, a na rozdíl od jiných snah se stejným cílem (například filtrování obsahu) nevyvolává zdaleka takové kontroverze.

Nicméně jedna kontroverze tu je. Jde o tzv. NSEC záznamy, jejímž účelem je bezpečně klienta informovat o neexistenci hledaného záznamu. Jak už akronym napovídá, obsahuje záznam informaci o „Next SECure“, tedy dalším bezpečném záznamu v zóně, seřazené v kanonickém pořadí, v podstatě podle abecedy. Tato vlastnost je některými „bezpečnostními experty“ chápána jako nepřiměřené bezpečnostní riziko, neboť je možné postupným procházením NSEC záznamů získat celý obsah zóny.

Osobně nechápu, co je na datech, zveřejněných v DNS zóně, tak citlivého, že by mělo být nežádoucí, aby je někdo získal. Bezpečnostní opatření spočívající v obecné neznámosti doménového jména je tak chabé, že snad ani nestojí za řeč; dá se předpokládat, že pokud záznam v DNS existuje, bude ho taky někdo používat a v takovém případě může jeho existenci zjistit každý provozovatel DNS serveru, přes který někdo záznam poptá.

V každém případě k vyřešení tohoto pseudoproblému byl vyvinut záznam NSEC3, který namísto seřazených jmen používá seřazené hashe (Podrobněji například v článku Pavla Satrapy na Lupě). Takové řešení vede k většímu zatížení DNS serverů, to však zřejmě za uklidnění paranoiků stojí. Ostatně právě česká národní doména na tento typ záznamů co nevidět přejde.

EDIT: K přechodu již došlo, níže uvedený postup nezkoušejte. Viz též záznam na blogu NIC.cz.

Máme tedy poslední šanci  využít slabiny a vypsat si všechny registrované záznamy v zóně cz.  V tomto případě je praktická realizace velmi snadná:

$ dig +short cz. NSEC @b.ns.nic.cz
0.cz. NS SOA RRSIG NSEC DNSKEY

Předchozí příkaz vypsal úplně první záznam v zóně CZ, doménu 0.cz. Můžeme pokračovat dál a podívat se, co následuje za zónou 0.cz:

$ dig +short 0.cz. NSEC @b.ns.nic.cz
0-0.cz. NS RRSIG NSEC

Řečeno slovy Dušana Kleina, nyní již máte dostatek informací, abyste mohli vyrobit skript, který získá obsah celé domény. Pokud ho spustíte, možná narazíte u domény kasuar.cz:

$ dig +short kasuar.cz. NSEC @b.ns.nic.cz
www.kasuar.cz. A NS SOA MX AAAA RRSIG NSEC DNSKEY
$ dig +short www.kasuar.cz. NSEC @b.ns.nic.cz
kasuar.cz. A AAAA RRSIG NSEC

Jak z takového cyklu ven? Musíme využít původní účel záznamu NSEC, zeptat se tedy na neexsitující zónu:

$ dig kasuar0.cz. NSEC @b.ns.nic.cz
; <<>> DiG 9.4.3-P5 <<>> kasuar0.cz. NSEC @b.ns.nic.cz
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 1522
;; flags: qr aa rd; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;kasuar0.cz.                    IN      NSEC

;; AUTHORITY SECTION:
cz.                     900     IN      SOA     a.ns.nic.cz. hostmaster.nic.cz. 1280660718 900 300 604800 900

Ovšem, takhle jednoduše to nejde. Abychom získali NSEC záznam o následujícím existujícím záznamu, musíme se zeptat s použitím DNSSEC:

$ dig  +dnssec kasuar0.cz. NSEC @b.ns.nic.cz
...
;; AUTHORITY SECTION:
...

kasuar.cz.              900     IN      NSEC    kasuistiky.cz. NS DS RRSIG NSEC

Tím máme hotovo. Můj skript běžel zhruba 20 hodin a získal celkem 692867 doménových jmen. Co s takovým seznamem dělat? Netuším :)

Sdílet