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.