Snort

Iš Žinynas.
Jump to navigation Jump to search

Tai atviro kodo atakų aptikimo ir šalinimo sistema skirta firmoms, kompanijoms bei paprastiems vartotojams padedanti apsaugoti tinklus nuo įvairaus pobūdžio atakų. Snort tai realaus laiko paketų peržiūros ir analizavimo įrankis skirtas IP tinklams. Jis gali analizuoti, vykdyti paiešką ir gali būti panaudotas daugeliui atakų aptikti, buferio perpildymui, nematomiems prievadų skenavimams, CGI atakoms, SMB užklausoms, OS piršto antspaudų užklausimams. Sistema taip pat gali buti panaudota kaip atsakas atakoms jas blokuojant ar pranešant apie tam tikrus įvykius. Snort'as taip pat gali dirbti su papildoma programine įranga skirta grafiškai atvaizduoti atakų grafikus pagal laiką ar kitus kriterijus tai SnortSnarf, sguil, OSSIM ir Basic Analysis and Security Engine (BASE). Taip pat automatiniu atakų blokavimu pasinaudojant įvairias ugniasienes ipfw, ipchains, iptables. Tam geriausiai tinka perl scriptas guardian

Snort 2.6.X Taisyklių rašymas[keisti]

Snort atakų aptikimo sistema veikia pagal tam parašytas taisykles, kad būtų patogiau papildyti naujus atakų tipus tiek iš gamintojo svetainės oficialiomis taisyklėmis tiek pačio vartotojo sukurtomis. Tam skirta rules direktorija (Tiksli jos vieta priklauso nuo OS) /usr/local/etc/snort/rules (FreeBSD) /etc/snort/rules (linux). Norint papildyti šias taisykles reikia iš gamintojo svetainės atsisiūsti taisyklių paketą ir čia išskleisti (reiks užsiregistruoti). Išskleidę taisykles perkraukite snort ir toliau galite naudotis visagale atakų aptikimo sistema. Tam kad ji būtų dar veiksmingesnė galite pasirašyti savas taisykles. Pavyzdžiui jaigu lokalų IRC serverį užpuolė botnetas ir jums reikia uždrausti automatiškai kai tik botas bando patekti į jam skirtą kanalą galime pasirašyti paprastą taisyklę tam panaudosime failą local.rules esantį rules direktorijoje.

alert tcp any any -> lokalus_ip_adresas 6667 (content:"join #botnet"; \
nocase; msg: "Massive bot join detected joining to #botnet"; \
classtype:trojan-activity; id:1000004; rev:1;)

Kaip visa tai veikia ? Botas prisijungia prie IRC serverio ir kai tik bando ieiti į kanalą #botnet iškart sureaguoja mūsų snort'as pagal taisyklę gaudyti iš klientų kurie jungiasi į 6667 porta ascii aprašą su žinute "join #botnet" tai paprasta join komanda kurią rašome norėdami prisijungti į kanalą. Nocase reiškia, kad nesvarbu ar tai būtų didžiosios ar tai būtų mažosios raidės msg reiškia, kad apie tai bus pranešta į snort logą su žinute "Massive bot join detected joining to #botnet" classtype nurodo pavojaus klasifikaciją id nurodo unikalų identifikacinį numerį šiai taisyklei rev (ang. revision) peržiūros ir pataisymų paminėjimas. Jaigu veikia guardian tai mūsų isibroveliai turėtų būti blokuojami iškart ir atsijungę nuo serverio su žinute (ping timeout). Daugiau apie snort taisyklių rašyma galite sužinoti gamintojo svetainėje

Guardian diegimas ir suderinimas[keisti]

Guardian tai perl skriptas skirtas realaus laiko snort logų analizavimui ir kenkėjų blokavimui naudojantis vienu iš unix firewall'u. Prieš diegiant guardian visų pirma reikia paruošti snort'ą, kad jis logintų papildomą logą, taigi į snort.conf įrašome eilutę:

output alert_fast: alert_fast

Perkrauname snort'ą ir galime pradėti diegti guardian'ą

wget http://www.chaotic.org/guardian/guardian-1.7.tar.gz
tar xzf guardian-1.7.tar.gz
cd guardian-1.7
nano guardian.conf

Pasiredaguojame konfigą pagal save va čia pateiksiu pavyzdį kaip visa tai turi atrodyti

# Čia reikia nurodyti ip adresą kuris išeina į interneta kitaip sakant yra išorinis
HostIpAddr 84.32.74.1
# Tinklo interface priklausomai nuo os (linux ethX, FreeBSD rlX priklauso nuo kortos)
Interface       eth0
# Paskutinis šliuzo ip blokas pvz jei šliuzas 84.32.74.255 tai čia reiktu rašyti 255
HostGatewayByte  1
# Guardian'o log failas
LogFile         /var/log/guardian.log
# Mūsų snort log failas skirtas guardian'ui
AlertFile       /var/log/snort/alert_fast
# Adresai kuriuos reiktų ignoruoti
IgnoreFile      /etc/guardian.ignore
# Failas reikalingas jai serveris turi daugiau nei vieną IP adresą kurį reiktų paminėti
TargetFile      /etc/guardian.target
# Kiek laiko laikyti blokavimą
# 99999999, praktiškai išjungia laiko režimą.
TimeLimit       86400

Viską išsaugome ir perkialeme failą į /etc su komanda

mv guardian.conf /etc

touch /etc/guardian.target Atsidarome /etc/guardian.ignore failą ir ten surašome visus ip adresus/dns kurių nereiktų blokuoti tai gali būti vidinio tinklo resursai ar draugiškas kaimynas kuris nelinki jums blogo. Vėliau einame i scripts direktoriją ir iš ten persikopijuojame block ir unblock skirtus būtent jūsų OS pvz

cd scripts
mv freebsd_block.sh /usr/local/bin/block
mv freebsd_unblock.sh /usr/local/bin/unblock

Vėliau perkialiame ir pagrindinį guardian perl scriptą

cd ../
mv guardian.pl /usr/local/bin/guardian
chmod +a+x /usr/local/bin/guardian

Štai ir viskas dabar galime paleisti parašę guardian konsolėję ir žiūrėti /var/log/guardian.log ar viskas gerai veikia. Jaigu jūs naudojate FreeBSD ir retkarčiais norite pravalyti ipfw taisyklęs kurios blokuoja guardian pagautus nusikaltelius, galite pasinaudoti šiuo skriptuku.