Advanced DNS Analytics and Measurements

Smyslem projektu ADAM je vývoj softwarových nástrojů a metod pro pořizování, uchovávání, vizualizaci a analýzu dat o provozu DNS.

Domain Name System (DNS) je nejvýznamnější middlewarovou službou v současném Internetu. Prakticky všechny ostatní internetové služby používají DNS k překladu doménových jmen na IP adresy a několika dalším účelům.

CZ.NIC, z.s.p.o. spravuje a provozuje službu DNS pro českou národní doménu .CZ. Ta patří se svými přibližně 1,33 milionu domen druhé úrovně spíše mezi menší ccTLD, i tak ale její DNS servery v deseti zemích po celém světě zodpovídají každou vteřinu v průměru okolo 15 tisíc dotazů od DNS resolverů.

Z provozního a bezpečnostního hlediska je poměrně důležité systematicky sbírat data o DNS provozu – jak sumární statistiky, tak i podrobné informace s rozlišením až do jednotlivých DNS transakcí. Po příslušném zpracování je možno tato data použít pro řadu různých účelů, například:

  • monitorování DNS serverů
  • analýza bezpečnostních incidentů a útoků
  • efektivní plánování rozvoje DNS infrastruktury
  • uveřejňování informací o stavu DNS zóny a registru

Data z DNS provozu jsou ukázkovým příkladem velkých dat, a proto vyžadují pokročilé postupy ve všech fázích zpracování – sběru, uchovávání, vizualizaci i analýze.

Projekt ADAM se zabývá všemi výše uvedenými fázemi. Celý řetězec zpracování dat je znázorněn v následujícím schématu:

Informace o DNS transakcích jsou extrahovány přímo na DNS severech (vlevo nahoře) a posílány do centrální lokality k uložení do clusteru Apache Hadoop cluster. Dotazy do databáze Hadoop je možné posílat prostřednictvím SQL rozhraní Impala. Data z Hadoopu i dalších zdrojů, jako je třeba doménový registr či DNS crawler, se zpracovájí ve statistickém systému R a dalších nástrojích, a ukládají se do servisní databáze. Do této databáze je možné přistupovat pomocí SQL, ale všechna dostupná data jsou zároveň vystavena prostřednictvím REST API. K tomuto datovému rozhraní lze přistupovat buď přímo jako ke zdroji otevřených dat anebo může být použito například pro vizualizace.

Softwarové nástroje a metody vyvinuté v projektu ADAM jsou primárně určeny k internímu využití v rámci sdružení CZ.NIC, jsou však všechny veřejné a open-source, takže případní další zájemci je mohou použít a popřípadě upravit pro své potřeby.

Dílčí projekty

Projekt ADAM sestává z následujících dílčích projektů.

Knihovna C-DNS

Knihovna C++ pro generování a zpracování formátu Compacted-DNS (C-DNS) definovaného v RFC 8618

DNS sonda

Vysokorychlostní sonda schopná zpracovat DNS provoz v reálném čase a generovat buď C-DNS anebo formát Apache Parquet. Data pak lze buď uložit na lokální disk, anebo je přímo přenášet do vzdálené lokality. 

DNS crawler

Program napsaný v Pythonu, který prochází zadaný seznam DNS domén a pro každou z nich provede předepsané DNS dotazy a další akce. Nástroj je navržen tak, že paralelně posílá a zpracovává více dotazů. Celou zónu .CZ je tak možné projít v řádu hodin na běžném hardwaru. 

Specifikace OpenAPI

Dokumentace a testovací prostředí pro REST API servisní databáze. 

Další odkazy