Snortin säännöt

Lataukset

39360.zip

Skaalautuva ja tehokas avoimen lähdekoodin Snort-verkon tunkeutumisen havaitsemisjärjestelmä (Network Intrusion Detection System, NIDS) käyttää sarjaa tarkoin määriteltyjä sääntöjä havaitakseen poikkeavia paketteja verkossa. Näiden sääntösarjojen ylläpitäminen parantaa järjestelmän tehokkuutta huomattavasti. Muutamat sääntöjen hallintatekniikat voivat auttaa sinua ylläpitämään Snort IDS:ääsi. Ensinnäkin voit estää hälytysten ylikuormituksen tiukentamalla muuttujien määritelmiä ja hoitamalla Snortin sääntöjä. Voit myös säilyttää mukautetut sääntösi sääntökokonaisuuksien päivitysten aikana. Lopuksi voit purkaa säännön, jotta ymmärrät, miten sääntöjä voidaan mukauttaa omaan ympäristöön.

Oletusarvoisesti Snort sisältää yli 1900 varastosääntöä lähes 50 tekstitiedostossa, jotka on järjestetty tyypin mukaan, kuten kuvasta 1 näkyy. Nämä säännöt määrittelevät vastauslaukaisimet monille tunnetuille haavoittuvuuksien hyväksikäyttökohteille, jotka liittyvät Windowsiin, UNIXiin ja laajalti käytettyihin sovelluksiin, kuten Microsoft IIS, Apache, Microsoft SQL Server ja Oracle SQL. Sääntöjen avulla Snort voi myös tarjota tiedustelutietoja ja mahdollisia konfiguraatiovaroituksia, joiden avulla voidaan varoittaa esimerkiksi verkkoskannauksista tai koneesta, joka lähettää SNMP:n oletusyhteisömerkkijonoa. Kuten voit kuvitella, Snort voi tuottaa valtavan määrän hälytyksiä. Varastosääntöjen aiheuttaman melun vähentämiseksi Snortin oletuskonfiguraatio ottaa oletusarvoisesti käyttöön vain noin 1300 sääntöä ja poistaa oletusarvoisesti käytöstä kokonaisia sääntötyyppejä, kuten käytäntö, keskustelu ja virus. (Sääntötyyppi sisältyy yleensä omaan tekstitiedostoonsa, joten virustyyppiset säännöt sisältyvät tiedostoon virus.rules). Tarkista kaikki käytöstä poistetut sääntöryhmät ja ota käyttöön kaikki ne, jotka saattavat soveltua ympäristöösi.

Sääntöjen karsiminen
S vaikka Snort poistaa oletusarvoisesti käytöstä monia sääntöjä, Snort IDS-järjestelmäsi tuottaa todennäköisesti monia hälytyksiä. Kaikkien näiden hälytysten läpikäyminen saattaa tylsyttää aistisi todella epäilyttävälle liikenteelle. Kun olet asentanut Snortin ympäristöösi, karsi säännöt ja poista ne, jotka eivät koske ympäristöäsi tai jotka eivät koske sinua. Jos sinulla ei esimerkiksi ole käytössäsi HTML:ään upotettua skriptikieltä PHP:tä: Hypertext Preprocessor (PHP), voit poistaa web-php.rules -sääntötiedoston käytöstä. Kun päätät, mitkä säännöt haluat poistaa käytöstä, ota kuitenkin huomioon käyttäjät, joiden koneissa saattaa olla erilaisia ohjelmistoja. Esimerkiksi yksi Snort-sensoreistasi saattaa havaita epäilyttäviä paketteja VPN-yhteyden kautta vaarantuneelta kotikoneelta. Jatketaan edellistä esimerkkiä: vaikka PHP:tä ei olisikaan asennettu yrityksen tietokoneisiin, joku loppukäyttäjistäsi on saattanut asentaa sen kotiinsa. Jos tämä kotitietokone vaarantuisi PHP-haavoittuvuuden kautta, hyökkääjä voisi päästä yritysverkkoosi, kun vaarantunut tietokone on etäyhteydessä yritysverkkoon (esimerkiksi VPN:n kautta).

