Project

General

Profile

Testování Warden serveru a klientů

1 Systémové a akceptační testy

1.1 Server

  1. Test dokumentace - Dokumentace musí být pochopitelná a musí dobře popisovat jednotlivé funkce serveru.
  2. Test cmd rozhraní Warden serveru - Rozhraní musí být uživatelsky použitelné. Musí korektně volat všechny SOAP funkce. Nesmí obsahovat chybu v přepínačích.
  3. Registrace vysílajícího klienta
    1. Test autorizace
      1. Uživatel nesmí zaregistrovat klienta, pokud k tomu není oprávněn.
      2. Uživatel musí zaregistrovat klienta, pokud k tomu je oprávněn.
    2. Test správnosti dat. Data v DB v tabulce klientů musí odpovídat datům zadaným uživatelem.
  4. Registrace přijímajícího klienta
    1. Test autorizace
      1. Uživatel nesmí zaregistrovat klienta, pokud k tomu není oprávněn.
      2. Uživatel musí zaregistrovat klienta, pokud k tomu je oprávněn.
    2. Test správnosti dat. Data v DB v tabulce klientů musí odpovídat datům zadaným uživatelem.
  5. Odebrání klienta
    1. Test autorizace
      1. Uživatel nesmí odebrat klienta, pokud k tomu není oprávněn.
      2. Uživatel musí odebrat klienta, pokud k tomu je oprávněn.
    2. Test dat - v případě odebrání klienta musí být všechna jeho data označena jako nepřístupná.
  6. Výpis stavu serveru
    1. Test autorizace
      1. Uživatel nesmí vypsat stav serveru, pokud k tomu není oprávněn.
      2. Uživatel musí vypsat stav serveru, pokud k tomu je oprávněn.
    2. Test správnosti dat. Data v DB musí odpovídat vypsaným datům
  7. Výpis klientů
    1. Test autorizace
      1. Uživatel nesmí vypsat klienty, pokud k tomu není oprávněn.
      2. Uživatel musí vypsat klienty, pokud k tomu je oprávněn.
    2. Test správnosti dat - data v DB musí odpovídat vypsaným datům.
Test # Popis testu Proběhl korektně? Ano/Ne Poznámky
1 Pročtení dokumentace k serveru - Dokumentace dosud nebyla vytvořena.
2 Test cmd rozhraní Warden serveru Ano. Vše proběhlo korektně. Jen by bylo vhodné při spuštnění skriptu bez parametrů vypsat nápovědu.
3.1.1 Snaha zaregistrovat klienta bez oprávnění k práci se serverem Ano. Klienta se nepodařilo zaregistrovat.
3.1.2 Registrace klienta oprávněným uživatelem Ano.
3.2 Kontrola zda data v DB odpovídají zadaným datům při registraci Ano.
4.1.1 Registrace klienta bez oprávnění k práci se serverem Ano. Klienta se nepodařilo zaregistrovat.
4.1.2 Registrace klienta oprávněným uživatelem Ano.
4.2 Kontrola zda data v DB odpovídají zadaným datům při registraci Ano.
5.1.1 Smazání klienta bez oprávnění k práci se serverem Ano. Klienta se nepodařilo smazat.
5.1.2 Smazání klienta oprávněným uživatelem Ano. Smazání proběhlo korektně. Data patřící mazanému klientovi byla zneplatněna.
5.2 Kontrola zda data v DB odpovídají zadaným datům při registraci Ano.

1.2 Vysílající klient

  1. Test dokumentace. Dokumentace musí být pochopitelná a musí dobře popisovat jednotlivé funkce serveru.
  2. Interní test použitelnosti. Uživatel musí být schopen dle dokumentace a pokynů přiložených u knihovny úspěšně zapojit svůj nástroj do systému Warden jako vysílajícího klienta. Výstupem bude soupis doporučení k úpravě knihovny.
  3. Externí test použitelnosti. Uživatel nezapojený do vývoje systému musí být schopen dle dokumentace a pokynů přiložených u knihovny úspěšně zapojit svůj nástroj do systému Warden jako vysílajícího klienta. Výstupem bude vyplněný dotazník.
  4. Odeslání události
    1. Test autentizace
      1. Klient se musí přihlásit, pokud má správný certifikát a ostatní identifikační údaje.
      2. Klient se nesmí přihlásit, pokud má špatný certifikát nebo ostatní identifikační údaje.
    2. Test přenosu. Data odeslaná klientem musí být stejná v databázi i na straně klienta.
    3. Test potvrzení. Server musí klienta správně informovat o přijetí/nepřijetí dat.
