Snort

Snort yra paketų sniferis/paketų logeris/tinklo IDS. Jis buvo sukurtas kaip paprastas paketų sniferis. 1998 metų lapkričio mėnesį, Marty Roesch parašė tik Linux sistemai skirtą paketų sniferį APE. Nežiūrint į puikias APE funkcijas, Roesch norėjo, kad sniferis atliktų ir sekančias funkcijas:

Snort buvo išleistas Packet Storm kompanijos 1998 metų gruodžio 22 dieną. Tuo metu Snort kodą sudarė 1600 eilučių ir tik du failai. Roesch iš pradžių naudojo Snort stebint savo modemo sujungimą ir derinant tinklo aplikacijas, kurias jis kūrė.Snort turi keletą svarbių komponentų, tokių, kaip preprocesoriai ir įspėjimo papildiniai, dauguma iš kurių gali būti patobulinti ir pritaikyti asmeniniams poreikiams. Šie komponentai įgalina Snort manipuliuoti paketais kad padaryti turinį labiau valdomą aptikimo mechanizmo ir aptikimo sistemai. Kai paketas praeina per preprocesorius, po to per aptikimo mechanizmą ir vėliau siunčiamas per pranešimų sistemą, jis gali būti valdomas bet kaip pagal pasirinktą papildinį.

Snort architektūra sudaryta iš 4 bazinių komponentų:

Iš didžiosios dalies Snort yra paketų sniferis. Tačiau jis sukurtas imti paketus ir siųsti juos per preprocesorius ir vėliau tikrinti tuos paketus pagal nustatytas taisykles (per aptikimo sistemą). Supaprastintai, Snort veikimas atrodo taip:

  1. Jis surenka visus paketus iš tinklo „stuburo“,
  2. toliau siunčia juos nustatymui ar tai yra paketai ir kaip su jais turi būti elgiamasi (preprocesorius),
  3. vėliau jis rūšiuoja paketus pagal jų tipą (aptikimo sistema).
  4. Galiausiai, administratoriaus užduotis yra nustatyti ką daryti su paketais – dažnai jis atmeta juos ir išsaugo žurnale (logų rašymas ir duomenų bazės saugojimas).

Preprocesoriai, aptikimo mechanizmas ir pranešimų komponentai Snort yra papildiniai. Papildiniai yra programos, Snort kodo dalys, bet yra atskirtos tam, kad galima būtų modifikuoti branduolio kodą patogiam ir paprastam naudojimui.

Snort paketų sniferis

Paketų sniferis yra aparatinis arba programinis įrenginys, naudojamas įsiterpimui į tinklus. Tinklo sniferis leidžia aplikacijai ar įrenginiui „pasiklausyti“ tinklo duomenų srautą. Interneto atveju, tai sudaro IP srautą, bet lokaliame vietiniame tinkle ir kituose tinkluose tai gali būti kitų protokolų rinkiniai, kaip IPX ar AppleTalk srautai.

Dėl to, kad IP srautas sudarytas iš daugelio skirtingų aukštesnio lygmens protokolų (įskaitant TCP, UDP, ISMP, maršrutizavimo protokolus ir IPSEC), dauguma sniferių analizuoja skirtingus tinklo protokolus keičiant paketus į žmogui suprantamą pavidalą.

Paketų sniferiai turi skirtingas panaudojimo sritis:

Šifruojant tinklo srautą galima neleisti žmonėms snifinti įskaitomus paketus. Kaip ir kiekvienas tinklo įrankis, paketų sniferiai gali būti panaudoti kaip geriems, taip ir piktiems tikslams.

Snort preprocesorius

Preprocesorius paima neapdorotus paketus ir tikrina juos pagal tam tikrus papildinius. Šie papildiniai tikrina juos pagal tam tikrą požymį pakete. Kai yra nustatoma, kad paketas turi tam tikrą požymį, jis yra siunčiamas į aptikimo mechanizmą. Snort palaiko daugybę preprocesorių tipų ir juos palaikančius papildinius, padengiant daugumą dažniausiai naudojamų protokolų.

Tai labai naudinga IDS savybė, kadangi papildiniai gali būti įjungti ar išjungti kai jie reikalingi ar nereikalingi preprocesoriaus lygyje, skiriant sisteminius resursus ir dalinant pranešimus tinklo optimaliame lygyje. Pavyzdžiui, pastovūs prievadų skenavimai yra nepageidaujami ir nėra būtinybės matyti pranešimus apie juos matyti. Tokiu atveju reikia nuspręsti ar leisti ar uždrausti juos pastoviai ir tiesiog išjungti už tai atsakingą papildinį.


Snort aptikimo sistema

Kai paketai buvo nukreipti aktyviais preprocesoriais, jie yra perduodami aptikimo sistemai. Aptikimo sistema paima duomenis, kurie ateina iš preprocesoriaus ir jo papildinių, ir šie duomenys tikrinami taisyklių rinkiniu. Jei taisyklės randa atitikimą duomenų pakete, jų pranešimai siunčiami į įspėjimų procesorių.

Anksčiau Snort buvo aprašytas kaip signature-based IDS. Jų funkcionavimas paremtas skirtingų taisyklių rinkinių naudojimu. Taisyklių rinkiniai sugrupuoti pagal kategorijas ir reguliariai atnaujinami.

Pačios taisyklės sudarytos iš dviejų dalių:

