Semestrálna práca z predmetu Komunikačné počítače - IDS systém SNORT

01.01.2007

Obsah

Úvod

Na nasledujúcich stránkach sa pokúsim priblížit IDS systém SNORT. Prvá časť je zameraná na vysvetlenie základov tvorby inšpekčných pravidiel. Druhá časť je zameraná na rozličné programové nástroje slúžiace na prehliadanie a analýzu výstupných logov z programu Snort. Existuje viacero rozličných programov pre rôzne platformy a operačné systémy. Vzhľadom k tomu, že primárne používam operačný systém Linux a nemám možnosť osobne otestovať programy určné pre iné operačné systémy, zameriam sa výlučne na programy tvorené pre OS Linux.

SNORT

Úvod do problematiky IDS

Intrusion Detection System (systém detekcie prienikov) vo všeobecnosti detekuje nežiadúce prieniky resp. pokusy o prienik do systému a manipuláciu s nim. Existuje viacero rozdielných druhov IDS. Pokúšať sa o takýto prienik môže skúsený útočník ale rovnako aj amatér používajúci automatizované nástroje.

Od IDS sa očakáva aby bol schopný odhaliť všetky možné druhy prenosu a použitia počítača ktoré nemôže odhaliť konvenčný fieewall. Toto zahŕňa sieťové útoky na zraniteľné služby, dátovú útoky na aplikácie, útoky mierené na užívateľa, neautorizované prihlasovanie a prístup k citlivým súborom a somozrejme v neposlednom rade malware.

IDS je zložený z viacerých komponentov: senzory ktoré generujú bezpečnostné udalosti, konzola na monitorovanie udalostí a varovaní a ovládanie senzorov, a centrálny modul ktotý zaznamenáva udalosti generované senzormi do databázi a súčasne využíva systém pravidiel na generovanie varovaní zo zachytených udalostí. Je niekoľko spôsobov ako kategorizovať IDS v závislosti od typu a umiestnenia senzorov a metodiky použitej na generovanie varovaní. V mnohých jednoducých IDS sú všetky tri komponenty skombinované v jednej aplikácií.

Úvod do systému SNORT

Snort je open source IDS vydaný pod licenciou GPL. Pôvodne bol napísany Martinom Roeschom, v súčastnosti je pod vlastníctvom Sourcefire. Snort je schopný analizovať prenos a logovať pakety na IP sieťach v reálnom čase. Môže vykonávať analýzu protokolu, vyhľadávanie a porovnávanie v obsahu paketu, a môže byť použitý na detekciu rôznorodých útokov a pokusov o ne, ako napríklad pretečenie buffra, stealth port scan, CGI útoky, útoky na SMB a mnoho ďalších. Systém sa môže použiť taktiež ako prevencia pred vniknutím. Snort môžete taktiež skombinovať s inými projektmi.

Systém Snort funguje na jednoduchom princípe. Zachytáva každy prichádzajúci a odchádzajúci paket a následne ich otestuje množstvom pravidiel. Aby mohol Snort odchytávať všetky pakety, je potrebné nastaviť sieťovú kartu do promiskuitného režimu. Toto nastavenie robí Snort spravidla autoamticky. Pri testovaní paketov pravidlami sa porovnávajú údaje získané z paketu s údajmi z pravidla. Pokiaľ sa tieto údaje zhodujú, vykoná sa patričná operácia, ktorá môže byť buď alert, log alebo pass. Pravidlá je možné získať buď priamo zo stránky projektu www.snort.org alebo si môžete pravidla vytvoriť sami podľa niekoľkých základných pravidiel. Pravidlá na stránke projektu sú priebežne aktualizované a dopĺňané o nové takmer každý deň.

Tvorba inšpekčných pravidiel

základné informácie

Vďaka ľahkozrozumiteľnému jazyku na popis pravidiel ktorý Snort používa môžu byť pravidlá veľmi flexibilné a zároveň aj veľmi obsiahle a mocné. Pri písaní pravidiel treba mať na pamäti niekoľko základných pravidiel: Následuje príklad pravidla:
			alert tcp any any -> 192.168.1.0/24 111 
			(content:"|00 01 86 a5|"; msg: "mountd access";)
