Dokumentace.dvi Manual

User Manual:

Open the PDF directly: View PDF PDF.
Page Count: 6

VYSOKÉ U ˇ
CENÍ TECHNICKÉ V BRN ˇ
E
FAKULTA INFORMA ˇ
CNÍCH TECHNOLOGIÍ
Sít’ové aplikace a správa sítí
Export DNS informací pomocí protokolu Syslog
Dokumentace
16. listopadu 2018 Petr Marek
Obsah
1 Zadání 2
2 Úvod do problematiky DNS 2
3 Uvedení do problematiky logování 2
4 Základní informace o aplikaci 2
4.1 Formát statistik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
5 Návrh aplikace 3
6 Popis implementace 3
6.1 Zachycení paket˚u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
6.2 Zpracování DNS odpovˇ
edi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
6.3 Statistiky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
6.4 Syslog zpráva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
7 Návod na použití 5
1
1 Zadání
Cílem projektu bylo vypracovat aplikaci, která bude umˇ
et zpracovávat data protokolu DNS[5] (Domain Name
System) a vybrané statistiky exportovat pomocí protokolu syslog[3] na centrální logovací server.
2 Úvod do problematiky DNS
Jelikož poˇ
cítaˇ
ce pracují na úrovni binárních dat, i pˇ
renos dat po síti musí probíhat touto cestou. Nicménˇ
e pro
ˇ
clovˇ
eka je nároˇ
cné a nepraktické pamatovat si sekvenci nˇ
ekolika ˇ
císlis pro každou stránku, kterou chce na
internetu navštívit. Tˇ
emto sekvencím se ˇ
ríká IP adresy a identifikují každé zaˇ
rízení v internetu. Proto vznikla
potˇ
reba mapovat IP adresy na lehce zapamatovatelná doménová jména. To byl základní kámen pˇ
ri vzniku
systému DNS, který tato aplikace využívá. Zprávy mezi koncovým zaˇ
rízením a DNS serverem lze odchytávat
a analyzovat. To bude také jedna z hlavních funkcí tohoto programu.
3 Uvedení do problematiky logování
Každý programátor mˇ
el nˇ
ekdy potˇ
rebu sbírat informace o tom, co jeho aplikace dˇ
elá. At’ už z ˇ
cistˇ
e informa-
tivního hlediska, ˇ
ci pro naleze p˚uvodu nˇ
ejakého problému. K tomu úˇ
celu je nutné mít informace o tom, co
se v daném systému dˇ
eje. K tomu slouží logování, které pˇ
rijímá potˇ
rebné informace a ukládá je. Naše aplikace
k tomu využívá protokol syslog. Používá se zejména proto, že umožˇ
nuje oddˇ
elení softwaru, který generuje
zprávy, systému, který je uchovává a softwaru, který je zaznamenává a analyzuje.
4 Základní informace o aplikaci
Aplikace naslouchá bud’ na sít’ovém rozhraní, nebo zpracovává daný pcap soubor. Pokud aplikace naslouc
na sít’ovém rozhraní, jsou statistiky periodicky odesílány na syslog server po vypršení definované doby dané
pˇ
repínaˇ
cem -t. Pˇ
ri zpracování pcap souboru jsou statistiky odeslány po jeho zpracování. Pˇ
ri obdržení signálu
SIGUSR1 vypíše aplikace statistiky na standardní výstup. Tento signál lze vyslat programovˇ
e. K tomu úˇ
celu
aplikace pˇ
ri spuštˇ
ení odposlouchávání vypíše informaci o ID programu (PID). Ten je pro usnadnˇ
ení odfiltrování
uveden prefixem "INFO:".
4.1 Formát statistik
domainname rr t y p e rr answer co u nt
domain-name : doménové jméno
rr-type : typ odpovˇ
edi
rr-answer : odpovˇ
ed
count : poˇ
cet shodných odpovˇ
edí
2
5 Návrh aplikace
Po zapnutí aplikace a zpracování argument˚u pˇ
ríkazoˇ
rádky je nutné získat data k analýze. K tomu slouží tzv.
sniffer. Je založen na pcap API sloužící k odchytávání provozu na síti. V aplikaci je nastaven pro odchytávání
paket˚u zdrojového portu 53, tedy ty obsahující odpovˇ
ed’ serveru DNS. Z této zprávy jsou vybrány potˇ
rebná
data. Z nich se vytvoˇ
rí statistika, která se zobrazí uživateli, ˇ
ci odešle na centrální logovací server.
6 Popis implementace
6.1 Zachycení paket˚u
Nejprve je potˇ
reba odchytit samotný paket, k ˇ
cemuž slouží již zmiˇ
nované pcap API. Aplikace odchytává pouze
pakety z ethernetového rozhraní. Po odchycení paketu je tˇ
reba z nˇ
ej extrahovat data. Pokud se jedná o UDP
paket, celá DNS zpráva bude v jednom paketu. Jestliže je zpracováván TCP paket[2], je tˇ
reba rozlišovat, zda-li
je DNS zpráva již úplná ˇ
ci nikoliv. K tomu úˇ
celu slouží pˇ
ríznaky PUSH a SEQ v TCP hlaviˇ
cce. Jestliže je
pˇ
ríznak PUSH nastaven, znamená to, že data mají být ihned zpˇ
rístupnˇ
ena aplikaci. Pˇ
ríznak SEQ zase umožˇ
nuje
sledovat jednotliˇ
retˇ
ezce zpráv.
Tento mechanismus je v aplikaci implementován pouze ˇ
cásteˇ
cnˇ
e. Pokud pˇ
richází TCP pakety ve správ-
ném poˇ
radí, program je skládá za sebe. Tyto ˇ
cásti oznaˇ
cujeme jako segmenty. Jakmile pˇ
rijde PUSH pˇ
ríznak,
jsou takto poskládaná data jako jedna zpráva zpracována. Jestliže se vyskytne neoˇ
cekávaný segment, je dosud
rozpracovaná zpráva zahozena a zaˇ
cíná skládá segment˚u od novˇ
e pˇ
ríchozího paketu.
Bˇ
ehem odchytávání paket˚u lze vysláním signálu SIGUSR1 vypsat statistiky. Další signál SIGALRM je
použit kv˚uli nastavení ˇ
casovaˇ
ce, který zajišt’uje periodické odesílání statistik na logovací server.
6.2 Zpracování DNS odpovˇ
edi
Formát DNS zpráv je specifikován v RFC 1035[5]. Implementováno je i bezpeˇ
cnostní rozšíˇ
rení protokolu DNS,
DNSSEC. Tento protokol je popsán v RFC 4035[1].
Z každého pˇ
ríchozího DNS paketu je zpracována pouze první vyskytující se odpovˇ
edRR Answer. Navíc
podporovány jsou jen vybrané typy odpovˇ
edí. Pakety neobsahující žádnou odpovˇ
ed’, ˇ
ci obsahující nepodpo-
rované typy záznam˚u jsou ignorovány. K dekódování nˇ
ekterých typ˚u (napˇ
r. RRSIG) bylo zapotˇ
rebí zakódovat
base64 formát dat, jelikož jeho p˚uvodní binár forma není tisknutelná. K tomu zde slouží volnˇ
e dostup
modul base64 od René Nyffeneggera.
Z takto zpracovaných dat jsou vždy pˇ
red jejich tisknutím ˇ
ci odesláním na server vytvoˇ
reny statistiky. Sta-
tistiky jsou po jedné zprávˇ
e odesílány na logovací server formou UDP paket˚u.
3
6.3 Statistiky
Statistiky se vytváˇ
rí z ˇ
retˇ
ezce, ke kterému program po každém celém zpracovaném paketu pˇ
ripojuje další data.
Jeden ˇ
rádek tˇ
echto dat m˚uže vypadat napˇ
ríklad takto:
go og le . com A 1 7 2. 2 1 7 . 2 3. 2 3 8
Celý tento ˇ
retˇ
ezec se prochází a unikátní záznamy kopírují do pomocného ˇ
retˇ
ezce. Dále se prochází tento
pomocný ˇ
retˇ
ezec a ke každému jeho záznamu se pˇ
ripojí ˇ
císlo, oznaˇ
cující poˇ
cet jeho výskyt˚u v p˚uvodních
datech. Takto vytvoˇ
rený ˇ
retˇ
ezec již je výsledná statistika.
6.4 Syslog zpráva
Syslog zprávy jsou ve speciálním formátu. Ten je popsán v RFC 5424[3]. Formát ˇ
casové známky je pak blíže
specifikován v RFC 3339[4]. Tyto informace jsou doplnˇ
eny ke každému ˇ
rádku statistiky, který se odesílá na
logovací server. je tedy implementována zjednodušená varianta, která odesílá data po jednom ˇ
rádku. V aplikaci
je použit formát:
<PRI >VERSION TIMESTAMP HOSTNAME APPNAME MSG
PRI: Priorita zprávy
VERSION: verze specifikace protokolu syslog
TIMESTAMP: ˇ
casová známka - GMT ˇ
cas
HOSTNAME: IP adresa zaˇ
rízení, které zaslalo syslog zprávu
APP-NAME: Název aplikace
MSG: Zpráva
Celá zpráva m˚uže vypadat napˇ
ríklad takto:
<134>1 2018-09-20T22:14:15.003Z 127.0.1.1 dns-export - - - google.com A 172.217.23.238 68
Pokud se pˇ
ri výpisu objeví tento název aplikace "dns-export[- - -]", je tˇ
reba nastavit šablonu pro syslog,
která zobrazuje pouze pˇ
rijatou zprávu, bez dalšího formátování.
4
7 Návod na použití
dnse x p o r t [r f i l e . pcap ] [i i n t e r f a c e ] [s sy s l og s e r v e r ] [t se c onds ]
-r: zpracuje daný pcap soubor
-i: naslouchá na daném sít’ovém rozhraní a zpracová DNS provoz
-s: hostname/ipv4/ipv6 adresa syslog serveru
-t: doba výpoˇ
ctu statistik, výchozí hodnota 60s
Všechny parametry jsou nepovinné, nicménˇ
e platí urˇ
citá omezení. Odposlouchávat lze bud ze sít’ového roz-
hraní nebo ze souboru. Tedy možnosti -r a -i se vzájemnˇ
e vyluˇ
cují, ale alespoˇ
n jedna z nich musí být použita.
Také parametr -t nemá pˇ
ri zpracování pcap souboru opodstatnˇ
ení, statistiky jsou odeslány ihned po jeho zpra-
cování. Aplikace se ukonˇ
cuje zasláním signálu SIGINT nebo SIGTERM. Pˇ
ri použi jiného signálu m˚uže dojít
k úniku pamˇ
eti.
Reference
[1] ARENDS, R., AUSTEIN, R., LARSON, M. et al. Resource Records for the DNS Security Extensions [on-
line]. Duben 2005 [cit. 24. ˇ
ríjna 2018]. Dostupné na: <https://www.rfc-editor.org/rfc/
rfc4034.txt>.
[2] DICKINSON, J., DICKINSON, S., BELLIS, R. et al. DNS Transport over TCP - Implementation Require-
ments [online]. Duben 2016 [cit. 24. ˇ
ríjna 2018]. Dostupné na: <https://www.rfc-editor.org/
rfc/rfc7766.txt>.
[3] GERHARDS, R. The Syslog Protocol [online]. Duben 2009 [cit. 24. ˇ
ríjna 2018]. Dostupné na: <https:
//www.rfc-editor.org/rfc/rfc5424.txt>.
[4] KLYNE, G. a NEWMAN, C. Date and Time on the Internet: Timestamps [online]. ˇ
Cerven 2002 [cit. 24. ˇ
ríjna
2018]. Dostupné na: <https://www.rfc-editor.org/rfc/rfc3339.txt>.
[5] MOCKAPETRIS, P. Domain names - implementation and specification [online]. Listopad 1987 [cit. 24. ˇ
ríjna
2018]. Dostupné na: <https://www.rfc-editor.org/rfc/rfc1035.txt>.
5

Navigation menu