Sdružení CZ.NIC před nedávnem zveřejnilo stránky http://dnscheck.labs.nic.cz sloužící ke kontrole správného nastavení domény. Na těchto stránkách si můžete otestovat svou doménu a zjistit, zda máte všechna nastavení v pořádku, případně opravit nalezené chyby.
Logickou otázkou je, co znamená „v pořádku“. Zde se můžou názory lišit a proto vycházíme z norem (RFC) a z dlouhodobých zkušeností. Pokud přesto narazíte na chybu, kterou za chybu nepovažujete, nebo naopak budete mít pocit, že určitý stav by měl být chybou, dejte nám samozřejmě vědět a můžeme metodiku přehodnotit. K dispozici máte i historii testů pro danou doménu, kde si můžete prohlédnou výsledky dřívějších testů. V záložce „Detailní výsledky“ najdete popis jednotlivých testů, které byly prováděny, včetně jejich výsledků.
Pokud se budete chtít se svým výsledkem pochlubit ostatním nebo budete chtít požádat o radu s odstraněním problémů, máte pod každým testem k dispozici trvalý odkaz, s nímž potom můžete dál pracovat.
Nezbývá tedy než vám popřát mnoho testů bez chyb a pro inspiraci se můžete podívat, jak by to v ideálním případě mělo vypadat.
Petr Černohouz
Slabé RSA kľúče v TLS a DNSSEC
Praktických dôkazov, že RSA kľúče s modulum menším 1024 bitov (špeciálne 512-bitových) môžu predstavovať bezpečnostné riziko, sa za posledný rok objavilo viacero. Autori malware zneužili slabé 512-bitové RSA kľúče z certifikátov, ktoré mali vhodnú kombináciu X.509v3 extensions a podpisovali nimi malware. Útočníci v tomto prípade pravdepodobne faktorizovali modulus a získali tak privátny kľúč. Výskumníci tiež ukázali, že „okamžitá“ faktorizácia 512-bit RSA modulu je uskutočniteľná a relatívne lacná (menej než cca $150).
Aj keď to boli najskôr posledné X.509 certifikáty zneužiteľné na podpis kódu (ostatné známe sme našli a sú revokované), stále existuje mnoho serverov, ktoré posielajú 512-bitové certifikáty v TLS handshake, napríklad pri naväzovaní HTTPS komunikácie. Doporučené veľkosti kľúčov k rôznym algoritmom uvádza prehľadná tabuľka vychádzajúca z doporučení ECRYPT II (podrobný popis ako sa k hodnotám dostali obsahuje objemný ECRYPT II Yearly Report on Algorithms and Keysizes 2011).
Našťastie od júla 2012 platia nové požiadavky CAB fóra na certifikáty vydávané od CA – už nesmú mať RSA moduly menšie než 1024 bitov, naviac tie s dlhodobou platnosťou musia mať modulus veľkosti aspoň 2048 bitov. Microsoft tiež čoskoro začne blokovať certifikáty s RSA modulom menším než 1024 bitov. Zmeny k lepšiemu je už vidieť ako postupne CA revokujú staršie certifikáty so slabými RSA modulmi, ale stále sa občas nejaký 512-bit nájde.
Podobný problém so slabými RSA sa samozrejme netýka len TLS komunikácie, ale môže nastať tiež v DNSSEC. Ak útočník kľúč faktorizuje, môže pri man-in-the-middle útoku na DNSSEC falšovať podpisy DNS záznamov (tým pádom aj prípadne meniť asociácie na kľúče a certifikáty pinované cez záznamy typu SSHFP alebo TLSA).
Ako to vyzerá s RSA kľúčmi v doméne CZ? Keď sme robili prieskum DNSSEC kľúčov používaných v doméne .CZ pred pol rokom, tak domén s DNSSEC kľúčom s RSA modulom menším než 1024 bitov bolo mnoho (rádovo stotisíc), pri teste 20. júla 2012 už je ich zásadne menej:
- domén s kľúčom menším ako 1023 bitov: 6635
- unikátnych kľúčov so slabým modulom: 5209
- v dvoch prípadoch sa jedná o Key Signing Key, zbytok sú Zone Signing Keys; jeden z týchto KSK už nie je používaný (ale je v zóne)
- päť kľúčov má 768-bit modulus, zbytok 512-bit
- jedna doména má kľúč so slabým verejným exponentom (3)
- existuje jeden revokovaný DNSKEY RSA kľúč s malým modulom
Pre porovnanie veľkosti kľúča a periódy zmeny ZSK odkážem na blog Erica Rescorlu, kde ukazuje, že priame použitie silnejšieho kľúča prináša lepšiu bezpečnosť než častá zmena (key rollover).
Súčasné doporučenia pre KSK a ZSK RSA kľúče znejú:
- KSK 2048 bitov
- ZSK 1024 bitov
- verejný exponent 65537 (0x10001 hex)
Uvedené hodnoty sú minimálne. Tu zase platí, že ani s veľkosťou kľúčov to netreba preháňat – príliš veľké moduly alebo exponenty majú za následok spomalenie overovania RSA podpisu.
Poznámka na koniec: Teoreticky verejný exponent môže byť aj menší (napr. 3), vyšší exponent ale bráni proti implementačným chybám umožňujúcim varianty Bleichenbacherovho útoku (u schém používajícich PKCS#1 v1.5 RSA padding, stalo sa nedávno u openssl – netýkalo sa SSL/TLS, ale CMS).
Ondrej Mikle
Závažná vzdálená zranitelnost v DNS serveru NSD
Kolegové z vývojového týmu Knot DNS se kromě vývoje také velmi pečlivě věnují testování, kterým se snažíme odhalit jednak chyby v samotném kódu našeho serveru, ale také odchylky od „standardu“ s důrazem na interoperabilitu jednotlivých serverů. Píši „standard“ DNS s uvozovkami, jelikož se jedná o souhrn dokumentů, které jsou někdy velmi nejasné, a jejich výklad záleží spíš na dohodě celého DNS ekosystému.
V rámci tohoto testování kolegové z Laboratoří CZ.NIC připravují také sadu DNS dotazů, které jsou nestandardní a zjišťují chování vybraných open-source DNS serverů (Bind 9, NSD 3,…). Jeden z uměle vytvořených testů, které připravili mí kolegové Marek Vavruša a Ľuboš Slovák, za TSIG podpis DNS zprávy připojoval další prázdný RR záznam (konkrétně prázdný TXT záznam). Při testování se ukázalo, že NSD ve všech verzích 3.x (i vývojové verzi 4.x) obsahuje zranitelnost, která je zneužitelná pro pád DNS serveru z libovolného místa v Internetu. Při přijmutí takové DNS zprávy dojde k dereferenci NULL pointru a NSD spadne s chybou SIGSEGV.
Tento problém jsme kolegům z NLnet Labs nahlásili v pondělí krátce po poledni a hned další den ráno jsme měli v poště opravný patch, který přikládám na konec tohoto blogpostu. V době vydání tohoto blogpostu by také na stránkách NSD měla být k dispozici verze 3.2.12, která tento bezpečnostní problém opravuje.
Jelikož se jedná o vzdálenou zranitelnost, na kterou neexistuje žádný workaround, důrazně doporučujeme v případě, že používáte NSD 3, okamžitě záplatovat vaše DNS servery.
Patch:
--- query.c (revision 3609)
+++ query.c (working copy)
@@ -1379,6 +1379,9 @@
edns = &nsd->edns_ipv6;
}
#endif
+ if (RCODE(q->packet) == RCODE_FORMAT) {
+ return;
+ }
switch (q->edns.status) {
case EDNS_NOT_PRESENT:
break;
Ondřej Surý
Test dnes: jak si vedl Knot DNS
Při příležitosti nedávné prezentace Knot DNS na Tech26 (CENTR Jamboree) jsme aktualizovali metodiku měření a chtěli bychom se podělit o nové výsledky.
Testování nyní proběhlo na syntetické zóně se zastoupením podporovaných RR typů na testovaných serverech (Knot DNS, BIND 9, NSD 3 a YADIFA[*]). Zóna obsahuje 1 324 899 záznamů, velikost zónového souboru je 76MB. Zároveň byly aktualizované testovací sady dotazů, které se nyní skládají z dotazů jak na existující, tak neexistující jména v poměru 1:1. Důvodem bylo prověřit výkon datových struktur serveru i při vyhledávání neexistujících jmen. Existující jména byla vybrána náhodným způsobem z tohoto zónového souboru. Konfigurace, zónový soubor, testovací sada pro program dnsperf (1 000 000 dotazů, 18MB) i syntetický provoz ve formátu pcap (50 000 dotazů, 4,2MB) jsou včetně dalších nástrojů volně ke stažení v Git repozitáři.
Prvním testem je škálovatelnost, kdy se měří závislost výkonu serveru na počtu spuštěných vláken/procesů. Výkon serveru je měřen programem dnsperf od společnosti Nominum. Tento test je specificky navržen pro měření výkonnosti autoritativních DNS serverů a mezi jeho přednosti patří regulace rychlosti dotazování, čímž poměrně věrně simuluje reálný síťový provoz. Jak je z grafu pro Linux patrné, podařilo se nám oproti verzi 1.0.3 vyřešit problém s plánováním vláken a nyní téměř dosahujeme naměřené propustnosti sítě. Ta byla změřena utilitou trafgen s malými UDP pakety (payload 60B) a zanesena do grafu. V případě tohoto testu nebylo možné určit u serveru Yadifa zadaný počet vláken, proto běží stále ve výchozím nastavení.
K testu škálovatelnosti nám přibyl nový test, který měří závislost podílu zodpovězených dotazů na rychlosti odesílaných odpovědí. Tento test byl dříve použit např. pro měření výkonnosti serveru NSD nebo nově Yadifa. V tomto testu figurují všechny tři stroje, kdy na prvním běží testovaný server, druhý pouze generuje provoz zadanou rychlostí a třetí zachytává odpovědi ze serveru. Pro testování byly využity standardní nástroje tcpreplay a tcpdump. Ze získaných dat se vypočte procento zodpovězených dotazů pro danou rychlost. Každý test je třikrát opakován a jako výsledek se počítá průměrná hodnota. Z grafu je patrné, že Knot DNS 1.0.6rc1 i na Linuxu zodpověděl téměř všechny všechny dotazy zaslané maximální dosažitelnou rychlostí.
Samotné testování probíhalo na třech shodných strojích osazených procesorem Intel Xeon X3430 a 2GB RAM, propojených 1Gb ethernet linkou se síťovými kartami Broadcom BCM5723. První stroj slouží k běhu serveru, druhý ke generování dotazů a třetí k zachytávání odpovědí. Testy byly prováděny na 64bit OS Linux 3.0.0 a FreeBSD-8.2. V současné době je výkon omezen dosaženou propustností sítě, nicméně chystáme testování s rychlejší síťovou kartou a věříme, že je ještě prostor pro další zlepšení.
Marek Vavruša
* – Yadifa bohužel podporuje jen omezenou sadu RR typů, nicméně pro tento druh testování to nevadí
„Autonomní“ Internet alá Čína
O tom, že Internet jako otevřená platforma, která překračuje prostor i čas, se úplně nepotkává s oficiální politikou autoritativních režimů (a nejen jich), netřeba dlouze diskutovat. O velkém čínském firewallu, blokování Twitteru v čase íránské zelené revoluce, vypnutí Internetu v Egyptě po protestech po volbách v roce 2011 a dalších toho bylo napsáno dost mimo náš blog, ale vždy se jedná či jednalo o jednotlivosti, které z technického pohledu narušují normální chování sítě.
Internetový draft DNS Extension for Autonomous Internet(AIP), který jako individuální podání poslali do IETF pánové Diao, Diao a Liao, ovšem tento systém „výpadků“ chce změnit. Nový návrh by počítal s tím, že by vedle stávajícího DNS stromu „zasadili“ další „autonomní“ DNS strom (či stromy), který by dle zvážení jeho správce obsahoval pouze některé top-level domény. Takových nezávislých stromů by mohlo být v Internetu více a přístup mezi nimi by byl zajištěn pomocí translačních bodů, které by odpovídaly dotazy ležící v uměle vytvořeném podstromu. Na stránky CZ.NIC by se z takové země pak dalo přistupovat jen pouze dotazem například na „www.nic.cz.资本主义的怪物“. Takový dotaz by byl předán příslušnému (pravděpodobně vládnímu) DNS serveru obsluhující doménu .资本主义的怪物, který by z dotazu odstranil příponu, předal jej například do DNS stromu, který je spravovaný ICANNem, a zpátky přeposlal odpověď (nebo také ne).
Osobně vnímám takovou iniciativu za velmi škodlivou otevřenému Internetu a domnívám se, že by IETF v žádném případě nemělo legitimizovat cenzuru tohoto druhu a zasadíme se o to, aby tento návrh v IETF neprošel.
Ondřej Surý
Ohlédnutí za IETF 83
Jelikož jsem v předchozích dvou blogpostech o OpenID a WHOISu nalákal čtenáře na IETF 83, sluší se přinést nějaký report o tom, jak tato konference splnila očekávání. Dá se říct, že více než dostatečně.
Jak už je na IETF zvykem, je neděle věnovaná tutoriálům. Mezi ně byl trochu narychlo zařazen i tříhodinový tutoriál na OpenID Connect. To ještě více umocnilo fakt, že tato konference byla problémům digitálních identit věnovaná víc než jsem sám čekal. V zajímavé souhrnné prezentaci bylo zmíněno i probíhající vzájemné testování existujících implementací. Zájemcům o OpenID Connect bych určitě doporučil blogy jeho autorů, zejména články OpenID Connect in a nutshell a Designing a Single Sign-on system using OAuth 2.0. A pokud někdo stále nerozumí rozdílům mezi OpenID a OAuth, existuje i Dummy’s guide. Na závěr byl prezentován i projekt AccountChooser jako nástroj pro poskytovatele služeb, kteří chtějí implementovat jednotné přihlášení napříč technologiemi. Jak udělat správně uživatelské prostředí na straně poskytovatele služeb je zjevně oříšek a nikdo není spokojen s tím co se nazývá NASCAR UI – desítky barevných tlačítek s různými poskytovateli, mezi kterými si uživatel musí nalézt toho svého.
Z pondělních pracovních skupin zaujala NETMOD, jejíž cíl je vydefinovat univerzální datové modely pro vzdálenou konfiguraci různých prvků pomocí protokolu NETCONF. Na datovém modelu pro konfiguraci routingu totiž pracuje Láďa Lhotka z našich laboratoří. Odpolední technické „plenary“ začalo připomenutím druhého dne IPv6, na který se připravujeme i my. Potom už byly hlavními tématy TLS, problémy certifikačních autorit a zabezpečení webu obecně, které se lehce vyhrotilo při kritice tvůrců prohlížečů spočívající v tvrzení, že napadené nebo pochybné certifikační autority neodstraňují z prohlížečů flexibilně.
Avizovaná panelová diskuze o OpenID a OAuth pořádaná organizací ISOC v úterý před polednem byla pro auditorium, ve kterém seděli zástupci různých (číselných i doménových) registrů, spíše seznamovací. Její obsah nejspíš jen vyvolal v posluchačích otázky, které jsme si my položili již dříve a odpověděli na ně v podobě služby MojeID. V navazující pracovní skupině KITTEN, o které jsem se zmiňoval dříve v souvislosti s použití OpenID pro zabezpečení dalších internetových protokolů, se pouze probral stav existujících dokumentů bez nějakého zásadního posunu. To na WEIRDS se očekávala bouřlivá diskuze o podobě nového WHOIS protokolu. Překvapivě se ozvali pouze jednotlivci, kteří mají obavy o zbytečně vynaložené úsilí. Navržený „charter“ pro připravovanou pracovní skupinu tedy bude poslán ke schválení příslušným orgánům IETF. V podvečer ještě zasedla pracovní skupina DNSEXT. Na ní Ondra Surý z našich laboratoří prezentoval navrhovanou úpravu protokolu IXFR. Tato pracovní skupina se pravděpodobně setkala naposledy; její odsouhlasené rozpuštění již čeká pouze na administrativní proceduru.
Středeční program nabídl mimo jiné pracovní skupinu TLS. Ta probírala rozšíření mechanismů pro získání certifikátů při navazování TLS spojení, např. z DNS, jak bylo schváleno v rámci pracovní skupiny DANE. Tato pracovní skupina již všechny svoje dokumenty dokončila a jsou v procesu schvalování, takže pro ni nebyl důvod se tentokrát scházet.
A opět ty identity. Na čtvrteční ráno byl naplánován BOF týkající se protokolu SCIM (Simple Cloud Identity Management). Velcí poskytovatelé cloudových služeb by si rádi standardním způsobem synchronizovali data o uživatelích. Navrhli tedy protokol, který má standardizovány operace pro založení, zobrazení, změnu a zrušení (CRUD) vzdáleného kontaktu spolu s univerzální datovou strukturou v XML a JSONu. Jestli vám to připomíná EPP, které používáme v našem doménovém registru, tak mně také. To jen ukazuje, že staré nápady jsou neustále recyklovány a možná není daleko doba, kdy místo EPP protokolu budeme také používat nějaký REST protokol nad HTTP. Následovala druhá panelová diskuze týkající se OpenID, OAuth a tentokrát i BrowserID. Je více než zřejmé, že BrowserID nemůže OpenID aktuálně plnohodnotně nahradit. Pracovní skupina OAUTH poté řešila hlavně tzv.“rechartering“, tzn. změnu svých cílů. Pro OpenID Connect bude důležité, jestli si pracovní skupina vezme za své některé osiřelé specifikace, na kterých je závislý jako např. Simple Web Discovery. Proti tomu se zvedl částečný odpor, neboť se opět jedná o alternativní přístup k něčemu, na co již existují v IETF jiné standardy host-meta a webfinger.
Závěrečnou tečku za konferencí udělala v pátek pracovní skupina DNSOP. Hlavním tématem bylo TTL a jeho snižování nebo zvyšování. Inženýři z Verisign navrhují jeho výrazné zvýšení jako ochranný mechanismu proti případné nedostupnosti autoritativních serverů. Jejich japonští kolegové naopak doporučují výrazné snížení jako ochranný mechanismus z důvodu rychlého zotavení z případné chyby např. v souvislosti s technologií DNSSEC. K tomu se samozřejmě ještě přidává zákaznický pohled, neboť uživatelé samozřejmě chtějí vidět svoje požadované změny okamžitě. Jednoznačná odpověď asi neexistuje.
Jaromír Talíř
Jak se rodil náš Knot DNS
Předminulý týden, při vydání první ostré verze autoritativního DNS serveru Knot DNS, jsme vám slíbili článek, který by přiblížil jeho vývoj od počátku až k finální verzi. Ten nám ale posléze narostl pod rukama do rozměrů už nevhodných pro publikaci na blogu, a tak vám zde nabídneme alespoň malou ochutnávku. Kde najdete více se pro jistotu dozvíte až na konci textu :-).
Opatrné začátky
Už je to téměř dva a půl roku, co začal v Laboratořích CZ.NIC pomalu vznikat nový autoritativní DNS server Knot DNS. Na podzim roku 2009 to začalo řadou experimentů a testů, zaměřených hlavně na výběr vhodné datové struktury pro ukládání zónových dat. Ta byla implementována jako první a kolem ní byl následně vystavěn první prototyp serveru s velmi jednoduchou síťovou vrstvou, který dočasně využíval knihovnu ldns pro ukládání dat specifických pro DNS.
Hlavní důraz byl kladen na modularitu návrhu tak, aby kteroukoliv část bylo možné kdykoliv nahradit lepší implementací. Velká část původního návrhu byla zachována i do finální verze. Na funkčním prototypu jsme si ověřili vhodnost zvolené datové struktury a také její potenciál pro vysokou rychlost vyhledání potřebných dat pro zodpovězení příchozího dotazu.
Jde do tuhého
Když na podzim roku 2010 přibyli do týmu další lidé, vývoj se výrazně rozhýbal. Knihovna ldns byla nahrazena vlastní DNS knihovnou, vznikla nová síťová vrstva a obsluha vláken. Během následujících měsíců byly některé části návrhu upraveny tak, aby nás co nejvíce přibližovaly našemu hlavnímu cíli – vyvinout vysoce výkonný DNS server. Při vývoji jsme však nezanedbali ani důkladné testování jak jednotlivých částí, tak celého serveru. Časem vznikl komplexní testovací framework integrující testy na různých úrovních, který je jednoduše rozšířitelný o další funkce a testovací scénáře.
Cílová rovinka (či spíš překážková dráha)
Po dvou letech vývoje, na podzim roku 2011, jsme si byli dostatečně jistí poskytovanou funkcionalitou, a proto jsme představili první veřejné vydání Knot DNS (verze označená jako 0.8). Již krátce po prezentaci na RIPE 63 ve Vídni, a také u nás na konferenci LinuxAlt v Brně, jsme začali dostávat první připomínky od uživatelů, které nám v následujících měsících pomohly vylepšit Knot DNS a opravit mnohé chyby, které jsme „nevychytali“ během předchozího vývoje. Verze 0.9 vydaná na začátku roku 2012 přinesla několik nových funkcí a oprav. Po ní jsme se intenzivně soustředili už jen na testování, hledání chyb a ladění, které nakonec vyústilo v první produkční verzi. Její Release Candidate byl zveřejněn na Valentýna a finální verze 1.0 pak byla vydána ve skutečně výjimečný den 29. února.
A jsme na konci tohoto blogpostu a tedy u toho, kde se o Knot DNS můžete dozvědět více. Jestli jsem vás navnadil, pokračujte v dalším čtení na Root.cz, pro který jsme připravili text skutečně mnohem obsáhlejší.
Ľuboš Slovák
Liberální nebo striktní? A co na to All Blacks?
Když John Postel v roce 1980 definoval pravidlo robustnosti (známé také jako Postelův zákon), tak se zdálo být rozumné jej definovat jako: „Buď liberální v tom, co přijímáš, ale buď striktní v tom, co vysíláš.“ O pár let později bylo toto pravidlo rozšířeno v RFC 1122 o požadavek nejen přežít divoké prostředí špatně naformátovaných paketů, ale také nadále spolupracovat a komunikovat s implementacemi, které se takto neslušně chovají. Internet byl ve svých počátcích a bylo těžké odhadovat, jaká všechna zařízení budou do sítě připojena a jak dobře nebo špatně budou naprogramována.
Nicméně zpátky k návrhu internetových protokolů. Již o deset let později v roce 2001 popisuje Marshall Rose v RFC 3117 problémy, které přináší aplikace principu robustnosti do interoperability aplikací. Představte si, že máme dvě implementace:
- implementaci Locke, kterou psal hodně šikovný programátor a docela si s ní vyhrál, takže je velmi liberální a dokáže přijmout a zpracovat libovolně naformátovaný paket a…
- implementaci Demosthenes, kterou psal programátor hodně ve spěchu a posílá takové pakety, ze kterých se dělá trochu špatně i směrovačům po cestě.
Locke si s Démosthenem v klidu dokáží povídat. Locke se sice občas diví, co to Démosthenés říká, ale vcelku dobře si rozumějí a komunikace volně plyne. To se ovšem radikálně mění ve chvíli, kdy na scénu přichází implementace Rochester, kde byl programátor velmi striktní a naprogramoval Rochestera tak, že přesně odpovídá specifikaci protokolu a odmítá jakékoli odchylky od standardu, zatímco si Locke s Rochesterem může bez problému popovídat (ostatně jsou oba dva angličané). Dokonce pro Lockeho je komunikace s Rochesterem jednodušší, protože oba dva při komunikaci dodržují správný komunikační protokol. Naopak Démosthenés má se svou antickou řečtinou najednou problém. Démosthenés se může snažit mluvit s Rochesterem jak chce, ale ten mu prostě nemůže rozumět, protože nemluví společným jazykem.
A co by na to řekli All Blacks? Kdyby se o Postelově zákonu dozvěděli v půlce prosince minulého roku, tak by asi zareagovali takto:
Proč? Správci novozélandské domény .NZ v půlce prosince dokončili proces implementace DNSSEC, vypublikovali správný klíč a poslali jej do kořenové zóny. Následně byli upozorněni, že jejich klíč má nezvyklou sekvenci znaků v místě, kde je uveden RSA exponent. Pro srovnání si tento rozdíl pojďme ukázat konkrétně.
Klíč pro doménu .CZ vypadá takto:
cz. IN DNSKEY 257 3 10 ( AwEAAaVU8EMQrZ6Tix2zBaAmizMQ7W0m94qSJUXV4eVW S9ZpXh9t1uj8U/B5Nnqge4G0Te0/NJIqflihZKXs8Hyh JqjF852RKnvNWPu2wMujYjHP0T4lIhu4rTym9+sPNsfi oqvMyyDeqyhVPx21nvLW5oaKjaLd3XJxijRbDTddRU97 mJVVS50PKdDmh5n/4KdRKV7ifR2Ap8L1bvUiCOxl4GAq LoXft+L896bkVj6mefdCSyYaCbgsDc2+10ZBOSF1t89N J6O1yO+y5/7vS3dYKEqj+p4ygaCY0spvrhZxncUeASix g224bNYZM5TLk2/YoKgAEjaIoCwu7SAXB5iUvLU= ) ; key id = 14568
Pokud rozkódujeme prvních pár znaků, dostaneme následující výstup:
$ dig dnskey cz +short | grep '^257' | awk '{print $4}' | base64 -d | xxd -l 12 -b 0000000: 00000011 00000001 00000000 00000001 10100101 01010100 .....T 0000006: 11110000 01000011 00010000 10101101 10011110 10010011 .C....
Délka exponentu je uvedena na prvním místě (00000011), tj. exponent je dlouhý tři bajty. Exponent je v tomto případě 65537 (00000001 00000000 00000001).
DNSSEC klíč pro novozélandskou doménu vypadal takto:
nz. IN DNSKEY 257 3 8 ( BAABAAGwfTiEoh71o6S55+Mdy1qqVRnpKY1VHznrv+wx rPfvRGB5VivFFPFN+33fsaTxJQTceOtOna7IKxTffj6p bBG4a9vtk2FqF551IwXomKWJnzRVKqYzuAx+Os/5gLIN BH7+qRWAkJwCdQXIaJGyGmshkO5Ci5Ex5Cm3EZCeVrie 0fLI03Ufjuhi6IJ7gLzjEWw84faLIxWHEj8w0UVcXfaI 2VL0oUC/R+9RaO7BJKv93ZqoZhTOSg9nH51qfubbK6FM svOWEyVcUNE6NESYEbuCiUByKfxanvzzYUUCzmm+JwV7 7Ebj3XZSBnWnA2ylLXQ4+HD84rnqb1SgGXu9HZYn ) ; key id = 2517
Opět rozkódujeme prvních pár bajtů:
dig dnskey nz +short | grep '^257' | awk '{print $4}' | base64 -d | xxd -l 12 -b 0000000: 00000100 00000000 00000001 00000000 00000001 10110000 ...... 0000006: 01111101 00111000 10000100 10100010 00011110 11110101 }8....
Již na první pohled je vidět, že exponent je v tomto případě delší (00000100), tj. 4 bajty. Nicméně hodnota exponentu (00000000 00000001 00000000 00000001) zůstává stejná, tedy rovna 65537.
V čem je tedy zádrhel? Dle standardu RFC 3110, který definuje kódování RSA klíčů pro použití v DNS, jsou počáteční nuly v exponentu zakázány. A nyní se dostáváme zpátky k počátečnímu sporu Postel vs Rose.
Správci novozélandské domény samozřejmě nasazení DNSSEC klíče pečlivě otestovali a vše správně fungovalo. Jinými slovy Démosthenés si při testování povídal s Lockem. Nakonec se bohužel ukázalo, že na scéně se skrýval Rochester v podobě implementace rekurzivního resolveru od firmy Nominum, která je při dekódování exponentu velmi striktní a po přijetí klíče novozélandské domény selhala při DNSSEC validaci. Toto nakonec vedlo k tomu, že bylo zapotřebí klíč novozélandské domény opravit a do kořenové zóny poslat klíč ve správném kódování.
Jaké z toho nakonec plyne poučení? Druhá část pravidla robustnosti stále platí, je zapotřebí být velmi striktní při implementaci protokolu, aby byla zajištěna dobrá interoperabilita. Nicméně je jistě ke zvážení, jestli nebýt striktní také při implementaci přijímací části, aby bylo možné odhalit chyby včas již při testování.
A co si myslíte vy? Je lepší být v implementaci striktní nebo liberální?
Ondřej Surý
P.S. Tento článek, respektive odkaz na něj, zahajuje naši komunikaci na Google Plus. Pokud tedy tuto sociální síť využíváte a chcete být informováni o našich projektech a aktivitách, přidejte si nás do svých kruhů.
Máme se bát operace Global blackout?
Na pastebin.com se nedávno objevila zpráva, která slibuje, že 31. 3. 2012 proběhne masivní DDoS útok na DNS root servery v rámci tak zvané operace Global Blackout. Čtenářům našeho blogu je asi zbytečné připomínat, že znefunkčnění všech root serverů by znamenalo výpadek DNS a tím i de facto vypnutí Internetu. Tak jako u všech zpráv tohoto druhu je pochopitelně těžké určit, jak moc vážně se tím mají bezpečnostní týmy zabývat. O neuchopitelnosti Anonymous již bylo napsáno mnoho. Každopádně se tomuto možnému útoku věnovala některá poměrně čtená média a zdá se, že i DNS operátoři berou hrozbu částečně vážně; problém byl poměrně důkladně diskutován v uzavřených operátorských bezpečnostních listech. K tomuto oznámení se sluší odpovědět následující otázky:
- Jak těmto útokům čelit?
- Jakou mají vůbec šanci?
- Proběhne vůbec nějaký útok, je tato zpráva hodnověrná?
Jak útoku čelit
Především stojí za to ve stručnosti zmínit, jak vlastně tento útok funguje. Jde o takzvaný DNS amplification attack. Principem tohoto útoku je, že útočník posílá podvržené dotazy na DNS resolvery. Jako zdrojovou adresu dotazu podvrhne IP adresu cíle, na který chce útočit. Díky jednoduché vlastnosti DNS, že odpověď je vždy větší než dotaz, dosáhne zesílení svého útoku. Vhodně zvolenými typy dotazu lze i z domácího připojení vygenerovat poměrně slušný tok dat. Takto vygenerovaný datový tok od více útočníků, pak může zahltit DNS server(y) či přístupové linky k nim. Z principu útoku je zřejmé, že útočník potřebuje ke své činnosti otevřené DNS resolvery, ale je bohužel smutnou skutečností, že těch je v současném Internetu více než dost, ačkoliv na toto téma byla vydána celá řada varování.
Metod, jak útoku čelit, je celá řada. Především by velice pomohlo, kdyby koncoví ISP dodržovali doporučení z BCP-38 nebo-li kdyby filtrovali odchozí packety, které nemají ve zdrojové adrese IP z jejich rozsahu. Tím by zabránili svým uživatelům podvrhovat IP adresy.
Druhou, mnohem problematičtější možností, je filtrovat všechny DNS dotazy z root serverů. Tyto servery nemají důvod se nijak ptát. Problémem tohoto řešení je, že je šité na míru pouze tomuto jednotlivému útoku a změna cíle útoku by znamenala další konfigurace. Navíc i IP adresy root serverů se čas od času změní a je šance, že aplikace této obrany napáchá více škody než užitku.
No a samozřejmě nejpřirozenější je neinstalovat zbytečně otevřené DNS resolvery. Většina existuje bohužel jen jaksi „omylem“, někteří správci bohužel nejsou příliš pečliví a s konfigurací DNS resolverů si tolik hlavu nelámou.
Šance takového útoku
Ačkoliv se pořád hovoří o 13 root serverech, již to dávno není tak, že 13 počítačů drží kořenovou zónu. Naopak velká většina těchto serverů má zrcadla všude po světě. Rekordmanem v počtu kopií je písmeno J, jež spravovuje Verisign, a které je na 70 místech. Samozřejmě i v každém z těch míst není jeden počítač, ale farma serverů. Abychom i my, sdružení CZ.NIC, přispěli k bezpečnosti, financujeme provoz dvou zrcadel v Praze, a to serverů F a L. Jak už to bývá, technologicky pozadu jsou, alespoň v tomto směru, servery spravované státními institucemi. Anycasting nevyužívají servery spravované ISI, NASA a University of Maryland. Pouze dvě kopie má i server spravovaný americkou armádou. Je možné, že skutečně masivní útok by mohl vyřadit z provozu právě tyto servery s malým počtem zrcadel, ale je velice obtížné shodit službu, jež má desítky dobře spravovaných kopií. Nemyslím si tedy, že by Anonymous měli v tomto příliš velkou šanci. Shodit DNS systém je mnohem větší oříšek než útočit na webové servery. Mimochodem, v minulosti již několik masivních útoků na root servery proběhlo a zatím se nikomu nepodařilo shodit všech 13.
Bude útok?
Především s ohledem na předchozí informace si myslím, že 31. března se může stát hodně věcí, ale rozhodně to nebude útok na DNS. Celé toto prohlášení vnímám spíše jako hoax, může jít klidně o odpoutání pozornosti. Ani Anonymous se jistě nebudou pouštět do akcí, u kterých je v podstatě mizivá šance na úspěch. Navíc tento útok by byl poněkud v rozporu s jejich dosavadní snahou o „svobodný Internet“.
Každopádně pozitivní na tomto „hoaxu“ je, že trochu přitáhl pozornost směrem k nastavení filteringu podvržených zdrojových adres a k nastavení DNS resolverů. Správná konfigurace obou těchto věcí může obecně pomoci při zvýšení bezpečnosti Internetu. Schválně se zkuste zamyslet, jestli v tomto nemůžete něco vylepšit ve vlastní síti.
Ondřej Filip
Statistika DNSSEC resolverů
Jako správce české domény máme poměrně dobrý přehled o tom, kolik existuje zabezpečených domén s koncovkou .CZ. Jak to ale vypadá na druhé straně?
Samotné měření toho, kolik je validujících resolverů, není bohužel jednoduchá záležitost. Žádný resolver nehlásí autoritativnímu serveru „já jsem validující“, takže pro detekci lze použít nepřímé techniky, které využívají znalost toho, jakým způsobem validující resolver žádá o DNS záznamy. Asi nejkomplexnější metodu měření navrhl Olafur Gudmundsson a Steve Crocker na konferenci SATIN 2011; popsanou ji najdete v článku Guðmundsson, Crocker: Observing DNSSEC validation in the wild. Tuto metodiku jsme použili pro naše měření. Kromě toho, že nemá smysl znovu vynalézat kolo, je jednotná metodika také důležitá pro srovnání s ostatními registry. V případě, že by každý registr vynalézal znovu a znovu metodiku měření validujících resolverů, bylo by následné porovnávání výsledků příslovečným porovnáváním jablek s hruškami.
Stručné shrnutí metodiky:
Pro zjednodušení bereme jednu IP adresu za jeden resolver, i když ve skutečnosti se za jednou IP adresou může v případě NATu skrývat více resolverů.
Pro detekci validujících resolverů se metodika snaží hledat odlišnosti mezi chováním „zastaralých“, tedy nevalidujících resolverů, a těch validujících. Ty se liší především dotazy na DS a DNSKEY záznamy:
- dotaz na DS záznam – resolver označíme jako určitě validující
- opakovaný dotaz na DNSKEY záznam v časových intervalech odpovídající době platnosti (TTL) tohoto záznamu – resolver také označíme jako určitě validující
- samostatný dotaz na DNSKEY záznam – resolver označíme jako pravděpodobně validující
Z charakteru protokolu DNS vyplývá, že není možné, aby byla tato metodika absolutně spolehlivá. K jistému zjednodušení dochází proto, protože na straně autoritativního serveru není možné poznat, zda-li položený dotaz na DS nebo DNSKEY záznam vznikl na základě požadavku na validaci nebo jej vznesl nějaký testovací nebo monitorovací skript. Ke zkreslení výsledků přispívají i lidé, kteří prostými dotazy pomocí různých DNS nástrojů mohou způsobit zařazení IP adresy do jedné z výše uvedených kategorií. Podrobnější diskuzi nad použitou metodikou lze nalézt ve výše zmíněném článku.
Nejprve uvedeme výsledky měření z dubna 2011 a pak pro porovnání z prosince 2011. Měření se provádělo vždy tři pracovní dny na stejných autoritativních serverech.
Data z dubna 2011
Dle popsané metodiky jsme v našich DNS datech našli 6767 určitě a 727 pravděpodobně validujících resolverů. Vzhledem k tomu, že většina provozovatelů DNS serverů nemá ve svých sítích pouze jeden server, tak jsme získané IP adresy následně museli ručně agregovat na základě vlastníka IP adresy serveru. Toto seskupení představuje další zjednodušení, které ovšem v případě resolverů s největším provozem můžeme zanedbat.
V následující tabulce naleznete top 10 českých společností jejichž sítě provozují validující resolvery (podle počtu DNSKEY dotazů zaslaných z validujících resolverů).
#DNSKEY ISP 5320 Casablanca 4224 České Radiokomunikace 3024 Telefónica O2 2089 GTS NOVERA 1624 UPL Telecom 1338 NFX 710 OMEGA tech 537 Dial Telecom 513 Ignum 441 VUT Brno
Data z prosince 2011
Počet validujících resolverů se zvýšil: evidujeme 11403 určitě a 1201 pravděpodobně validujících resolverů.
Pořadí top 10 českých společností počtu DNSKEY dotazů z validujících resolverů se mírně promíchalo:
#DNSKEY ISP 7894 Telefónica O2 6309 Vodafone 4342 ACTIVE 24 3441 UPC 3285 GTS NOVERA 3075 RIOMEDIA 2712 2 connect 2029 T-Mobile 1946 Casablanca 1737 CESNET
Pokud by vás zajímalo, zda váš ISP validuje, podívejte se na www.dnssec.cz, kde najdete jednoduchý a průkazný test. V komentářích nám potom můžete napsat, jak jste uspěli či neuspěli, kdo má nebo nemá zájem na větším bezpečí svých zákazníků.
Ondřej Mikle