Test # Popis testu Proběhl korektně? Ano/Ne Poznámky
1 Test dokumentace Ano. Dokumentace je v pořádku.
2 Test instalace Ano. Instalace probělha bez problémů.
3 Test použitelnosti Ano. Uživatelské dotazníky jsou využity při tvorbě FAQ.
4.1.1 Test autentizace - nezaregistrován Ano. Data nejsou v DB serveru. Bohužel klient o tom nemá žádnou informaci.
4.1.2 Test autentizace - zaregistrován Ano.
4.2 Test přenosu dat Ano.
4.3 Test potvrzení - Nepodařilo se dohledat jakým způsobem server vrací informaci.

1.3 Přijímající klient

  1. Test dokumentace. Dokumentace musí být pochopitelná a musí dobře popisovat jednotlivé funkce serveru.
  2. Interní test použitelnosti. Uživatel musí být schopen dle dokumentace a pokynů přiložených u knihovny úspěšně zapojit svůj nástroj do systému Warden jako přijímajícího klienta. Výstupem bude soupis doporučení k úpravě knihovny.
  3. Externí test použitelnosti. Uživatel nezapojený do vývoje systému musí být schopen dle dokumentace a pokynů přiložených u knihovny úspěšně zapojit svůj nástroj do systému Warden jako přijímajícího klienta. Výstupem bude vyplněný dotazník.
  4. Stáhnutí události
    1. Test autentizace
      1. Klient se musí přihlásit, pokud má správný certifikát a ostatní identifikační údaje.
      2. Klient se nesmí přihlásit, pokud má špatný certifikát nebo ostatní identifikační údaje.
    2. Test přenosu - Data přijatá klientem musí být stejná v databázi i na straně klienta.
    3. Test událostí
      1. Klient musí obdržet pouze data zaregistrované události
      2. Klient nesmí obdržet žádná data z nezaregistrované události
    4. Test vlastnictví
      1. Klient musí obdržet pouze cizí události, pokud má nastaven příjem pouze cizích událostí.
      2. Klient musí obdržet cizí i vlastní události, pokud má nastaven příjem všech událostí.
Test # Popis testu Proběhl korektně? Ano/Ne Poznámky
1 Test dokumentace Ano. Dokumentace je v pořádku.
2 Test instalace Ano. Klienta se podařilo rychle a správně nainstalovat.
3 Test použitelnosti Ano. Uživatelské dotazníky jsou využity při tvorbě FAQ.
4.1.1 Test autentizace - nezaregistrován Ano. Server nedovolí příjmat události.
4.1.2 Test autentizace - zaregistrován Ano. Události přijaty.
4.2 Test přenosu dat Ano. Data odpovídají.
4.3.1 Test zaregistrované události Ano.
4.3.2 Test neregistrované události Ano. Nebyly obdrženy žádné neregistrované události.
4.4.1 Test cizích událostí Ano.
4.4.2 Test vlastních událostí Ne. Odhalen bug #314

2 Výkonové testy

2.1 Proběhlé výkonové testy

Test č. Počet klientů na stroji Počet strojů Počet událostí/klient Doba běhu Využití swap RAM po dobu běhu testu CPU po dobu běhu testu Doba běhu klientů Odkazy na testy
1 5 1 1 000 000 20.12.2011-3.1.2012 0 0,3% po 100% 4% po 95.5%
0% po 3.4%
1-4% po 0.5%
nad 4% po 0.6%
2 2 3 10 000 25.1.2012; 19:30-22:50
(200 min)
0 0.1% po 5%
0.2% po 95%
0% po 6%
4% po 19%
5% po 75%
nftest dokončil za 170 min.
3 2 3 100 000 2012-01-26,13:53:08 - 2012-01-27,23:05:54 0 0.2% po 3%
0.3% po 97%
pod 4% po 2.5%
4% po 27%
5% po 65%
6% po 5%
nad 6% po 0.5%
stroj1 1992 min.
stroj2 1985 min.
stroj3 1678 min. a 1656 min.
Samostatná stránka testu č.3
4 2 plánováno 11
funčních 9
100 000 2012-02-09T13:30:00 - 2012-02-12T19:46:45
(4 697 minut)
0 po 100% času
0,3% po 98% času
------------
Aritm. průměr: 0,3%
Směrodatná odch.: 0,01%
4% po 63% času
5% po 34% času
------------
Aritm průměr: 4,4%
Směrodatná odch.: 1,06%
enta3: 4 370 minut
nfsen-devel: 4 444 minut
buldog: 2 570 minut
(ir: 4 697 minut)
(office2: 4 697 minut)
Stránka distribuovaného testu č.1

2.2 Load testing

Ověření chování produktu při zátěži na kterou je produkt navržen a při které bude využíván. Tato zátěž byla stanovena ve specifikaci na 100 událostí/sec.