Aptikimo sistema ir jo taisyklės yra didžiausias naujos informacijos kiekis Snort mokymuisi ir supratimui. Snort turi tam tikrą sintaksę, kurią jis naudoja savo taisyklėse. Taisyklės sintaksėje gali būti nurodytas protokolo tipas, turinys, ilgis, antraštė ir kiti elementai.


Snort įspėjimų komponentas

Kai Snort duomenys praeina per aptikimo sistemą, jiems reikia kažkur nueiti. Jei duomenys atitinka taisyklę aptikimo sistemoje, tai generuojamas įspėjimas. Įspėjimai gali būti siunčiami į žurnalo failą per tinklo sujungimą, UNIX prievadus, Windows Popup (SMB) ar per SNMP traps. Jie taip pat gali būti saugomi SQL duomenų bazėje, pavyzdžiui, MySQL ar Postgres.

Galima taip pat naudoti Snort papildymus Perlui, PHP ir Web serverius įspėjimų atvaizdavimui per Web interfeisą. Įspėjimai saugomi tekstiniuose failuose arba duomenų bazėje.

Kaip ir aptikimo sistema ir preprocesoriai, įspėjimo komponentas naudoja papildymus pranešimų siuntimui į duomenų bazes ir per tinklo protokolus, tokius, kaip SNMP traps ir WinPopup žinutes.

Papildomai, su syslog įrankiais, tokiais, kaip Swatch, Snort pranešimai gali būti išsiųsti elektroniniu paštu administratoriui.


Slenksčių sudarymas ir įvykių ribojimas

Taisyklių slenksčių sudarymo galimybė buvo pridėta Snort. Ši funkcija naudojama registruojamų pavojų skaičiaus sumažinimui, esant triukšmingoms taisyklėms. Tai leidžia ženkliai sumažinti melagingų pavojų skaičių, ir gali būti naudojama naujų taisyklių rašymui. Slenksčių sudarymo komandos riboja tam tikro įvykio registravimų skaičių per nustatytą laiko tarpą.

Globalus slenksčių sudarymas taip pat buvo pridėtas. Jis leidžia nustatyti slenkstį kiekvienai taisyklei.

Įvykių ribojimas stabdo nurodytų įvykių registravimą, neištrinant taisyklės iš taisyklių rinkinio. Jis naudoja CIDR bloko duomenis pasirenkant tam tikrus tinklus ir vartotojus ribojimui. Ribojimo testai yra atliekami po standartinio arba globalaus slenksčių sudarymo testų.

Yra 3 slenksčių sudarymo tipai:

Visas sekimas vykdomas naudojant siuntėjo ir gavėjo IP adresus, tuo metu kai prievadai lieka nestebimi.

Slenksčio komandos gali būti įtrauktos kaip taisyklės dalis, ar galima naudoti pavienias slenksčio komandas, kurie kreipiasi į generatorių ir sid, kuriems jie taikomi. Nėra funkcinio skirtumo tarp slenksčio pridėjimo prie taisyklės ir atskyros slenksčio komandos taikymo tai pačiai taisyklei. Tačiau yra loginis skirtumas. Kai kurios taisyklės turi prasme tik su slenksčiu. Todėl reikia įtraukti slenksčio komandą į taisyklę. Pavyzdžiui, taisyklė, kuri detektuoja per dažną prisijungimų, naudojant vardą ir slaptažodį skaičių, gali reikalauti daugiau nei 5 bandymus. Tai gali būti daroma pasinaudojant ‚limit‘ tipo slenksčio komanda, todėl yra skirtumas kai ši funkcija yra taisyklės sudedamoji dalis.

Ribojimo komandos yra pavienės komandos, kurios kreipiasi į generatorius, sid ir IP adresus per CIDR bloką. Tai leidžia pilnai apriboti taisyklę, ar apriboti, kai iššaukiantis taisyklę srautas išeina ar ateina į nustatytą IP adresą ar IP adresų grupę.

Vienam sid galima pritaikyti tik vieną slenkstį, bet ribojimo komandų gali būti daugiau. Yra įmanoma kombinuoti vieną slenksčio komandą ir kelias ribojimo komandas, taikant jas vienam sid‘ui. Jei bus bandoma pritaikyti daugiau nei vieną slenksčio komandą sid‘ui, Snort nutrauks darbą, skaitydamas konfigūracijos failo informaciją.


BASE

BASE (Basic Analysis and Security Engine) – yra sistema, paremta kodu iš ACID (Analysis for Intrusion Detection) projekto. Ši programa teikia grafinį interfeisą pranešimų, ateinančių iš Snort IDS sistemos, atvaizdavimui, pateikimui ir analizei.

BASE yra web sąsaja, sukurta analizuoti įsilaužimus, kuriuos Snort aptiko tinkle. Ji naudoja vartotojo autentifikaciją ir teisėmis paremtą sistemą, todėl saugumo administratorius (BASE admin) turi galimybę nurodyti ką kiekvienas vartotojas gali matyti. Ją paprasta naudotis, o diegimas yra lengvas bei prieinamas daugumai vartotojų.

BASE yra palaikomas savanorių grupe. Šie žmonės turi geras žinias įsilaužimų aptikimo sistemų srityje ir naudoja jas vystant BASE. Dabartinė BASE versija yra 1.4.1 (lara).


Naudota literatūra

  1. http://cvs.snort.org/viewcvs.cgi/*checkout*/snort/doc/README.thresholding?rev=1.5