Vysvětlení situace ohledně DNSSEC dne 4. 4. 2017

[gtranslate]

Jako vždy jsme otevřeni a nic netajíme.

V úterý 4. dubna došlo ke komplikacím u .cz domén, které jsou zabezpečené pomocí technologie DNSSEC, což vedlo k jejich částečné nedostupnosti z některých sítí. Rádi bychom vysvětlili, co se přesně stalo a jak to ovlivnilo jednotlivé služby.

Co se přesně stalo

Došlo k technické chybě při generování klíčů DNSSEC a tím došlo k problémům s překládáním názvů domén (a ověřování domén u mailových služeb) při použití DNS serverů, které validují DNSSEC. Těchto serverů je (naštěstí) zatím minimum a na domény se tak nedostalo několik jednotek % návštěvníků ze sítí, kde návštěvníci používají DNS severy s validací DNSSEC. Podle našich měření se to týkalo zhruba 3 – 5 % provozu (první odhady byly vyšší a hovořili jsme o cca 10%). Jednalo se například o část síťě O2 a sítě, kde používají DNS servery Google.

ZSK klíč k DNSSEC je pravidelně a zcela automaticky jednou za měsíc vyměňován robotem. A to tak, že 5 dní před vypršením klíče je vygenerován nový klíč a je přidán do zóny. Tento postup používáme už od roku 2011 a až do pondělí 3.4.2017 to fungovalo naprosto bez problémů.

V pondělí se bohužel stalo to, že nový klíč vytvořen nebyl. Podle logů ke spouštění robota docházelo jako předtím ani u procesu nebyla hlášena žádná chyba. Technikům tak nedošlo varování, že by při vytváření bylo něco špatně (robot nevrátil chybu) ani náš monitoring nezachytil, že by robot nefungoval. Ten se spouštěl zcela běžným způsobem.

Pro tuto situaci jsme bohužel neměli monitoring. Tím pádem došlo k vyexpirování klíče a zneplatnění řetězce důvěry.

Resolvery poskytovatelů internetu, které důkladně ověřují DNSSEC pak vracely uživatelům chybu. Což bylo zhruba 3 – 5 % internetové populace, která se po dobu, kdy měla doména .cz neplatný klíč, pokoušela dostat na doménu.

Situaci jsme okamžitě začali řešit přegenerováním klíčů, ke všem doménám, kterým spravujeme DNS záznamy, což je přes 179 tisíc.

Náš systém pro generování zónových souborů bohužel neměl v tehdejší podobě pro tuto situaci dostatečně výkonný. Generování nových klíčů a následně zónových souborů je velmi náročná operace na výkon a práci s disky.  Přestože jsme využívali prakticky celý sever jen na tuto činnost, tak to nebylo dostačující. 

Primárně jsme se tak zaměřili na obnovu klíčů našich zákazníků, kteří nám psali na zákaznickou podporu, dále našich zákazníků, kteří u nás mají služby, následně parkovací stránky a nakonec domén bez A záznamu.

Abychom celý proces urychlili, naši vývojáři společně s techniky připravili nové provizorní řešení pro obnovu klíčů. Vše bylo spuštěno ještě vedle původního systému a generování mělo vyhrazený výkon jen pro sebe. Po jeho spuštění jsme se dostali na 0,7 – 2 vteřiny na doménu ve 30 vláknech procesoru současně. Toto řešení v budoucnu vylepšíme a nasadíme jako součást našeho DNS. Řešení jsme nasadili ráno a výrazně tak urychlili generování.

Při všech těchto změnách je důležité nejen udělat generování nových zónových souborů, ale zajistit jejich konzistenci a bezchybnost a zároveň vše rozdistribuovat na naše 4 DNS servery, které máme (2 v ČR, 1 v Německu a 1 v Nizozemí) a potom všechny zóny znovu načíst. Vzhledem k tomu, že se jednalo o cca 179.000 domén, tak jistě chápete, že podobná “operace” byla velmi náročná.

Klíče nám vypršely před 19. hodinou v úterý večer. První problémy jsme začali evidovat před 21:00 a již ve 21:40 jsme prováděli obnovu domén. Druhý den v cca 15:30 bylo vše vyřízené, přičemž poslední aktivní služby (kromě parkovaných domén) byly zcela funkční kolem 13:30 (následně se generovaly zóny pro domény, které nemají služby). 

O celé situaci jsme informovali jak na sociálních sítích (první příspěvek tak byl po několika minutách od prvních problémů), tak i na stránkách statusu našich služeb a zároveň i v chatu a administraci služeb pro naše zákazníky. V průběhu noci jsme vše několikrát aktualizovali a pracovali jsme na tom s několika pracovníky současně.

Na webu jsme měli návod, jak případně rychleji obnovit svoji službu. Stačilo nám napsat nebo v zákaznické administraci kliknout na aktualizaci změn v nastavení DNS. Tím se zóna vygenerovala přednostně a do 30 minut byla služba plně funkční ze všech sítí.

Jak se výpadek DNSSEC podepsal na našich službách

Zasaženy byly  domény .cz s DNSSEC (tedy weby a e-maily na těchto doménách).

Emaily