Test # Počet klientů Počet událostí/klient Počet událostí celkem Doba běhu Sledované údaje Poznámky
test 1 1 100 100 10 hodin vytížení procesoru a paměti, rychlost odezvy server-klient
test 2 10 10 100 10 hodin vytížení procesoru a paměti, rychlost odezvy server-klient
test 3 100 1 100 10 hodin vytížení procesoru a paměti, rychlost odezvy server-klient

2.3 Stress testing

Ověření chování robustnosti produktu při extrémní zátěži. Ta bude postupně přidávána až do okamžiku, kdy přestane produkt odpovídat, případně se zhroutí.

Test # Počet klientů, událostí/klient Růst zátěže Sledované údaje Poznámky
test 1 10,10 + 2 kl., +2ud./kl vytížení procesoru a paměti, rychlost odezvy server-klient, počet klientů a událostí

2.4 Endurance testing

Produkt poběží dlouhodobě (14 dní) pod zátěží stanovenou ve specifikaci (100 událostí/sec.). Bude tak otestováno, zda je produkt schopný ostrého provozu a nedochází k degradaci výkonu, nebo vyčerpávání prostředků.

Test # Počet klientů Počet událostí/klient Počet událostí celkem Doba běhu Sledované údaje Poznámky
test 1 10 10 100 14 dní vytížení procesoru a paměti, rychlost odezvy server-klient, velikost DB

Odpovědi na dotazník k instalaci klientů

