DNS collector

Úvod

DNS Collector je nástroj pro zpracování dat DNS provozu na UNIX-like systémech. Aplikace slouží k extrahování surových DNS paketů z TCP/IP provozu. Získané DNS pakety jsou předávány k dalšímu zpracování jednotlivým specializovaným modulům.

Použití

Aplikaci je možné použít všude tam, kde je nutné zpracovávat DNS provoz. Konkrétní nasazení závisí na použitých modulech.

Vstupní data

Aplikace může zpracovávat:

  • archivovaný TCP/IP provoz, který je uložený ve formátu zpracovatelném knihovnou libpcap
  • provoz zachytávaný přímo na síťových zařízeních

Aplikace se stará o defragmentaci paketů a rekonstrukci TCP spojení. Je schopna zachytávat provoz na několika síťových zařízeních současně. Nedovoluje však kombinovat vstup z aktivních síťových rozhraní a zároveň zpracovávat uložené archivy provozu. Archivovaný provoz může být komprimován programy gzip nebo xz.

Omezení: V případě, že je zpracováván archivovaný provoz, není možné načítat a kombinovat provoz z více archivů současně.

Díky tomu, že aplikace využívá knihovnu libpcap je možné na data před samotným zpracováním aplikovat pcap-filtry.

Rekonstruovaná surová DNS data jsou opatřena dodatečnými informacemi (data ze síťové a transportní vrstvy) a jsou předána k dalšímu zpracování modulům.

Zpracování v modulech

O zpracování surových (v síťovém formátu) DNS se starají zásuvné moduly. Těch může v hlavní aplikaci existovat několik. Moduly lze nahrávat a rušit bez přerušení běhu hlavní aplikace. Modulům lze předávat dodatečné konfigurační parametry a tím lépe řídit jejich funkci.

Moduly mohou využívat dodatečné knihovny ke zpracování surových DNS dat (např. libldns).

Moduly lze psát v jazycích C nebo C++. Součástí zdrojového kódu je také modul s jehož pomocí je možné spouštět skripty v Pythonu pomocí nichž je pak možné zpracovávat zachytávaný DNS provoz. To je výhodné zejména pro rychlý návrh, kdy za cenu jistého zpomalení je možné využívat výhod tohoto jazyka.

Dostupné moduly

  • detekce anomálií v DNS provozu - Detekce skrytých anomálií založená na statistické analýze atributů provozu.
  • zpracování DNS dat v Pythonu - Zpracování provozu pomocí jednoduchých skriptů v Pythonu pro účely rychlého návrhu.

Konfigurace

DNS Collector je možné spustit jako:

  • daemon: Aplikace je plně konfigurovatelná pomocí konfiguračního souboru. Změna konfigurace se provádí editací konfigračního a souboru a zasláním SIGHUP.
  • z příkazové řádky: Lze využít konfigurační soubor. Aplikaci je možné v omezené míře ovládat pomocí parametrů příkazové řádky. To se hodí zejména při dávkovém zpracování archivovaného provozu.

V experimentální fázi vývoje se nachází možnost konfigurace celé aplikace protokolem NETCONF. Kód se nachází v jedné z vývojových větví git repozitáře.

Instalace

Aplikaci je možné nainstalovat ze zdrojových souborů.

Získání zdrojových kódů

Zdrojové soubory jsou dostupné v git repozitáři:

git clone https://gitlab.labs.nic.cz/dns-collector.git

Hlavní větev (master) obsahuje nejstabilnější kód. Vývojová větev (develop) obsahuje obecná rozšíření a nejnovější opravy chyb. Větve rozšíření (feature-*) drží experimentální funkce.

Překlad a instalace

Nejdříve je třeba vygenerovat konfigurační skript:

cd dns-collector
sripts/build/autogen.sh

Pak nakonfigurujte, přeložte a nainstalujte aplikaci:

./configure
make
make install

Pro výpis možností spusťte:

./configure --help

Dodatečné informace

Více informací o tom, jak psát moduly, popis jejich funkcí, příklady použití naleznete na wiki projektu.