Toto pravidlo vygeneruje varovanie vždy keď Snort odchytí paket zo všetkými následujúcimi atribútmi: Prvý riadok tohto pravidla je hlavička pravidla (rule header) a druhý riadok sú voľby pravidla (rule options). Toto pravidlo však postráda jednu zo základných podmienok, a síce že nie je v jedinom riadku. Rozdelenie do dvoch riadkov je len ilustračné. Slová pred dvojbodkami vo voľbách pravidla sa nazývajú kľúčové slová volieb (option keywords). Jedno kľúčové slovo sa môže v jednom pravidle vyskytnúť aj viackrát. Samotné voľby pravidla nie sú nevyhnutné, pravidlo môže existovať aj bez nich. Používajú sa však na upresnenie definície akcie s paketmy. Samotné elementy pravidla sa berú ako logický AND a súbor všetkých pravidiel vrámci Snortu sa berie ako logický OR.

Hlavička pravidla

Hlavička pravidla obsahuje informácie typu kto, kde a čo. Okrem toho obsahuje informácie o tom, čo sa ma vykonať keď sa zachytí paket so zhodnými atribútmi. Prvá hodnota určuje akciu ktorá sa má vykonať. Druhá hodnota určuje protokol. Za ňou následuje zdrojová a cieľová adresa, tieto adresy sa skladajú z IP adresy vo formáte CIDR zápisu a čísla portu.

Akcie

Snort rozlišuje päť rôznych akcií ktoré môže vykonať: alert, log, pass, activate a dynamic. Pokiaľ používate Snort v režime inline, môžete navyše použiť drop, reject a sdrop.
alert
- vygeneruje varovanie na základe zvolenej metódy a následne loguje paket
log
- zachytený paket len loguje, nevykonáva žiadnu inú operáciu
pass
- zahodí zachytený paket
activate
- vygeneruje varovanie a následne zapne iné dynamické pravidlo
dynamic
- čaká kým bude aktivovaný pomocou activate a potom sa správa ako log
drop
- donutí iptables aby paket zahodil a následne ho zalogoval
reject
- donutí iptables aby paket zahodil, zalogoval ho a potom poslal správu TCP reset v prípade že je to TCP protokol alebo správu ICMP port unrecheable ak je to UDP protokol
sdrop
- donutí iptables paket zahodiť ale nebude ho logovať
Taktiež môžete definovať vlastné typy a priradiť im jeden alebo viacero výstupných pluginov. Tieto typy následne môžte použiť ako akcie v pravidlách. Nsaledujúci príklad vytvorí typ redalert ktorý bude logovať do syslogu a MySQL:
		ruletype redalert
		{
		      type alert 
		      output alert_syslog: LOG_AUTH LOG_ALERT 
		      output database: log, mysql, user=snort dbname=snort host=localhost 
		}

Protokol

V súčastnosti je Snort schopný analyzovať štyri rôzne protokoly: V budúcnosti môžu pribudnúť aj ďalšie, ako napríklad ARP, IPX, IGRP, GRE, OSPF, RIP a ďalšie.

IP adresy

Pokiaľ chcete definovať IP adresu, ktorá môže byť akákoľvek, môžete použit kľúčové slovo any. Snort neobsahuje žiadny mechanizmus na vyhľadávanie IP adries ku hostiteľským názvom, preto okrem kľúčového slova any môžete použiť výlučne len IP adresy. Za IP adresov následuje CIDR zápis. CIDR určuje koľko bitov je použitých pre sieťový prefix. Čiže adresa
192.168.3.0/24
zodpovedá IP sieti s adresou
192.168.3.0
a maskou
255.255.255.0.

Niekedy môžu nastať situácie že chcete definovať všetky IP adresy okrem jedinej. V takomto prípade môžete použiť negovací operátor `` ! ". Tento operátor sa píše pred IP adresou.

