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.
Grafy a statistiky
REST API
Rozhraní pro strojový přístup k datům servisní databáze.