Toto je vyrovnávacia pamäť Google pre http://wiki.cnl.tuke.sk/QoSProjekt/RiadBezpecnosti3. Je to snímka stránky, ako sa zobrazila dňa 24. mar. 2009 10:48:34 GMT. Aktuálna stránka sa odvtedy mohla zmeniť. Viac informácií

Len textová verzia
 
RiadBezpecnosti3 < QoSProjekt < TWiki
r6 - 20 Oct 2008 - 23:27:36 - PeterKolcunYou are here: TWiki >  QoSProjekt Web  > RiadBezpecnosti3

Riadenie bezpečnosti informačných systémov

Úlohy naplánované na tento semester

  • Otestovanie vytvorenej štruktúry
  • Vyladenie štruktúry
  • Implementácia premenných podľa vzoru Snortu
  • Implementácia načítavania pravidiel zo súboru

Testovanie & Ladenie

Samotné testovanie a ladenie prebiehalo vo viacerých krokoch. Najprv som vykonal kompletnú revíziu kódu po dlhšom časovom odstupe. Revíziou som našiel asi 6 logických chýb a taktiež som doplnil zopár nových metód. Medzi najvážnejšie nedostatky patrili:

  • Zle navrhnutá trieda pre IP adresu
  • Chyby v metódach na porovnávanie určitej hodnoty so vzorom

Potom nasledovalo testovanie metódou black box, to znamená, že sa vytvorili testovacie objekty a testovali sa jeho metódy. Výsledky sa porovnali s očakávanými, ak neboli zhodné bolo nutné hľadať logickú chybu. Týmto testovaním som odhalil veľké množstvo logických chýb (rádove desiatky chýb). Tie boli následne opravené. Testovanie je deštruktívny proces, ktorého účelom je priviesť testovaný systém k "pádu". Z tohto hľadiska bolo testovanie úspešne a prispelo tak ku kvalite vyvíjanej aplikácie.

Príklad testu (trieda Dsize):

Dsize os,s,m,ls;
os = new Dsize(123);
s = new Dsize(true, 123);
ls = new Dsize(false, 123);
m = new Dsize(45,100);
     
System.out.println( "os ,123;123;23 \n"+os.isIn(123)+"\n"+os.isIn(23));
System.out.println( "s ,>123;123;124 \n"+s.isIn(123)+"\n"+s.isIn(124));
System.out.println( "ls ,<123;122;124 \n"+ls.isIn(122)+"\n"+ls.isIn(124));
System.out.println( "m ,40<>100;39;50;101 \n"+m.isIn(39)+"\n"+m.isIn(50)+"\n"+m.isIn(101));

Očakávaný výstup:

os ,123;123;23 
true
false
s ,>123;123;124 
false
true
ls ,<123;122;124 
true
false
m ,40<>100;39;50;101 
false
true
false

V tomto teste sa očakávaný výstup zhodoval s reálnym čo znamená, že trieda a aj jej metódy sú korektné.

Príklad testu pre Flags

            Flags jedna;
            Flags p;
            Flags a;
            Flags n;
            jedna = new Flags(false, false, true, true, false, true, false, true);
            p = new Flags(true, false, false, false, false, true, true, false, true, false, true);
            a = new Flags(false, true, false, false, false, true, true, false, true, false, true);
            n = new Flags(false, false, false, false, false, true, true, false, true, false, true);

            System.out.println("jedna\n" + jedna.match(0x35) + "\n" + jedna.match(0x45));
            System.out.println("plus\n" + p.match(0x75) + "\n" + p.match(0x35) + "\n" + p.match(0x51));
            System.out.println("any\n" + a.match(0x53) + "\n" + a.match(0x80));
            System.out.println("not\n" + n.match(0x35) + "\n" + n.match(0x88));
            jedna.setignoreflags(false, false, true, false, false, false, false, false);
            System.out.println("jedna\n" + jedna.match(0x15));
Očakávaný výstup je:
jedna
true
false
plus
true
true
false
any
true
false
not
false
true
jedna
true
V tomto prípade sa očakávaný výstup líšil a síce:
jedna
true
false
plus
true
true
false
any
true
false
not
false
true
jedna
false
Chyba bola spôsobená nezahrnutím atribútu BitSet ignoreflag; v metóde public boolean match(int flagval), ktorá zisti či zadane pole flags vo formáte celého čísla sa zhoduje so vzorom. Chyba bola odstránená a následný opakovaný test potvrdil správnosť jej výstupu.

Pri testovaní bolo použité vývojové prostredie NetBeams IDE vo verzii 6.0.1 (Build 200801291616), kde veľmi osvedčil debug mód.

Nové funkcie

Následne boli pridané tieto nove funkcie do projektu"

  • Čítanie nastavení premenných zo súboru conf, ktorý sa nachádza v adresári conf, ktorý je súčasťou projektu.
  • Čítanie pravidiel zo súborov uvedených v súbore conf.