!192.168.3.0/24
Uvedený príklad definuje všetky IP adresy okrem rozsahu
192.168.3.0 - 192.168.3.255.
Snort umožnuje definovať aj rozsah IP adries. Rozsah sa definuje pomocou dvoch IP adries s CIDR zápisom oddelených čiarkou `` , " a uzavretých do hranatých zátvoriek `` [ ] ". V súčastnej dobe nesmie byť v zozname IP adries použitá žiadna medzera. V prípade použitia negovacieho operátora sa tento uvádza pred `` [ ".
![192.168.1.0/24,192.168.3.0/24]

Čísla portov

Čísla portov je možné zadať rôznymi spôsobmi, podobne ako pri IP adresách. Na definovanie akéhokoľvek portu možete použiť kľúčové slovo any. Ďalej môžete definovať port priamo pomocou jeho čísla. Podobne ako pri IP adresách, môžete použiť aj negovací operátor `` ! ". Taktiež možete definovať rozsah portov. Avšak na rozdiel od rozsahov IP adries, rozsah portov sa definuje pomocou dvojice čísel portov oddeleých dvojbodkov `` : ".
log udp any any -> 192.168.1.0/24 1:1024
Loguje všetky UDP pakety z akejkoľvek IP adresy a akéhokoľvek portu, ktoré smerujú na IP adresu v sieti 192.168.1.0 s maskou 255.255.255.0 a port z rozsahu 11024. Ak sa v rozsahu portov vynechá jedno z čísel portov, bude sa brať do úvahy prvý resp. posledný port. Čiže
:6000
definuje porty od začiatku až po 6000, teda 16000. Podobne
500:
definuje porty od 500 až do 65535.

Smerové operátory

Smerový operátor -> určuje smer, v ktorom prebieha prenos na ktorý sa vzťahuje dané pravidlo. Ľavá strana od -> sa označuje ako zdrojová a pravá strana ako cieľová. Existuje aj obojstranný operátor <>. Tento operátor zabezpečuje že jeho ľavá aj pravá strana sú zároveň aj cieľové aj zdrojové.

Voľby pravidla

Voľby pravidla sú navzájom oddelené pomocou bodkočiarky `` ; ". Klúčové slová sa od argumentov volieb oddeľujú pomocou dvojbodky `` : ". Existuje vyše 40 kľúčových slov volieb pravidla, spomenieme si však len tie najpotrebnejšie.
msg
- určuje aká textová správa sa má zalogovať resp. sa má pridať do varovania.
msg: "<textová správa>";
sid
- prideľuje pravidlu unikátny identifikátor. Táto voľba by mala byť použitá spolu s voľbou rev. Hodnoty menšie ako 100 sú rezervované pre neskoršie použitie, hodnoty medzi 100 a 1000000 sú pre pravidlá pripojené k distribúcií Snort a hodnoty pre pravidla väčšie sú pre lokálne pravidlá.
sid: <id pravidla>;
classtype
- kategorizuje varovania do tried. Každá trieda má taktiež svoju prioritu. Triedy sú definované v súbore classification.config.
classtype: <názov triedy>;
content
- je jedna z najdôležitejších volieb. Umožnuje vyhľadávať v obsahu paketu porovnávaním vzoru. Ak sa hľadaný vzor zhoduje s časťou paketu, test sa vyhodnotí ako úspešný. Tento test je citlivý na veľkosť písmen. Vzory ktoré sa porovnávajú môžu byť zadané formou reťazcov alebo v hexadecimálnej forme. V prípade použitia hexadecimálnej formy sa tieto znaku uzatvárajú do `` | ". V prípade potreby je možné použiť aj negovací operátor `` ! ". Následujúce znaky musia byť v prípade použitia ako argumentu voľby predchádzané escape sekvenciou: `` : ; $\backslash$ " ".
content: [!] "<vzor>";
pcre
- umožnuje používať regulárne výrazy compatibilné s PERLom.
pcre:[!]"(/<regex>/|m<delim><regex><delim>)[ismxAEGRUB]";
ttl
- overuje hodnotu TTL (time to live). Používa sa na detekciu pokusov o traceroute.
ttl:[[<číslo>-]><=]<číslo>;
ipopts
- overuje špecifické IP voľby. Najčastejšie sa kontrolujú striktné a voľné routovanie (strict source routing, loose source routing) ktoré sa nepoužívajú v žiadnej bežnej internetovej aplikácií.
ipopts:<rr|eol|nop|ts|sec|lsrr|ssrr|satid|any>;
dsize
- testuje veľkosť paketu. Často sa používa na kontrolu abnormálnej veľkosti paketu čím sa dá overiť pretečenie buffra.
dsize: [<>]<number>[<><number>];
flags
- overuje konkrétne TCP flagy.
F
- FIN
S
- SYN
R
- RST
P
- PSH
A
- ACK
U
- URG
1
- 1. rezervovaný bit
2
- 2. rezervovaný bit
0
- žiadny TCP flag
flags:[!|*|+]<FSRPAU120>[,<FSRPAU120>];
logto
- loguje všetky pakety ktoré spĺňajú kritéria do špeciálneho súboru. Táto voľba však nefunguje keď je Snort v binárnom režime.
logto:"filename";
session
- extrahuje užívateľské údaje z TCP sedenia. Môže sa použiť napríklad pri ftp, telnete, rlogin atď. Táto voľba má dva argumenty, printable a all. Printable vypíše len čitateľné znaky, all nahradí nečitateľné znaky ich hexadecimálnou hodnotou.
session: [printable|all];
resp
- pokúsi sa ukončiť sedenie v prípade varovania. V Snorte sa to nazíva flexibilná odozva. Táto voľba však nie je bežne zapnutá. Aby bola dostupná, musí byť Snort skompilovaný s voľbou -enable-flexresp. Na ukončenie sedenia slúžia následovné mechanizmy:
rst_snd
- na odosielajúci soket pošle TCP-RST pakety
rst_rcv
- na prijímajúci soket pošle TCP-RST pakety
rst_all
- pošle TCP-RST pakety na obidva sokety
icmp_net
- odosielateľovy pošle ICMP_NET_UNREACH
icmp_host
- odosielateľovy pošle ICMP_HOST_UNREACH
icmp_port
- odosielateľovy pošle ICMP_PORT_UNREACH
icmp_all
- pošle odosielateľovy všetky hore uvedené ICMP pakety
resp: <mechanizmus>[,<mechanizmus>[,<mechanizmus>]];
react
- umožnuje blokovať internetové stránky na ktoré chce užívateľ pristupovať. Umožnuje zavrieť takéto spojenie a poslať správu internetovému prehliadaču. Táto voľba používa dva argumenty:
block
- ukončí spojenie a pošle viditeľnú správu
warn
- pošle viditeľnú varovnú správu
react: <reakcia[, doplnkova_reakcia]>;

Prehliadanie výsledkov

Každé varovanie, ktoré Snort vygeneruje, a ktoré je nastavené na logovanie, sa primárne zapisuje do logového súboru. Takýchto logových súborov je viacero. Podľa nastavenia CRONa a nastavenia rotovania logov sa totiž raz za určité konkrétne časove obdobie logy skomprimujú. Snort zapisuje vždy len do súboru alert. Vo väčšine UNIX-ových a LINUX-ových systémoch je cesta k tomuto súboru nasledovná: /var/log/snort/alert. Skomprimovaným súborom sa navyše priraďuje poradové číslo a samozrejme prípona .gz, na komprimáciu sa totiž používa program GZIP. Zakaždým, keď sa vykonáva rotovanie logových súborov, sa vytvorí nový skomprimovaný súbor, ktorému je priradené poradové číslo 1 a všetky ostatné poradové čísla sa posunú o +1. Obsah adresára /var/log/snort/ može vyzerať napríklad takto:

			-rw-r----- 1 snort adm      0 Apr 15 21:36 alert
			-rw-r----- 1 snort adm  23931 Apr 14 01:19 alert.1.gz
			-rw-r----- 1 snort adm  27941 Apr 13 10:44 alert.2.gz
			-rw-r----- 1 snort adm  20538 Apr 11 15:53 alert.3.gz
			-rw-r----- 1 snort adm   9411 Apr  7 12:54 alert.4.gz
			-rw-r----- 1 snort adm  34305 Apr  7 07:36 alert.5.gz
			-rw-r----- 1 snort adm   8831 Apr  6 10:43 alert.6.gz
			-rw-r----- 1 snort adm  40913 Apr  5 11:22 alert.7.gz
Súbor alert.7.gz je pritom najstarší logový súbor a alert je najnovší.

Snort však dokáže zapisovať výsledky nielen do logových súborov. Umožňuje totiž zápis varovaní do databázy. V súčastnosti sú podporované tieto rôzne databázy:

Snort je však veľmi modulárny systém, a preto je podpora ďalších databáz len otázkou ďalších dostupných modulov.

Samotné varovanie, ktoré Snort vygeneruje, vyzerá napríklad takto:

		[**] [1:2189:3] BAD-TRAFFIC IP Proto 103 PIM [**]
		[Classification: Detection of a non-standard protocol or event] [Priority: 2] 
		04/14-01:16:50.924500 158.193.87.254 -> 224.0.0.13
		PIM TTL:1 TOS:0xC0 ID:19689 IpLen:20 DgmLen:38
		[Xref => http://cve.mitre.org/cgi-bin/cvename.cgi?name=2003-0567]
		[Xref => http://www.securityfocus.com/bid/8211]

Takýto výpis nie je príliš zrozumiteľný a navyše neposkytuje žiadne štatistické hodnoty. Existuje viacero programov, ktoré analyzujú varovania vygenerované Snortom a ako výstup poskytujú rozličné štatistiky. Všeobecne je možné rozdeliť tieto programy na dve kategórie podľa princípu generovania výstupných štatistík:
dynamické
- štatistiky sa generujú dynamicky vždy na žiadosť programu, a teda odrážajú aktuálny stav.
statické
- štatistiky sa vegenerujú len raz, potom sa už len prehliadajú v patričnom formáte.
Na základe tohto rozdelenia som vybral dve rôzne aplikácie ktoré reprezentujú spomínané kategórie. Sú nimi BASE a SnortAlog.

BASE

BASE (Basic Analysis and Security Engine) je založený na kóde projektu ACID (Analysis Console for Intrusion Databases) ktorý sa taktiež nazýva Acidlab. Projekt ACID je už však zastavený a ďalej sa nevyvíja. Posledná verzia bola vydaná 1. augusta 2003 a jej označenie je 0.9.6b23. Posledná verzia BASE bola uvoľnená 19. marca 2006 a jej označenie je base-1.2.4.

BASE je v podstate webové rozhranie pre vykonávanie analýz na vygenerovaných varovaniach, ktoré sú uložené v databáze. Podporuje databázy MySQL a PostgreSQL. Používa autentifikáciu užívateľov a umožnuje tak administrátorovi určovať, čo ktorý užívateľ može vidieť. Všetky štatistiky, výpisy a grafy su dostupné cez webové rozhranie.

inštalácia a použitie

BASE pre svoju plnú funkčnosť potrebuje správne nainštalovaný a nakonfigurovaný Apache, PHP, MySQL alebo PostgreSQL. Inštalácia pod Debianom je vďaka balíčkovaciemu systému apt pomerne jednoduchá, pretože BASE sa nachádza priamo v repozitári. Stačí teda len ako užívateľ root zadať:
apt-get install acidbase
V prípade, že nie sú splnené niektoré závislosti, vám systém automaticky ponúkne aj inštaláciu ostatných potrebných balíkov. Po samotnej inštalácií sa spustí konfigurácia. Podoba konfigurácie závisí na nastavení Debianu. Môže byť plne textová, grafická, alebo za použitia knižnice NCurses. Konfigurátor vás sprevádza nastavením pripojenia na zvolený databázový server a nastavením web servera.

Pokiaľ už je BASE nainštalovaný a nakonfigurovaný, môžete otestovať jeho funkčnosť v ktoromkoľvek internetovom prehliadači. Pokiaľ chcete pristupovať k aplikácií z počítačovej stanice na ktorej je BASE nainštalovaný, bude adresa servera localhost. V opačnom prípade bude adresa servera jeho IP adresa. Po nainštalovaní a nakonfigurovaní v Debiane je štandardná URL adresa pre BASE na lokálnom počítači takáto:

http://localhost/acidbase
URL adresa pre BASE na inom počítači môže byť napríklad takáto:
http://158.193.44.32/acidbase
Tieto URL adresy sú samozrejme len pre ukážku. Môžu byť totiž akékoľvek, závisí to výlučne len od nastavenia web servera.

poskytované štatistiky a grafy

BASE poskytuje množstvo výpisov a štatistík, ktoré sú prístupne prevažne hneď z úvodnej stránky. Tu sú vypísané tie najpodstatnejšie: Okrem týchto výpisov BASE umožnuje aj grafickú reprezentáciu v podobe grafov. Užívateľ má možnosť zvoliť si typ grafu, podporované sú: Pre každý graf si užívateľ môže taktiež špecifikovať ďalšie atribúty: Poskytované grafy:

Výhody

Webové rozhranie prináša so sebou niekoľko výhod. Predovšetkým je aplikácia prakticky multiplatformová, kedže je závislá jedine na PHP a MySQL, respektíve PostgreSQL. Umožnuje tak používanie aplikácie na akejkoľvek platforme, kde fungujú spomínané databázy a webový server s podporou PHP. Aplikácia je týmto spôsobom taktiež automaticky prístupná pre všetky počítačové stanice, ktoré sú zapojené v rovnakej sieti. Pokiaľ je aplikácia spustená na stanici s verejnou IP adresou a táto stanica je pripojená na internet, môže byť aplikácia prístupná pre kohokoľvek kto má prístup na internet. Webové rozhranie je veľmi intuitívne a je tak ľahko použiteľné aj pre menej skúsených používateľov. Reprezentácia výsledkov v HTML stránkach umožnuje aplikácii vhodne zobraziť obsah paketu do tabuľky. V závislosti od protokolu je zobrazenie paketu rozdelené na niektoré z častí: Meta, IP, TCP, UDP, ICMP a data. Poskytuje to používateľovi podstatne lepšie informácie o pakete ako textový výpis.

Závislosť aplikácie na databáze je zapríčinená predovšetkým množstvom funkcií na prácu s ňou a pohodlným implementovaním v PHP. Prináša to však aj isté výhody, a síce, databázy majú implementované veľmi vhodné algoritmy na hľadanie dát a poskytujú viacero možností ako niektoré procesy podstatne urýchliť. Takýmto spôsobom je možné databázu optimalizovať na konkrétne operácie, čo u aplikácií ktoré používajú varovania z logových súborov nie je možné. Využitie databáz poskytuje vo všeobecnosti väčšiu flexibilitu a rýchlosť než použitie obyčajného textového súboru.

BASE umožnuje každý jeden vygenerovaný výstup zaslať na emailovú adresu. Poskytuje aj archiváciu varovaní. Tie je možné buď presunúť alebo skopírovať, avšak len do ďalšej tabuľky v databáze. Jednotlivé varovania umožnuje aj natrvalo zmazať. Za zmienku rozhodne stojí aj vytváranie a radenie varovaní do varovných skupín (alert groups). Tie používateľ môže vytvárať, pomenovávať a mazať podľa vlastného uváženia, môže si tak radiť varovania do kategórií podľa vlastných kritérií.

Nevýhody

Použitie databáz prináša aj isté obmedzenia. Komplikuje to napríklad zálohovanie alebo migráciu varovaní na inú stanicu. Nestačí totiž skopírovať jeden, respektíve viacero, súborov ako pri logovaní do súboru. používateľ musí mať isté znalosti s databázami alebo prinajmenšom použiť vhodný nástroj na zálohovanie databázy do súboru a opätovné obnovenie z neho. Pre správne fungovanie aplikácie je potrebné vykonať viacero nastavení na úspešne spojenie s databázou a práva na zápis do nej. Inštalácia aplikácie z distribučného balíka toto však minimalizuje a uľahčuje, pri inštalácií zo zdrojových kódov však musí mať používateľ pokročilejše vedomosti.

Pri požiadavkách na vrátenie výsledku v aplikácií, ktoré trvajú viac ako určitú špecifickú dobu, nastane chyba. PHP má totiž nastavenú maximálnu dobu vykonávania kódu. Pokiaľ sa táto doba prekročí, PHP zastaví vykonávanie kódu a vráti chybu. V takomto prípade je nutné nastaviť v konfiguračnom súbore php.ini hodnotu max_execution_time na väčsiu.

Vygenerované výsledky sa automaticky neukladajú. Väčšina internetových prehliadačov však umožňuje uložiť zobrazované internetové stránky. Ukladanie väčšieho množstva výpisov je však veľmi nepohodlné a časovo náročné.

Ak je BASE spustený na stanici, na ktorej nie je nainštalovaný a nastavený grafický server, je používateľ nútený pristupovať k aplikácií z inej stanice v sieti alebo použiť konzolový internetový prehliadač ako napríklad lynx alebo links. Prístupnosť a oládanie aplikácie je však v týchto prehliadačoch veľmi obmedzená a bez použitia frame buffera takmer žiadna.

SnortAlog

SnortAlog nie je aplikácia v pravom slova zmysle. Je to vlastne len skript napísaný v interpretovanom skriptovacom jazyku PERL. Ako vstup používa výlučne logové súbory a jadrom skriptu je množstvo regulárných výrazov, ktorých aplikáciou sa získavajú všetky ponúkané výstupy. Niektorí možno pochybujú o efektivite použitého jazyka, obzvlášť keď je to interpretovaný jazyk. Avšak regulárne výazy sú v ňom implementované veľmi efektívne a ich vykonávanie je rýchlejšie ako v iných skriptovacích jazykoch. Hoci je SnortAlog len PERL skript, poskytuje používateľovy aj grafické rozhranie za pomoci použitia grafickej knižnice Tk. Okrem toho je samozrejme úplne parametrizovaný a predpokladá sa predovšetkým použitie priamo z konzoly.

SnortAlog dokáže generovať HMTL, PDF alebo čistý textový výstup. Predpokladá sa, že sa bude používať automaticky za pomoci CRONu a takýmto spôsobom sa budú generovať a zhormažďovať výstupy vo zvolenom formáte, ktoré budú obsahovať výpisy a štatistiky vždy za určité rovnaké časové obdobie.

inštalácia a použitie

SnortAlog je vskutku len PERL skript, to je aj dôvod prečo sa nenachádza v repozirári Debianu. Inštalácia našťastie nie je vôbec potrebná. Stačí daný skript skopírovať do adresára ktorý si zvolí používateľ. SnortAlog nie je možné vôbec konfigurovať, žiadnu konfiguráciu totiž nepotrebuje. Všetky možné nastavenia a voľby sa zadávajú ako parametre pri spustení.

Pokiaľ používateľ skopíroval skript do niektorého z adresárov uvedených v globálnej premennej PATH, môže SnortAlog spustiť v ktoromkoľvek adresári. Ak ho však skopíroval do adresára, ktorý v PATH nie je uvedený, musí sa pred spustením najprv nastaviť na adresár kde sa SnortAlog nachádza.

Vstupný logový súbor sa nezadáva ako parameter. Namiesto toho očakáva logový súbor na štandardnom vstupe. Základné volanie programu môže vyzerať takto:

cat /var/log/snort/alert | snortalog.pl -report
Zoznam všetkých možných parametrov je možné zistiť vpísaním príkazu snortalog.pl -h do konzoly. Taktiež je možné pustiť grafické rozhranie za pomoci snortalog.pl -x. Ovládanie v grafickom rozhraní je už pomerne intuitívne.

poskytované štatistiky a grafy

Každý výstup obsahuje na začiatku hlavičku, kde sú uvedené informácie o vzniku výpisu, začiatku a konci logovania, celkovom počte varovaní, celkovom počte riadkov v logu, celkový počet zdrojových a cieľových IP adries.

SnortAlog ponúka množstvo výpisov. Používateľ môže špecifikovať, ktoré výpisy chce vygenerovať alebo môže vygenerovať všetky výpisy. Ku väčšine výpisov taktiež generuje grafy, v prípade zapnutia tejto voľby, v jednom z formátov gif, png alebo jpg.

Pre každý výpis je taktiež možné zadefinovať filter, ktorý sa naň aplikuje. Na výber sú nasledovné:

Výhody

Prvoradou výhodou SnortAlogu je, že generuje výstupy priamo do súboru vo zvolenom formáte. Odpadá tak potreba ukladať každý výstup osobitne ako pri BASE. Všetky zvolené výstupy sa nachádzajú v jednom súbore pokope, nie je teda potrebné prezerať množstvo súborov. Pokiaľ by sme totiž vygenerovali rovnaké výstupy v BASE a chceli by sme ich uložiť, každý jeden výstup by sa nachádzal v samostatnom súbore.

Ďalšou nesporonou výhodou je možnosť generovať výstup do rôznych formátov. Používateľ môže takto vygenerovať výstup do všetkých troch formátov a následne si prehliada súbor, ktorý mu v danej situácií vyhovuje. Vďaka príkazovému riadku je napríklad možné vykonať následovné:

		cat /var/log/snort/alert | ./snortalog.pl -report -o 
		report.pdf | /usr/sbin/sendmail -f user@domain user@domain
Uvedený príklad vygeneruje výstup so všetkými možnými výpismi zo súboru /var/log/snort/alert do výstupného súboru report.pdf v PDF formáte a následne ho zašle na mailovú adresu user@domain. Okrem toho môže zároveň vygenerovať výstup v HTML formáte, ktorý bude prístupný na lokálnej sieti na web serveri a taktiež si vygeneruje výstup v textovom formáte, ktorý si môže administrátor prezrieť v prípade potreby priamo na počítačovej stanici kde nie je dostupný X server.

Pomocou parametra -n môže používateľ špecifikovať maximálny počet riadkov vo výpisoch. Toto je veľmi vhodné pokiaľ sa používateľ zaujíma napríklad len o najčastejšie sa vyskytujúce varovania. Na spodu výpisu sú totiž len tie najmenej sa vyskytujúce a tento parameter zobrazí len prvých n riadkov. Taktiež je však možné pomocou parametra -i špecifikovať inverzné poradie výpisu. To znamená, že na začiatku výpisu budú najmenej sa vyskytujúce varovania.

Ako vstup pre SnortAlog slúži logový súbor. Nie však cesta k nemu, ale jeho obsah samotný. Posunúť obsah logového súboru je možné viacerými spôsobmi, jeden je napríklad uvedený v príklade hore. Ak by sa jednalo o komprimovanú verziu logového súboru, stačí nahradiť program cat za zcat ktorý vypisuje obsah komprimovaného súboru.

Nevýhody

SnortAlog je pre menej skúsených používateľov náročnejší program na obsluhu ako BASE. Ovládanie značne uľahčuje grafické rozhranie, avšak na jeho spustenie je potrebné mať nainštalovaných viacero knižníc a nastavený PERL. Neskúsenému používateľovy potrvá istú dobu kým sa mu podarí zapísať príkaz s parametrami, ktoré zabezpečia presne to čo vyžaduje. Mnohých tento fakt môže dokonca odradiť.

SnortAlog na svoju plnú funkčnosť vyžaduje príliš veľa závislostí. Aby mohol generovať grafy, potrebuje knižnice GD, GDGraph a GDTextUtil. Aby mohol generovať PDF výstup, potrebuje htmldoc a HTML-HTMLDoc. Na použitie GUI zasa vyžaduje knižnice Tk a Perl-Tk. A nakoniec, pokiaľ chcete použiť aj databázy Whois, potrebuje Net-Whois-IP. Pokiaľ však nebudete mať niektorú zo spomínaných knižníc, nič sa nedeje. SnortAlog bude fungovať, samozrejme ale s určitými obmedzeniami.

Aplikácia postráda akýkoľvek inštalátor alebo sprievodcu inštaláciou. Taktiež neexistujú žiadne balíčky pre ktorúkoľvek distribúciu. Bolo by vhodné, keby existoval aspoň minimálny inštalátor, ktorý by skopíroval skript do jednoho z adresárov uvedených v globálnej premennej PATH. používateľ by tak nemusel pri každom použití písať absolútnu cestu k spustiteľnému súboru alebo sa nachádzať v adresári, ktorý tento súbor obsahuje.

Záver

BASE a SnortAlog ponúkajú dva rôzne prístupy a odlišné štatistiky a výpisy. Každý používateľ by sa mal rozhodnúť pre aplikáciu, ktorá mu vyhovuje viac a spĺňa jeho požiadavky. Ja osobne odporúčam používať obidve aplikácie súčasne. SnortAlog za pomoci CRONu tak, aby v pravidelných intervaloch, napríklad raz za deň, generoval výstup za celý deň. V prípade potreby upresniť nejaké štatistiky, respektíve v prípade záujmu o určitý konkrétny údaj v danom čase by som použil BASE, pretože ponúka lepšiu spoluprácu s používateľom a poskytuje detailnejšie informácie.

Príloha

Obrázok: záhlavie HTML výstupu vygenerovaného v SnortAlog
\includegraphics[angle=90,width=\textwidth]{snortalog1.ps}
Obrázok: ukážka HTML výstupu vygenerovaného v SnortAlog
\includegraphics[angle=90,width=\textwidth]{snortalog2.ps}
Obrázok: hlavná ponuka BASE
\includegraphics[angle=90,width=\textwidth]{BASE.ps}
Obrázok: ukážka výpisu varovaní s protokolom TCP v BASE

About this document ...

Semestrálna práca z predmetu Komunikačné počítače - IDS systém SNORT

This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

The command line arguments were:
latex2html -split 0 IDS_snort.tex

The translation was initiated by shamot on 2006-12-19

shamot 2006-12-19