1) Byl instalován odesílající nebo přijímající klient? 2) Jak dlouho zhruba instalace trvala (v minutách)? 3) Bylo potřeba provést významější úkony nepopsané v pokynech k instalaci? Jaké? 4) Proběhla instalace bez komplikací? Pokud ne, co se zkomplikovalo? 5) Proběhla integrace klienta v pořádku? Pokud ne, co se zkomplikovalo? 6) Dle čeho byla v odesílajícím klientu nastavena konkrétní hodnota timeout? Byla nastavena dle nějakého postupu/logiky, nebo byla zvolena odhadem/dle tutoriálu? 7) Co znamená v klientské aplikaci čas detekce? Jedná se o čas, kdy událost nastala, nebo je to okamžik, kdy byla událost zachycena? Nebo se jedná o časové okno, případně jiná možnost? 8) Jak náročné byly zásahy do kódu, aby klientská aplikace produkovala časové známky pro Warden v UTC? Jaký formát časové známky je použit v klientské aplikaci? 9) Bylo třeba vyhledat pomoc někoho z vývojového týmu? 10) V případě že jste si dělal poznámky v průběhu instalace a integrace, budete ochotný je poskytnout pro sdílení postupu?
1 Odesilajici klient. Instalaci jsem nedelal, viz nize. Integrace do pluginu dict trvala cca hodinu - nejvice casu mi zabrala konverze casu do UTC ve formatu ISO 8601 a stejne neni detected presne. Zjistit, zda a jake ma WardenClientSend::saveNewEvent navratove hodnoty. Neprovadel jsem, klient uz byl na stroji (nfsen) nainstalovan. Do Syslogu bych chtel zapisovat, zda se podarilo odeslat udalost na Warden server. Proto me zajimala navratova hodnota WardenClientSend::saveNewEvent, o ktere jsem se ani v README ani v prikladu example-sender.pl.txt nic nedozvedel. Odhadem jsem nastavil 1 den. To mi prijde jako dostatecny cas pro odvraceni utoku na SSH typu "1 IP utoci na vice IP z nasi site". Ve stavajici implementaci to je kvuli snadnejsi implementaci casova znamka odeslani na Warden server. V praxi by to melo byt velmi blizke casu, kdy hlasena udalost nastala. Vzhledem k me neznalosti moznosti prevodu casove znamky do UTC a do casove zony GMT v Perlu to byla casove nejnarocnejsi cast integrace (cca 30-45 minut vcetne instalaci nejruznejsich balicku a pokusu na testovacim kodu). Klientska aplikace pracuje s casovou znamkou ve formatu TIMESTAMP v PostgreSQL a formatu nfdumpu (flow start). Krome registrace ne. Poznamky jsem si nedelal, jsem ale ochoten sdilet zkusenosti s prevodem casu v Perlu.
2 Odesilajici 20 - 30 minut ne Instalace bez problemu Drobne problemy s certifikaty. ALe to nebyl problem instalacnich/integracnich instrukci. Zkopirovana podle tutorialu Pocatek casoveho okna ve kterem byl incident detekovan Jeden radek kodu navic. Klientska aplikace pouziva casove pasmo 'Europe/Prague' V principu ne. Pomahal mi/sledoval me Tom, ale spis v pozici administratora nfsenu a ne vyvojare aplikace. Zadne jsem si nedelal
3 odesílající snad půl hodiny (ovšem za přítomnosti vývojářů, s tvorbou poznámek, atd.), bez registrace ne proces registrace byl popsán až na konci pokynů, ale klíče jsem potřeboval už při instalaci váhal jsem, co vyplnit v položce $attack_scale, jinak v pořádku (vyskytla se chyba, ale ta nesouvisela s integrací) nenapadla mě vhodná hodnota, tak jsem nastavil null čas, kdy incident nastal zásahy náročné nebyly, ale dlouho jsem hledal vhodný postup konverze do UTC v perlu, klientská aplikace pracuje s formátem "YYYY-MM-DD hh:mm:ss.fff" ano, potřeboval jsem poradit ohledně klíčů během instalace (neprováděl jsem registraci, ani jsem neznal její průběh) ano, pokud v poznámkách najdu něco zajímavého, zajímalo by mě, jak ostatní řešili konverzi do UTC
4 Oba. Bez mailove registrace do 10ti minut. Pokud bych nenarazil na zadne problemy, tak i ta prvotni instalace (vcetne jednoduche modifikace skriptu) cca 20 minut. Nejvice casu podle me zabere generovani SSL certifikatu a jeho nasledneho potvrzeni spol. Comodo. Nejsem si zadnych takovych vedom. Komplikaci jsem mel s chybou, ktera je uz ale nyni opravena. Cili bez komplikaci. Zkomplikovalo mi celou vec certifikat, ktery byl vygenerovan pro vice alternativnich jmen. Klienta jsem registroval prave s alternativnim jmenem, ktere mi Warden server odmitnul. Zkusenost s tim, jak dlouho byva (napr. u phishingu) IP adresa zneuzivana k rozesilani. Cas detekce beru okamzik, kdy byla udalost poprve detekovana. Bez problemu. Nenarocne. Ano, viz jiz zminka o odstranenem problemu, pripadne zminka o neakceptaci alternativniho DNS jmena v certifikatu. Ano.
5 Zatim jen odesilajici. Cca 5 min. Ne. Zadne komplikace. Byl nutny zasah do klienta: Die misto exit ve funkci errMsg(). Pouzito 20 dle tutorialu. Cas prvniho z reportovane serie <attack_scale> incidentu. Zdrojova aplikace pouziva format "YYYY-MM-DD-hh:mm:ss.dddd". Prevod do pozadovaneho tvaru v UTC je v podstate trivialni s pouzitim modulu Time::Local. Popravde receno, puvodne jsem predpokladal, ze o prevod do UTC se postara funkce WardenClientSend::saveNewEvent. Ne. Zadne poznamky.
6 Vysílací. Samotná instalace byla krátká; mnohem delší byly přípravné práce získání certifikátů pro použité servery, problém s hledáním modulu FindBin). Ne. V seznamu závislostí v souboru README je mj. uveden i modul FindBin, který není samostatně dostupný v distribuci OpenSUSE ani v CPANu. Až potom, co jsem se zeptal na radu správců WARDENu, jsem pochopil, že FindBin je součástí PERLu. Proběhla dobře. Byla nastavena tak, aby bylo jisté, že data budou platit i v době, kdy je vysílací strana přenese na server Warden (i s reservou). Je to čas, kdy aplikace detekovala pokus o přístup do sledovaného adresového prostoru (s přesností na 1 sekundu). Hlásí se u každého jednotlivého útoku. Pokud je v rámci integračního časového intervalu detekováno několik útoků ze stejné zdrojové adresy na stejný koncový TCP port, hlásí se čas počátku a konce těchto útoků opět se vteřinovou přesností; v poznámce je uvedeno `START' a `END'. Nenáročné. Aplikační program používá Unixový Epoch Time. Zeptal jsem se na radu v souvislosti s modulem FindBin. Poznámky jsem si nedělal, ale pokud by o to někdo stál, rád mu pomohu.
7 Odesilajici klient 5-20min (druha instalace probehla hladce) NE Moduly SOAP jsem nejdrive instaloval pres CPAN, ktery neinstaloval Lite verzi a pomerne dlouho instaloval ostatni zavislosti. Osvedcilo se instalovat vsechny chybejici moduly pres apt-get. Nezvyklou veci je pro me format casu v ISO 8601, proc nepozivate klasicky epoch timestamp? V poradku. Posilam null Cas detekce znamena cas, kdy byla udalost zachycena + posilam hodnotu attack_scale, tj, pocet hodnot agregovanych za interval testovani Pouzivam klasicky UNIX_TIMESTAMP, musel jsem instalovat Perl moduly a konvertovat cas. use DateTime; my $dt = DateTime->from_epoch(epoch => $epoch); NE Poznamky nemam.