Nejdříve začneme s emaily. Náš mailserver ověřuje z bezpečnostních důvodů, zdali byl email skutečně odeslán z domény, kterou deklaruje. K tomu využívá naše DNS. Jelikož nebyl validní záznam DNSSEC, tak mailserver odmítl email poslat. Toto se týkalo pouze emailů odesílaných přes SMTP. Emaily odeslané pomocí PHP skriptu odcházeli v pořádku.

Problém s emaily jsme vyřešili přenastavením ověřování z našeho DNS na DNS servery CZ.NIC.  
Doplnění našeho původního tvrzení “Ano, je překvapení, že DNS servery CZ.NICu nevalidují DNSSEC.”   a vysvětlení ze strany CZ.NIC (21. 4. 2017)
“Naše DNS samozřejmě validují, ve vašem případě to částečně fungovalo proto, že unbound v defaultním nastavení (náš případ) drží expirované podpisy 10% doby platnosti podpisu (expiration-inception). S tím, že minimální čas je jedna hodina, maximální pak 24 hodin.

Takže z toho můžeme asi konstatovat, že opravdu po nějakou dobu naše ODVR nevracelo chybu, přestože byl expirovaný DNSSEC.”
Za nepřesnou formulaci se omlouváme. Určitě to nebylo nic proti CZ.NIC, ale popisujeme celou situaci.

Weby

.CZ domény, které u nás mají DNS s nastaveným DNSSEC se pro návštěvníka, jehož resolver ověřuje platnost DNSSEC zdáli jako nedostupné. Toto postihlo odhadem 3 – 5 % návštěvníků. Jednalo se o návštěvníky z Česka, kteří používají DNS Google, část návštěvníků sítě O2 a Vodafone a některých další sítí.

K tomuto číslu jsme došli porovnáním přístupů z webhostingů z logů naší DDoS ochrany, která síť detailně monitoruje, dále porovnáním přenosů dat od našich dodavatelů konektivity.

Nejednalo se tedy o nedostupnost kompletně všeho nebo naopak o to, že by neprocházela část požadavků, ale jednalo se o to, že z některých sítí byly skutečně domény nedostupné nebo méně dostupné a to v závislosti na tom jaké DNS servery konkrétní návštěvník použil. 

Porovnání provozu

Na následujícím grafu vidíte celkový provoz od 16:00 3.4.2017 do 16:00 4.4.2017. V horní části je příchozí provoz z internetu k nám a v spodní části odchozí provoz od nás do internetu (k návštěvníkům). 

Pro porovnání celkový provoz od 16:00 3.4.2017 do 16:00 6.4.2017. 

Jak vidíte na grafech žádné velké propady návštěvnosti nejsou po dobu incidentu vidět. DDoS většina neověřuje. 

Samozřejmě celkový provoz zahrnuje webhostingy, VPS, dedikované servery a WEDOS disk. Proto jsme vybrali ještě graf čistě 88 tisíc webhostingů NoLimit přes IPv4 a IPv6 podle druhu komunikace. Graf zahrnuje období od 16:00 3.4.2017 do 16:00 6.4.2017. Naše DDoS ochrana dokáže všechno velmi detailně kontrolovat a vyhodnocovat v reálném čase.

Jednotlivé sítě

Psali jsme, že nedostupnost se dotkla jen některých sítí. Pro porovnání vám přinášíme grafy přenosů z těch největších. Jedná se o dobu od 16:00 3.4.2017 do 16:00 6.6.2017. 

Telefonica Czech Republic, a.s. (O2)

UPC Liberty Global Operations B.V.

T-Mobile Czech Republic a.s.

Vodafone Czech Republic a.s.

Co jsme udělali proto, aby se to už nikdy nestalo a plánovaná vylepšení

Vylepšili jsme monitoring podobných situací a bude prováděna nejen automatická kontrola, ale i pravidelná kontrola prostřednictvím člověka.

Rychlejší generátor zónových souborů dovolí provádět změny v DNS rychleji.

Dále máme v plánu upravit naše webové rozhraní pro emaily tak, aby zmizela některá omezení. Přeci jen pokud se uživatel už jednou do webového rozhraní přihlásí, tak není nutné ověřovat zdali odesílá email z domény ke které je přihlášen. Cílem je dosáhnout stavu, kdy přes naše webové rozhraní půjde odesílat email za všech okolností.

Zákaznická podpora

V průběhu večera byla naše zákaznická podpora přetížená, protože přijala několik tisíc mailů a chatů s požadavky, které souvisejí s výše uvedeným problémem.

Pokud operátor nemůže přijmout chat v důsledku toho, že jich má otevřených více než zvládne, tak po určité době “spadne” komunikace do požadavků (podobně jako zprávy z kontaktního formuláře). Jakmile má operátor “volné ruce”, tak prochází požadavky a postupně na ně odpovídá emailem. 

Kolegové požadavky postupně vyřizovali a během noci bylo vyřízeno vše. Ráno už jsme odpovídali na všechny dotazy průběžně.

Závěr

Omlouváme se za komplikaci. Musíme uznat, že to byla nepříjemná chyba a na počátku jsme měli strach o to, že dopad bude mnohem nepříjemnější, než nakonec byl. Z této nepříjemné zkušenosti jsme se poučili a uděláme několik úprav, aby se to příště neopakovalo.