Pre načítanie premenných zo súboru a na ich uchovanie bola vytvorená trieda Variables, ktorá využíva statické metódy triedy Parser. V súbore sú všetky informácie uložené v textovej podobe, aby sa dali upravovať v textovom editore, a tak pridávať nové premenné do programu. Vzhľadom na zložitú štruktúru čítaných údajov bolo nevyhnutné dôkladne navrhnúť spôsob rozpoznávania jednotlivých informácií a otestovať ho. Pre rozpoznávanie boli použité Regulárne výrazy. Využité bolo ich API implementované v JAVE. Použitie regulárnych výrazov má oproti klasickej metóde analýzy reťazca znak po znaku nesporné výhody, a to hlavne pri tvorbe samotného algoritmu. Ich požitie urýchlilo vývoj aplikácie aj vďaka metódam, ktoré poskytuje ich aplikačné rozhranie. Načítané údaje sa uchovávajú iba počas behu programu. Uchované sú v súboroch na to určených a načítavajú sa stále pri štarte programu. Pre načítanie pravidiel zo súborov a ich uchovanie bola vytvorená trieda Rules, ktorá taktiež používa statické metódy triedy Parser, vytvorene na parsovanie pravidiel zo súboru.

Class diagram aplikacie

Problémy a nejasnosti

Pri implementácií sa vyskytli nasledovné problémy:

  • Zložitosť načítavaných údajov a s tým spojené zdĺhavé a pomerne komplikované hľadanie správnych Regulárnych výrazov na ich rozpoznanie. Počas tvorby aplikácie bolo nevyhnutné niekoľkokrát prehodnotiť, preusporiadať a doplniť jednotlivé funkcie pre získavanie informácií
Pri tvorbe aplikácie sú stále otvorené otázky konečnej implementácie vzhľadom na to, že Snort posudzuje každý paket zvlášť a IPfix sa zameriava na toky vrámci siete, čo môže viesť k nekompatibilite niektorých pravidiel. Pre riešenie tohto problému boli zatiaľ navrhnuté tieto varianty:
  • Nastaviť meraciu platformu IPfix na exportovanie jednotlivých paketov (znížiť počet paketov vo flowe na 1).
  • Navrhnúť vlastné použitie exportovaných parametrov (možná inšpirácia Snortom, ale nemožné použitie pravidiel v presne rovnakom význame).
Ďalším nevyriešeným problémom zostáva to, že Snort používa aj údaje z dátovej časti paketu a IPfix nie je na takéto použitie pripravený. Riešením je buď použitie len tých pravidiel, ktoré nepoužívajú dátovú časť (výhoda -> nezmení sa povaha meracej platformy), alebo navrhnúť a implementovať rozšírenie meracej platformy tak, aby vyhovovala pravidlám Snortu(výhoda -> veľké množstvo existujúcich a otestovaných pravidiel)

Zhodnotenie pravidiel

Celkový počet pravidiel je cca 3700 (počet bol zistený príkazom _ cat * | grep [-]\> | wc -l_). Po použití príkazu cat *.rules | grep -v content | grep -v "#" | grep "\n" >xxx.txt ostalo v súbore 165 pravidiel, ktoré neobsahovali položku content, čo je iba necelých 4,5%. Tento pomer je veľmi nepriaznivý vzhľadom na to, že IPfix nevie, alebo nemá vedieť čítať dátovú časť paketu, preto pre ďalší rozvoj aplikácie je nevyhnutné tento problém VYRIEŠIŤ

Ako ďalej

Pre ďalší rozvoj aplikácie je nevyhnutne vyriešiť problém spomenutí v odstavci vyššie. Okrem tohto je možne"
  • previesť nejaké optimalizácie a vyladenie načítavanie zo súboru, poprípade odstránenie chýb.
  • doplniť polia pravidiel, ktoré nie sú implementované.
  • navrhnúť a implementovať porovnávanie nameraných hodnôt s pravidlami.
  • navrhnúť a implementovať akcie pre uplatnenie pravidiel.
  • integrovať toto riešenie s riešením z diplomovej práce Ing. Rojáka.
  • navrhnúť a implementovať použitie informácií získaných projektmi Monitorovanie bezpečnosti Informačných systémov.

-- PeterKolcun - 29 May 2008

  • sp2.zip: Zdrojove kody - projek z netbeans
toggleopenShow attachmentstogglecloseHide attachments
Topic attachments
I Attachment Action Size Date Who Comment
zipzip sp2.zip manage 1601.8 K 04 Jun 2008 - 20:07 PeterKolcun Zdrojove kody - projek z netbeans
Edit | WYSIWYG | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r6 < r5 < r4 < r3 < r2 | More topic actions
 
Powered by TWiki
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback