Versija 11 nuo 2014-04-14 17:02:24

Išvalyti žinutę
Locked History Actions

Computers Network Traffic Flow Anomalies

Įvadas

  • Tinklo saugumas susideda iš nuostatų ir naudojimo politikų, kurias priima tinklo administratorius tam, kad stebėtų ir apsaugotų tinklą nuo grėsmių. Grėsmės gali būti įvairios tokios, kaip neautorizuotas tinklo pasiekimas, tinklo nepanaudojimas, modifikavimas ir tinklo ir tinklo išteklių prieinamumo apribojimas. Tinklo saugumui užtikrinti gali būti panaudota technika vadinama tinklo elgesio analizė (angl. Network Behavior Analysis – NBA). Tai yra būdas užtikrinti tinklo srauto stebėjimą ir pranešti neįprastus veiksmus, kurie skiriasi nuo įprastos tinklo veiklos. Įsibrovimų prevencijos sistema (angl. Intrusion Prevention systems – IPS) saugo tinklą naudodama paketų inspekciją, bruožų (angl. signature) aptikimą ir realaus laiko blokavimą. NBA sprendimai stebi, kas vyksta tinklo viduje ir gali sudėti srautą iš daugelio tinklo vietų, kad būtų galima atlikti analizę. Viena iš NBA dalių yra tinklo elgesio anomalijų aptikimas (angl. Network Behavior Anomaly Detection – NBAD). Tai yra sistema, kuri visą laiką pasyviai stebi tinklo elgseną ir fiksuoja neįprastus įvykius ar neįprastą srautą. Tai yra sistema, kuri gali būti panaudota prie ugniasienių, antivirusinių programų ir antišnipinėjimo programų sprendimų. NBAD programa seka kritines tinklo charakteristikas realiu laiku ir generuoja aliarmą, jeigu aptinkamas keistas įvykis. Taip yra užkertamas kelias potencialiai grėsmei. Bendriausios stebimos tinklo charakteristikos yra srauto dalys, pralaidumo naudojimas ir protokolo naudojimas. NBAD taip pat gali būti panaudota individualiam tinklo naudotojo stebėjimui. Efektyviam tinklo stebėjimui, NBAD programa turi turėti gaires, kokia yra normali tinklo būsena, tai yra, turi būti atlikta tinklo analizė tam tikram laikotarpiui.

1. „Cisco“ „NetFlow“ protokolas

Sugebėjimas charakterizuoti IP srautą ir suprasti kaip ir kur jis keliauja yra kritinis kriterijus tinklo prieinamumui, tinklo galimybėms ir problemų sprendimui. IP srauto stebėjimas leidžia tiksliau suplanuoti tinklo pralaidumo galimybes bei optimizuoti išteklius tam, kad būtų užtikrintas tinkamas tinklo veikimas organizacijoje. Tinklo administratoriui tai padeda išnaudoti tinklo resursus, atitikti tinklo kokybės reikalavimus bei užtikrinti saugumą, kadangi leidžia aptikti serviso neteikimo (DoS) atakas, tinklo išteklius naudojančius virusus bei kitus tinklo įvykius.

Sprendimai, kuriuos padeda atlikti „NetFlow“:

  • Analizuoti naujas programas ir jų įtaką tinklui: identifikuoti tinklo apkrovą paleidus naujas programas tokias kaip VoIP ar nuotolinius prisijungimus.
  • Piko metu analizuoti WAN (angl. Wide Area Network) srautą: pagal „NetFlow“ statistiką surinkti duomenis apie srauto pasikeitimus, priklausančius nuo pritaikytos programų naudojimo politikos, taip išsiaiškinant, kas daugiausia naudoja tinklo resursus ir atrasti pagrindinius tinklo naudotojus.

  • Ieškoti tinklo problemų ir jų sprendimo būdų bei suprasti labiausiai pažeidžiamas vietas tinkle: diagnozuoti lėtą interneto spartą, pralaidumo kamščius bei pralaidumo naudojimą.
  • Aptikti neautorizuotą WAN srautą: taip išvengiama ieškojimo, kas sukelia programų problemas.
  • Saugumas ir anomalijų aptikimas: „NetFlow“ gali būti naudojamas anomalijų aptikimui ir tinklo kirminų diagnozei su programomis tokiomis, kaip „Cisco“ CS-Mars.

NetFlow“ tinklo informaciją atvaizduoja per IP srautą. Kiekvienas per maršrutizatorių ar komutatorių siunčiamas paketas yra egzaminuojamas ir tada sudaromas IP paketo atributų rinkinys. Šie atributai yra IP paketo identifikatoriai ar žymos (angl. fingerprint) ir apibūdina ar paketas yra unikalus ar panašus kitiems paketams. Paprastai IP srautas yra sudaromas iš 5 ar 7 IP paketo atributų.

NetFlow“ naudojami IP paketo atributai:

  • Siuntėjo IP adresas.
  • Gavėjo IP adresas.
  • Siuntėjo prievado numeris.
  • Gavėjo prievado numeris.
  • 3 lygmens protokolo tipas (TCP ar UDP).
  • Serviso klasė.
  • Komutatoriaus ar maršrutizatoriaus sąsajos numeris.

NetFlow“ paketų srauto pavyzdys pateiktas 1 paveiksle. Kaip matyti paveiksle, nurodoma kokiu metu buvo pradėtas siųsti srautas. Taip pat nurodoma kiek paketų sudarė srautą ir kokio dydžio buvo paketai. Nurodomas 3 lygmens protokolo tipas. Taip pat atvaizduojamas siuntėjo IP adresas ir prievado numeris bei gavėjo IP adresas ir prievado numeris.

flow2.png

1 pav. „Cisco“ „Netflow“ pavyzdys

2. Blokiniai

2.1. Blokinių ruošimas

Analizuojant kompiuterių tinklų srauto paketų anomalijas galima remtis keliais skirtingais metodais. Vienas iš jų yra blokinių ruošimas (angl. Clustering). Blokinių ruošimas yra mašininio mokymosi be mokytojo užduotis, kurios metu automatiškai duomenys dalijami į blokinius. Blokinį galima įsivaizduoti kaip panašių dalykų grupę. Panašūs dalykai, tai tokie, kurie turi bendrus bruožus, tokiu būdu jie gali sudaryti grupę. Blokinių ruošimas daromas be žinių kaip ta grupė turi atrodyti ateityje. Duomenų grupės sudaromos panaudojant natūraliai atrandamus duomenų bruožus. Kadangi dar nėra žinoma, kas ieškoma, tai blokinių ruošimas naudojamas bruožams atrasti vietoj spėjimų. Blokinių ruošimas daromas tokiu principu, jog duomenų įrašai yra panašūs vienas į kitą grupės viduje ir labai skirtingi grupės išorėje.

Blokinių ruošimą lyginant su klasifikavimu, tai esminis skirtumas yra duotose duomenyse. Paprastai klasifikavimui pateikiami jau iš anksto sužymėti duomenys. Pagal tai kokie duomenys yra, juos galima išskirti į skirtingas klases. Klasifikavimas panaudojamas mašininio mokymosi su mokytoju užduotyse, kadangi tokios rūšies problemų sprendimui naudojami sužymėti duomenys. Blokinių ruošimui, priešingai, pateikiami iš anksto nesužymėti duomenys, dėl to negalima išskirti į klases. Taigi tenka pagal bruožus duomenis skirstyti į blokinius, o tai yra viena iš mašininio mokymosi be mokytojo užduočių.

Blokinių ruošimas gali būti panaudotas tokiose taikomosiose aplikacijose:

  • Segmentuoti pirkėjus į grupes pagal panašius demografinius ar pirkimo įpročių tinklelius naudojamus reklamos kompanijose. Taip pat įvairių žmonių grupių pirkimo analizei.
  • Anomališko elgesio tokiam kaip neautorizuotam įsiveržimui į kompiuterių tinklą, aptikimui, identifikuojant žinomo blokinio šablono nukrypimams.
  • Supaprastini ypatingai didelius duomenų rinkinius, sugrupuojant dideles bruožų vertes su panašiomis vertėmis į mažesnio dydžio homogenines kategorijas.

K-reikšmių algoritmas tikriausiai yra labiausiai naudojamas blokinių ruošimo metodas. Jo privalumai:

  • Naudoja paprastus principus blokinių suradimui, kurie gali būti paaiškinti ne statistiniais terminais.
  • Labai lankstus ir gali būti pritaikytas daugeliui variantų su nedideliais pakeitimais.
  • Pakankamai efektyvus ir gerai atlieka savo funkcijas padalydamas duomenis į naudingus blokinius.

Metodo trūkumai:

  • Ne toks išmanus, kaip naujausieji metodai.
  • Nėra garantuojamas optimalus blokinių radimas, kadangi naudoja atsitiktinio dydžio elementą.
  • Reikalauja pakankamai pasverto spėjimo kiek natūraliai egzistuoja blokinių duotose duomenyse.

K-reikšmių algoritmas kiekvienam iš n pavyzdžių priskiria vieną iš k blokinių. Skaičius k yra iš anksto nurodomas ir reikalauja pakankamai pasverto spėjimo. Pagrindinis tikslas yra minimizuoti blokinio viduje esančių elementų skirtumus ir maksimizuoti pačių blokinių tarpusavio skirtumus. Trumpai apibūdinant, pats algoritmas apima dvi fazes. Pirmiausia, metode pavyzdžiams yra priskiriamas pradinis blokinių rinkinys. Po to yra atnaujinami priskyrimai, pakoreguojant blokinio ribas pagal tai, koks pavyzdys buvo priskirtas blokiniui. Atnaujinimo ir priskyrimo procesas kartojamas kelis kartus, kol daromi pakeitimai nebeįtakoja patekimo į blokinį.

2.2. Blokinių ruošimo pavyzdžiai

Statistikoje naudojama programavimo kalba R leidžia duomenis rūšiuoti į blokinius. Tam, kad duomenys būtų tinkamai apdoroti, juos reikia apdoroti. Blokiniuose paprastai naudojami skaitiniai parametrai. Taigi, vienas iš duomenų paruošimo žingsnių yra tekstinių duomenų dalių pašalinimas. Taip pat naudinga trūkstamas duomenų vertes, jei tokių yra, užpildyti išgalvotais (angl. dummy) duomenimis, kurie atitiktų tam tikrą logiką ar grupės kriterijus. Tai yra naudingiau, negu tiesiog duomenų atsisakymas, kadangi vieno parametro trūkumas priveda prie visų duomenų elemento parametrų atsisakymo, o jie gali įtakoti galutinį rezultatą.

Kitu žingsniu yra standartizuojami duomenys. Tai yra jie tampa santykiniai, lyginami tarpusavio duomenų santykiai, o ne absoliutinės jų vertės, kadangi pačios duomenų vertės yra sąlyginai skirtingos, o tai priveda prie netikslumų.

Įvedus duomenų normalizavimą, galima išvengti netikslumų. R programavimo kalboje yra funkcija kmeans(), kuri skirsto į blokinius. Joje nurodomas norimas blokinių kiekis. Pavyzdyje, 3999 paketų srautai yra suskirstyti į 3 grupes pagal paketų kiekį, baitų skaičių ir trukmę. 2 paveiksle pateiktas elementų grafikas pagal kurį matyti vizualus elementų pasiskirstymas blokiniuose.

clusters.png

2 pav. Išskaidymo į blokinius pavyzdys

1 lentelėje pateikti blokinių ruošimo pavyzdžio parametrai. Lentelėje palyginta bendras pradinis paketų srautas, kuriame yra 3999 įrašai, ir atskiri blokiniai. Šie parametrai yra gauti iš pradinių reikšmių, o ne iš standartizuotų, kadangi pradiniams įrašams yra priskiriamas jų blokinio numeris. Tokiu būdu galima rasti pradinių reikšmių parametrus. Kaip matyti 1 lentelėje blokiniai pasižymi labai skirtingomis parametrų vertėmis. Tai reiškia, jog skirstymas į grupes yra logiškas, kadangi elementų parametrai yra pernelyg nevienodi, jog būtų laikomi vienoje grupėje. Taip pat matyti, jog daugiausia elementų, daugiau negu pusė, buvo priskirta 5 grupei, kurios parametrai nurodo, jog paketų srautai truko trumpai ir buvo perduota nedaug paketų.

1 lentelė. Paketų srauto ir atskirų blokinių parametrų palyginimas.

Blokiniai

Visi paketų srautai

1

2

3

4

5

Dydis

3999

10

1

138

38

3812

Vidutinis paketų skaičius

2,48

101,7

358

7,69

44,29

1,52

Vidutinis baitų skaičius

782,64

14606,5

512725

979,23

36,847,34

245,45

Vidutinė trukmė, s

16,37

1384,28

13,31

281,76

20,7

3,12

3. Išskirčių aptikimas

3.1. Vietinių išskirčių faktorius

Vietinių išskirčių faktorius (angl. Local Outlier Factor – LOF) yra algoritmas naudojamas anomalijų aptikime. Algoritmas naudojamas rasti anomališkus duomenų taškus matuojant vietinį nuokrypį nuo duotų duomenų taškų, atsižvelgiant į kaimyninių taškų atstumus. LOF dalijasi panašiais koncepciniais bruožais kaip DBSCAN ir OPTICS algoritmų pagrindinis atstumas ir pasiekiamumo atstumas, kurie panaudojami vietinio tankio apibūdinimui.

  • Pagrindinė LOF algoritmo idėja yra ta, jog išskirtis yra nutolusi nuo kitų duomenų. Galima išskirti kelis skirtingus atstumų ieškojimo būdus. Tai yra ieškoma pagal kaimynų kiekį. Tokiu būdu keliamas uždavinys rasti koks yra atstumas, kad būtų pasiekti, pavyzdžiui, 2 kaimynai. Arba galima ieškoti atstumu. Tai yra, naudojamas atstumas ir žiūrima kiek kaimynų yra pasiekiama. Paprastai naudojama variantas, kai pasirenkama k vertė, kuri reiškia kaimynų skaičių ir ieškomas atstumas.

LOF algoritmas naudoja ne tik atstumų matavimą, tačiau ir tankį. Pats algoritmas pagal skirstymą priklauso prie tankiu pagrįstų algoritmų sąrašo. Algoritmo idėja yra tokia, jog išskirties vieta yra mažesnio tankio negu kaimynų. Skaičiuojant LOF vertę yra gaunamas santykinis tankis, tai yra lyginamas artimiausių per k vertę kaimynų pasiekiamumas su paties objekto vietiniu pasiekiamumu.

  • Galutinė LOF vertė yra naudojama nustatyti ar duomenys gali būti laikomi išskirtimi ar ne. Jeigu duomenų LOF vertė yra lygi vienetui, tai laikoma, jog duomenys su kaimynais yra tokio pat tankumo ir išskirčių nėra. Jeigu duomenų LOF vertė apytiksliai lygi vienetui, tai laikoma, jog duomenys yra panašaus tankio su kaimynais. Jeigu duomenų LOF vertė yra didesnė nei vienetas, tai laikoma, kad ta duomenų sritis yra mažesnio tankio lyginant su kaimynais. Dėl to galima laikyti, kad toji sritis, kurios LOF įvertis yra gerokai didesnis už vienetą yra išskirčių sritis.

3.2. Paprastas LOF skaičiavimas

  • Norint suprasti LOF algoritmą, naudinga paėmus paprastus duomenų taškus žinomose koordinatėse, pabandyti pasiskaičiuoti LOF vertę. LOF vertės skaičiavimas susideda iš 4 žingsnių.
    1. Apskaičiuojami atstumai tarp kiekvieno taško. Atstumui apskaičiuoti naudojamas Manheteno atstumas. Jis ypatingas tuo, jog naudojami tinklelio kvadratai atstumui surasti. Turint koordinates, atstumas randamas pagal tokią išraišką:
      • L(a,b) = |a1 - b1 | + |a1 - b2|

2. Surandami kNN (angl. K-th Nearest Neighbors) kaimynai. K reikšmę reikia parinkti, pagal jos reikšmę yra surandami artimiausi kaimynai. Pavyzdžiui, jeigu k = 2, tai yra parenkamas toks atstumas tarp kaimynų, jog būtų apimti 2 kaimynai. Sutrumpintai tai rašoma 2NN. Parinkus minimalų atstumą, jog būtų k kaimynų, jis pažymimas kaip kd. 3. Surandama vietinio pasiekiamumo vertė lrdk. Ji nusako vietinius kaimynų pasiekiamumus. Vietinio pasiekiamumo vertė randama taip:

formule2.png

4. Surandama LOF vertė. Ji nusako sąlyginį tankį. Kuo LOF vertė didesnė, tuo lokalios srities tankis mažesnis. LOF vertė apskaičiuojama taip:

formule3.png

3.3. LOF skaičiavimo pavyzdys

formule2.png 3 pav. Duomenų taškų tinklelis, naudojamas pavyzdyje.