Useimmissa hälytys- ja raportointijärjestelmissä näytetään kunkin säännön nimi ja SID-tiedot, jotta niihin olisi helppo viitata. Voit karsia käytössä olevien sääntöjen luetteloa entisestään tarkkailemalla järjestelmiäsi, merkitsemällä muistiin tarpeettomien sääntöjen nimet tai SID-tunnukset ja poistamalla nämä säännöt sitten käytöstä. Voit poistaa Snortin säännön manuaalisesti käytöstä avaamalla sääntötiedoston ja lisäämällä puntamerkin (#) säännön eteen. Jos haluat poistaa käytöstä kokonaisen sääntöluokan, lisää punnusmerkki säännön tiedostonimen eteen Snortin määritystiedostossa. Sinun on käynnistettävä Snort uudelleen ladataksesi muutetut säännöt.

Sääntöjen säännöllinen tarkistaminen ja sellaisten sääntöjen poistaminen, jotka eivät koske verkkoasi, vähentää huomattavasti Snortin tuottamien hälytysten määrää, mikä helpottaa todella epäilyttävien pakettien havaitsemista ja tunnistamista. Muista myös ottaa säännöt tarvittaessa uudelleen käyttöön, kun otat käyttöön uutta teknologiaa, jota tällä hetkellä käytöstä poistetut säännöt suojaisivat.

Pitäkää säännöt ajan tasalla
Snort.org-sivustolla on kaksi versiota Snortin säännöistä: snortrules-stable ja snortrules-current, jotka toimivat Snort 2.0x:n ja Snort 1.9x:n kanssa. Uudemmat säännöt sisältävät uusia allekirjoituksia ja päivityksiä olemassa oleviin sääntöihin laajennettujen muuttujien hyödyntämiseksi. Esimerkiksi version 2.0.0 säännöissä määritellään muuttujat, jotka kuvaavat erityisesti tiettyjä koneen toimintoja (esimerkiksi muuttujat HTTP_SERVERS ja HTTP_PORTS kuvaavat tietokoneita, jotka käyttävät verkkopalveluja ja saattavat olla alttiita verkkopalveluhyökkäyksille). Nämä uudet muuttujat toimivat uusissa säännöissä saapuvien hyökkäysten tarkemmassa seulonnassa. Vanha sääntö saattaa varoittaa epäilyttävästä HTTP-pyynnöstä, joka on tarkoitettu mille tahansa verkon tietokoneelle, mutta uusi sääntö etsii samaa hyökkäystä vain silloin, kun se on tarkoitettu HTTP_SERVERS-muuttujan määrittelemälle Web-palvelimelle. Tämä luokitteluprosessi auttaa vähentämään vääriä hälytyksiä.

Snort.org päivittää sääntökokonaisuuksia usein pysyäkseen ajan tasalla uusien hyväksikäyttölöydösten kanssa. Pysyäksesi ajan tasalla tarkista, lataa ja sovella säännöllisesti uusia sääntöjä, jotka olisivat hyödyllisiä ympäristössäsi. Huomaa kuitenkin, että aina kun lataat uusia sääntöjä, uudet säännöt sisältävät tekstitiedostot korvaavat vanhat säännöt sisältävät tekstitiedostot. Huomaat nopeasti, että kaikkien käyttämättömien sääntöjen kommentoiminen pois joka kerta, kun päivität sääntötiedostoja, on hankalaa.

Oinkmaster pelastaa
Loistavasti useat avoimen lähdekoodin työkalut voivat auttaa tämän ongelman voittamisessa. Perl-skriptiohjelma nimeltä Oinkmaster, jonka voit ladata osoitteesta http://www.algonet.se/~nitzer/oinkmaster, automatisoi uusien sääntöjen lataamisen ja hallitsee käytöstä poistettuja tai muutettuja sääntöjä. UNIX-järjestelmille räätälöity Perl-skripti käyttää wget-, tar- ja gzip-työkaluja uusien sääntöjen hakemiseen ja laajentamiseen aina, kun skripti suoritetaan. Useimmat näistä työkaluista on asennettu UNIX-järjestelmiin, mutta voit ladata työkalut myös Windowsille. Muista, että avoimen lähdekoodin ratkaisuilla on rajoitetusti omaa tukea (jos sellaista on), joten etsi ratkaisuja mahdollisiin ongelmiin tai kysymyksiin verkosta. Avoimen lähdekoodin ohjelmistoyhteisö (OSS) tarjoaa runsaasti hyödyllistä tietoa. Hyvä paikka aloittaa on tilata jokin Snortin postituslistoista, joihin voit rekisteröityä osoitteessa http://www.snort.org/lists.html.

Muista lukea README-tiedostosta yksityiskohtaiset asennusohjeet alustallesi. Oinkmasterin perusasennusmenettely koostuu oinkmaster.pl- ja oinkmaster.conf-tiedostojen laajentamisesta Snort-hakemistoosi (tai määrittelemääsi hakemistoon) ja sen jälkeen oinkmaster.conf-tiedoston käyttämisestä Oinkmasterin konfigurointiin.

Avaa oinkmaster.conf-tiedosto ja noudata rivikommentteja työkalun konfiguroimiseksi. Vahvista ensin päivitettyjen sääntöjen sijainti verkko-osoitteena (esim. http://www.snort.org/dl/signatures/snortrules.tar.gz). Varmista, että osoitat Oinkmasterin luotettavalle ja hyvämaineiselle sivustolle, varsinkin jos päätät ladata ja asentaa säännöt automaattisesti. Muuten vaarana on, että lataat vioittuneita (tai pahempaa, väärennettyjä) sääntöjä, jotka voivat vaarantaa IDS:n.

Seuraavaksi määritä ohitettavat, muutettavat ja poistettavat tiedostot. Oletusarvoisesti Oinkmaster ei käsittele (eli ohittaa) local.rules- ja snort.conf-tiedostoja.

Skriptin modifysid-toiminnolla voit muokata äskettäin ladattuja sääntöjä; ajattele modifysid-toimintoa haku- ja korvaustoimintona tietylle SID:n perusteella tunnistamallesi säännölle. Tällä komennolla voit muokata tietyn säännön tekstiä. Voit esimerkiksi käyttää modifysid-komentoa ottaaksesi käyttöön säännön, joka on oletusarvoisesti poistettu käytöstä. Voit tehdä tämän lisäämällä uuden modifysid-komennon, jolla yksilöidään sääntö, jonka haluat ottaa käyttöön, ja käskemällä sitä poistamaan kommenttimerkin (#). Aina kun uusi sääntökokonaisuus ladataan, tämä kommenttimerkki poistetaan, kun Oinkmaster analysoi kyseistä sääntöä. Voit myös käyttää modifysid-käskyä korottamaan säännön toimintatyyppiä. Esimerkiksi komento

modifysid 2003 "alert" | "sev1"

nostaa hälytyksen, jonka SID on 2003, mukautettuun toimintatyyppiin sev1. Oinkmaster tekee tämän etsimällä sanaa ”alert” ja korvaamalla sen sanalla ”sev1”. Ja kyllä, se tekee useita korvauksia, joten käytä sitä varovasti.

Viimeinen ja suosituin Oinkmasterin ominaisuus, disablesid, antaa sinun poistaa valitut säännöt käytöstä. Määritä kaikkien niiden sääntöjen SID:t, jotka haluat pitää poissa käytöstä. Jos haluat esimerkiksi poistaa verkkoskannausten hälytykset käytöstä, voit aloittaa merkinnällä, joka on samankaltainen kuin

disablesid 469, 615, 618, 620

Lataamisen ja uuden sääntöjoukon jäsentämisen jälkeen Oinkmaster etsii määritetyt SID-tunnukset ja kommentoi säännöt pois. Niin kauan kuin Oinkmaster hallinnoi sääntöjäsi, säännöt pysyvät poissa käytöstä, vaikka sääntökokonaisuuksia päivitettäisiinkin.

Suorita skripti manuaalisesti aina, kun haluat päivittää säännöt. Jos tunnet itsesi rohkeaksi, ajoita skripti suorittamaan ja päivittämään säännöt toistuvasti. Oinkmaster hakee säännöt, laajentaa ne ja kopioi ne anturisi sääntöhakemistoon. Kuten useimpien OSS:ien kanssa, käytä Oinkmasteria harkiten ja opettele ensin, mitä se tekee ja miten se vaikuttaa ympäristöösi. Testaa esimerkiksi uudet säännöt ajamalla Snortia itsetestaustilassa (käyttämällä snort -T ja muita parametrejäsi), ennen kuin otat säännöt käyttöön tuotantoympäristössäsi.

Oinkmasterin avulla voit välttää epäilyttävien päivitysten lataamiseen liittyvät riskit antamalla sinulle mahdollisuuden varmuuskopioida vanhat säännöt ja toimittamalla lokin toiminnoistaan konsoliin. Tarkastele tätä tulostetta, jossa näkyvät poistetut säännöt, muutetut aktiiviset säännöt, muiden kuin sääntöjen tarkistukset ja uudet tiedostot, vahvistaaksesi, että Oinkmaster suoritti tehtävänsä onnistuneesti, ja vahvistaaksesi säännöt, joita Oinkmaster muutti. Jos päätät ajoittaa Oinkmasterin suorittamisen automaattisesti, harkitse tulosten lähettämistä sähköpostitse tarkastelun helpottamiseksi, kuten kuvassa 2 näkyy. Seuraavassa esimerkissä näytetään, miten Oinkmaster ajoitetaan ajettavaksi päivittäin klo 6:15 käyttämällä Linuxin crontab-komentoa (crontab-komennon avulla voit ajoittaa töitä Linuxissa):

15 6 * * * /home/snort/oinkmaster.pl -o /home/snort/rules -b /home/snort/backup 2>&1 | mail -s "Oinkmaster" 

Oinkmasterin parametreissa määritetään sääntöhakemisto (-o), varmuuskopiointisääntöhakemisto (-b) ja komento, jolla tulokset lähetetään sähköpostitse omistajalle. Komento 2>&1 lähettää StdErr-tulosteen StdOutiin (konsoliin) ennen kuin se lähetetään sähköpostisovellukseen.

Snortin säännön tarkastelu
Varastosääntöjen poistamisen käytöstä tai niiden perusmuutosten tekemisen lisäksi voit luoda omia sääntöjä ja räätälöidä Snortin sääntöjä edelleen suoraan omaan ympäristöösi. Mieti esimerkiksi anturikäyttöä, joka valvoo liikennettä palomuurisi sisällä ja ulkopuolella. Vaikka tieto siitä, kuinka monta matohyökkäystä palomuurisi torjuu, saattaa kiinnostaa sinua, vielä enemmän kiinnostaa se, onko yksikään näistä hyökkäyksistä peräisin verkostasi. Viime aikoina Snortin säännöt ovat sisältäneet yllä olevan esimerkin kaltaisia ”viritettyjä” sääntöjä, mutta jäljellä on vielä monia muita sääntöjä, joita saatat haluta muokata samalla tavalla. Listauksessa 1 on vakiosääntö, joka hälyttää, kun se havaitsee SQL Slammer (alias Sapphire) -madon. Puretaanpa nopeasti tämä sääntö. (Yksityiskohtaiset tiedot kaikista käytettävissä olevista parametreista, jotka määrittelevät sääntöjä, löytyvät Snortin sääntöjen perusteellisesta dokumentaatiosta osoitteessa http://www.snort.org/docs/writing_rules/chap2.html#tth_sec2.3.26.)

Kaikkien sääntöjen on oltava yhdellä rivillä ja niiden on alettava sääntötoiminnolla, joka tässä tapauksessa on

alert

Sääntötoiminnolla määritetään, miten Snort reagoi sääntöön, jos se laukeaa. Voit muuttaa sääntötyyppiä (esimerkiksi merkkijonoksi, kuten ’sev1’) tarjotaksesi mukautetun käsittelyn – esimerkiksi eskaloidaksesi toiminnon, kun kyseessä on osuma. Tämä vaihe eroaa edellisestä esimerkistä, jossa käytimme Oinkmasteria olemassa olevan säännön hälytystyypin muuttamiseen; tässä esimerkissä luomme uuden säännön käyttäen olemassa olevaa sääntöä mallina.

Parametrien joukko

udp $EXTERNAL_NET any -> $HOME_NET 1434

antaa säännön protokollan, IP-osoitteen, porttitiedot ja liikenteen suunnan. Tämä sääntö käskee Snortia löytämään kaikki verkkolähteestä (jonka muuttuja $EXTERNAL_NET määrittelee) tulevat UDP-paketit, jotka yrittävät mennä muuttujaan $HOME_NET porttiin 1434. Useimmat oletussäännöt käyttävät ensisijaisesti muuttujia $EXTERNAL_NET ja $HOME_NET. Jotkin säännöt käyttävät kuitenkin tarkempia muuttujia. Esimerkiksi DNS-palvelimia koskevat säännöt (tiedostossa dns.rules) käyttävät muuttujaa $DNS_SERVERS. Määritä nämä muuttujat Snortin asetustiedostossa (yleensä snort.conf). Voit vaihtoehtoisesti luoda omia muuttujia vastaamaan topologiaasi (esim. $MAIL_SERVERS) ja käytettäväksi mukautetuissa säännöissä. Määritä muuttuja käyttämällä sen nimeä (esim. var MAIL_SERVERS= 192.168.0.20/30) ja viittaa muuttujaan etuliitteellä dollarimerkillä ($, esim. $MAIL_SERVERS). Säännön toiminta ja nämä muuttujat muodostavat sääntöotsikon.

Sääntövaihtoehdot tarkentavat sääntöä niin, että epäilyttävä paketti (ja vain epäilyttävä paketti) laukaisee vastauksen. Kuten arvata saattaa, nämä allekirjoitukset voivat olla varsin yksityiskohtaisia ja ulottua paljon pidemmälle kuin pelkkä porttien täsmäytys. Kuvittele esimerkiksi vääriä positiivisia tuloksia, joita syntyisi, jos tämä Slammer-sääntö vain hälyttäisi kaikesta UDP-portin 1434 liikenteestä.

Vaihtoehto msg

msg:"MS-SQL Worm propagation attempt"

antaa yksinkertaisen kuvauksen hälytyksestä käytettäväksi hälytys- ja raportointitoiminnoissa. Sisältö-vaihtoehto

content:"|04|"; depth:1; content:"|81 F1 03 01 04 9B 81 F1 01|";content:"sock"; content:"send";

sisältää suur- ja pienaakkoset huomioivan hyötykuorman mallia vastaavan merkkijonon joko ASCII- tai heksadesimaaliarvoina (sulje heksadesimaaliarvot putkimerkillä-|). Voit määrittää useita sisältövaihtoehtoja. Syvyysvaihtoehto seuraa kutakin sisältövaihtoehtoa ja määrittää, kuinka monta tavua hyötykuormasta halutaan etsiä määritettyä sisältöä. Tässä esimerkissä paketti laukaisee vastauksen, jos se sisältää heksanarvon 04 ensimmäisessä tavussa tai loput sisällöstä missä tahansa hyötykuorman osassa.

Ladatut säännöt sisältävät usein viittauksia yksityiskohtaisiin tietoihin epäillystä hyväksikäytöstä tai syystä säännön luomisen taustalla. Jotkin raportointijärjestelmät tukevat viittausvaihtoehtoa tarjoamalla suoria linkkejä näihin tietoihin:

reference:bugtraq,5310; reference:bugtraq,5311;reference:url,vil.nai.com/vil/content/v_99992.htm;

Snort määrittää säännöt luokkiin ja antaa näille luokille korkean, keskitason tai matalan prioriteetin. Tällä hetkellä on olemassa yli 30 luokittelua, kuten yritetty hallinta, troijalainen-toiminta, palvelunestoyritys ja verkkotarkistus. Esimerkissämme luokitus on

classtype:misc-attack

Snort tallentaa havaittujen tunkeutumisten vastausprioriteetin. Voit käyttää ulkoista työkalua tai komentosarjaa tämän prioriteetin tarkempaan analysointiin ja toimenpiteisiin raportointisovelluksessasi.

Viimeisessä segmentissä

sid:2003; rev:2;

sid edustaa yksilöllistä Snort-sääntöä, ja rev tarkoittaa versionumeroa. Nämä ominaisuudet yksilöivät säännön yksiselitteisesti.

Säännön muokkaaminen
Katsotaan, miten tätä sääntöä voidaan muokata niin, että se antaa eskaloidun hälytyksen, kun se havaitsee sisäisiä tartunnan saaneita isäntiä. Koska käsittelemme samaa riistoa kuin alkuperäisessä säännössä, säännön sisältömäärittely pysyy samana. Meidän on muutettava vain IP-osoitteita ja liikenteen suuntaa. Muutetaan lähde-IP-osoite $HOME_NET:ksi seuraavasti:

udp $HOME_NET any -> $EXTERNAL_NET 1434

Snort.conf määrittelee $EXTERNAL_NET:n arvoksi ”any”, joten tämä sääntö ottaa edelleen kiinni sisäisiin isäntäkoneisiin kohdistuvat korruptoituneet paketit (kuten alkuperäinen sääntö). Nyt kun meillä on kuitenkin oma sääntö, joka seuraa vain sisäisiä lähde-IP-osoitteita, voimme muuttaa toimintatyypin mukautetuksi toimintatyypiksi, joka laukaisee eskaloidun hälytyksen.

Nykyaikaiset Snort-säännöt sisältävät tämän lähtevän Slammer-matohavaintosäännön oletussääntöihin. Kun uusi mato, virus tai muu hyökkäys alkaa kuitenkin levitä, harkitse uusien sääntöjen luomista, jotka korostavat tiettyjä tunkeutumisia.

Sääntöjen tekeminen
Olemassa olevien tai mukautettujen sääntöjen lisäksi, joita voit muokata tai luoda, saatat haluta sisällyttää sääntöjä, jotka saat toisesta lähteestä. Kun esimerkiksi uutinen uudesta madosta leviää Internetissä, turvallisuussivustot ja uutisryhmät julkaisevat nopeasti kertaluonteisia Snort-sääntöjä, jotka voivat havaita uuden madon. Liitä nämä uudet säännöt local.rules-tiedostoon ja käynnistä Snort uudelleen, jotta uudet säännöt tulevat voimaan.

Snort tarjoaa puitteet edulliselle ja mukautettavalle IDS:lle. Yhteisön tukeman sääntökokoelman ansiosta Snort on edelleen joustava ja tehokas järjestelmä. Sääntöjen pitäminen ajan tasalla lisää valppautta ja vähentää tehottomien hälytysten aiheuttamaa melua. Kuten minkä tahansa avoimen lähdekoodin projektin kohdalla, jos käytät aikaa sen toiminnan ymmärtämiseen ja tutustut sen yhteisön kehittämiin lisäosiin, parannat huomattavasti käyttömukavuuttasi järjestelmän kanssa ja lisäät sen tehokkuutta ympäristössäsi.

Vastaa

Sähköpostiosoitettasi ei julkaista.