Skip to content

timoti111/VUT-FIT-ISA-DNS-Export

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Zadanie:

Vytvořte komunikující aplikaci podle konkrétní vybrané specifikace

pomocí síťové knihovny BSD sockets (pokud není ve variantě zadání

uvedeno jinak). Projekt bude vypracován v jazyce C/C++. Pokud
individuální zadání nespecifikuje vlastní referenční systém, musí být
projekt přeložitelný a spustitelný na serveru merlin.fit.vutbr.cz pod operačním systémem Linux.

Vypracovaný projekt uložený v archívu .tar a se jménem xlogin00.tar odevzdejte elektronicky přes IS. Soubor nekomprimujte.

  • Termín odevzdání je 19.11.2018 (hard deadline). Odevzdání e-mailem po uplynutí termínu, dodatečné opravy či doplnění kódu není možné.
  • Odevzdaný projekt musí obsahovat:
    1. soubor se zdrojovým kódem (dodržujte jména souborů uvedená v konkrétním zadání),
    2. funkční Makefile pro překlad zdrojového souboru,
    3. dokumentaci (soubor manual.pdf),
      která bude obsahovat uvedení do problematiky, návrhu aplikace, popis
      implementace, základní informace o programu, návod na použití. V
      dokumentaci se očekává následující: titulní strana, obsah, logické
      strukturování textu, přehled nastudovaných informací z literatury, popis
      zajímavějších pasáží implementace, použití vytvořených programů a
      literatura.
    4. soubor README obsahující krátký textový popis programu s případnými rozšířeními/omezeními, příklad spuštění a seznam odevzdaných souborů,
    5. další požadované soubory podle konkrétního typu zadání. 

  • Pokud v projektu nestihnete implementovat všechny požadované vlastnosti, je nutné veškerá omezení jasně uvést v dokumentaci a v souboru README.
  • Co není v zadání jednoznačně uvedeno, můžete implementovat podle svého vlastního výběru. Zvolené řešení popište v dokumentaci.
  • Při řešení projektu respektujte zvyklosti zavedené v OS unixového typu (jako je například formát textového souboru).
  • Vytvořené programy by měly být použitelné a smysluplné, řádně komentované a formátované a členěné do funkcí a modulů. Program by měl obsahovat nápovědu informující uživatele o činnosti programu a jeho parametrech. Případné chyby budou intuitivně popisovány uživateli.
  • Aplikace nesmí v žádném případě skončit s chybou SEGMENTATION FAULT ani jiným násilným systémovým ukončením (např. dělení nulou).
  • Pokud přejímáte krátké pasáže zdrojových kódů z různých tutoriálů či příkladů z Internetu (ne mezi sebou), tak je nutné vyznačit tyto sekce a jejich autory dle licenčních podmínek, kterými se distribuce daných zdrojových kódů řídí. V případě nedodržení bude na projekt nahlíženo jako na plagiát.
  • Konzultace k projektu podává vyučující, který zadání vypsal.
  • Před odevzdáním zkontrolujte, zda jste dodrželi všechna jména souborů požadovaná ve společné části zadání i v zadání pro konkrétní projekt. Zkontrolujte, zda je projekt přeložitelný.
Hodnocení projektu:
  • Maximální počet bodů za projekt je 20 bodů.
    • Maximálně 15 bodů za plně funkční aplikace.
    • Maximálně 5 bodů za dokumentaci. Dokumentace se hodnotí pouze v případě funkčního kódu. Pokud kód není odevzdán nebo nefunguje podle zadání, dokumentace se nehodnotí.
  • Příklad kriterií pro hodnocení projektů:
    • nepřehledný, nekomentovaný zdrojový text: až -7 bodů
    • nefunkční či chybějící Makefile: až -4 body
    • nekvalitní či chybějící dokumentace: až -5 bodů
    • nedodržení formátu vstupu/výstupu či konfigurace: -10 body
    • odevzdaný soubor nelze přeložit, spustit a odzkoušet: 0 bodů
    • odevzdáno po termínu: 0 bodů
    • nedodržení zadání: 0 bodů
    • nefunkční kód: 0 bodů
    • opsáno: 0 bodů (pro všechny, kdo mají stejný kód), návrh na zahájení disciplinárního řízení.
Variant description:Cílem projektu je vytvořit aplikaci, která bude umět zpracovávat data protokolu DNS (Domain Name System) a vybrané statistiky exportovat pomocí protokolu Syslog na centrální logovací server. 

Spuštění aplikace
dns-export [-r file.pcap] [-i interface] [-s syslog-server] [-t seconds]
  • -r : zpracuje daný pcap soubor
  • -i : naslouchá na daném síťovém rozhraní a zpracovává DNS provoz
  • -s : hostname/ipv4/ipv6 adresa syslog serveru
  • -t : doba výpočtu statistik, výchozí hodnota 60s

Upřesnění zadání:
Aplikace bude vytvářet následující statistiky:

domain-name rr-type rr-answer count

Pokud aplikace naslouchá na síťovém rozhraní, jsou statistiky odesílány na syslog server po vypršení definované doby dané přepínačem -t. Při zpracování pcap souboru jsou statistiky odeslány po jeho zpracování. Při obdržení signálu SIGUSR1 vypíše aplikace statistiky na standardní výstup.

Příklad:
google.com A 172.217.23.238 68

Definice syslog zprávy:
Syslog zprávy budou dodržovat syntaxi dle RFC 5424. Povinné položky je timestamp, hostname, pri, verze, název aplikace a samotná zpráva. Lze doplnit chybějící informace, jako např. PID procesu, aj. Facility je nastaveno na local0 a severity na Informational.

Příklad Syslog zprávy:
<134>1 2018-09-20T22:14:15.003Z 192.0.2.1 dns-export - - - google.com A 172.217.23.238 68

Limit pro syslog zprávy je typicky 1kB, pro efektivnost můžete sloučit více statistických zpráv do jedné syslog zprávy. V zjednodušené variantě lze posílat každou statistickou informaci jako samostatnou syslog zprávu.


Dokumentace:
Soubor Readme z obecného zadání nahraďte souborem dns-export.1 ve formátu a syntaxi manuálové stránky - viz https://liw.fi/manpages/ 
Dokumentaci ve formátu pdf vytvořte dle pokynu v obecném zadání.

Referenční virtuální stroj
Implementace bude testována na standardní instalaci distribuce CentOS7. Můžete použít image pro CentOS dostupný zde (user/user4lab, root/root4lab). Alternativně lze využít server merlin, kde lze otestovat zpracování pcap souboru (pro naslouchání na síťovém rozhraní je třeba root oprávnění).

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published