Snort

From EIK wiki

Täiendab Gerli Kaunissaar AK51

Sissejuhatus

Snort on populaarne IDS/IPS platvorm, mille 1998. aastal töötas välja Martin Roesch. Snort on mitmeplatvormiline ja kasutab mudelit, mille puhul tarkvara levitatakse GPL litsentsiga. Snort kombineerib signatuuripõhist, protokollipõhist ja anomaaliaid otsivat ründetuvastust.

Eesmärgiks täiendada Erko Umal koostatud juhendit. Kus on näidatud lihtsamalt, kuidas installeerida virtuaalkeskkonnas ründetõrjeprogramm Snort (IDS) ja BASE (Basic Analysis and Security Engine) ning kirjeldada Snorti reeglite ülesehitust ja reeglite kasutamist. Snort IDS annab seadistatuna rünnete hoiatusi (alerts) ja BASE on hoiatuste analüüsi ja päringute veebiliides. BASE 'i abil saate Snorti avastatud ründeid analüüsida.

SNORT paigaldamine koos graafilise liidesega BASE

Kõik käsud käivitame serveris juurkasutaja õigustes. Juurkasutajale üleminek:

      sudo -i

Vastavalt GPL-i võimalustele kuulub Snort enamustesse Linuxi distributsioonidesse. Kõige lihtsamal kujul on Snort installeeritav näiteks debiani pakina:

      apt-get install snort

Kuid tuleb arvestada, et niimoodi installeerituna omab Snort vaid repositooriumis sisalduvaid signatuure, mida ei uuendata ja mis seetõttu üha kiiremini vananevad.

Veebiliidese tarbeks installeerime apache'i webiserveri:

      apt-get install apache2

ja MySQL-i:

      apt-get install mysql-server

MySQL küsib installeerimisel juurkasutaja parooli. See parool on soovitav meelde jätta.

Installeerime php5:

      apt-get install php5

Andmebaasi loomine Snort-i tarbeks:

     $ mysql -p
 mysql> CREATE DATABASE snort;
 mysql> grant CREATE, INSERT, SELECT, UPDATE on snort.* to snort@localhost;
 mysql> grant CREATE, INSERT, SELECT, UPDATE on snort.* to snort;
 mysql> SET PASSWORD FOR snort@localhost=PASSWORD('snort-db');
 mysql> flush privileges;
 [kontrolliks, kas kõik õnnestus:]
 mysql> show grants for 'snort'@'localhost';


Nüüd võime andmebaasi lahti pakkida mysql.gz , mis snorti installiga dokumentatsiooni alla lisati:

      cd /usr/share/doc/snort-mysql/
        $ zcat create_mysql.gz | mysql -u snort -D snort -psnort-db

Vajame ka snorti reegleid. Variant: registreerida endale kasutaja, saada oinkcode ja laadida reeglid snorti saidist; teine variant – laadida reeglid emergingthreats saidist http://www.emergingthreats.net/

      oinkmaster -o /etc/snort/rules  -u  http://rules.emergingthreats.net/open/snort-2.9.0/emerging.rules.tar.gz

laeme alla reeglite konfiguratsiooni:

      wget http://rules.emergingthreats.net/open/snort-2.8.6/emerging.conf

muudame snort.conf faili:

      nano /etc/snort/snort.conf  

ja lisame include- lausetele järgneva rea:

      include $RULE_PATH/emerging.conf

ja kopeerime emerging.conf faili /etc/snort/rules kataloogi.

      cp emerging.conf /etc/snort/rules

Lihtsamaks MySQL-iga opereerimiseks võime kasutada phpmyadmin-i:

      mkdir /var/www/mysqlgui
      cd /var/www/mysqlgui
      wget http://sourceforge.net/projects/phpmyadmin/files/phpMyAdmin/4.1.3/phpMyAdmin-4.1.3-all-languages.tar.gz
      tar -xvvvf phpMyAdmin-4.1.3-all-languages.tar.gz

BASE

      wget http://ftp.ee.debian.org/debian/pool/main/a/acidbase/acidbase_1.4.5-2_all.deb
      dpkg –i acidbase_1.4.5-2_all.deb
      apt-get install -f

Ligipääsu seadistamine: muudame faili

      /etc/acidbase/apache.conf  

rida

      allow from 127.0.0.0/255.0.0.0 

ja taaslaeme apache konfiguratsiooni. Pöördume veebisirvijaga aadressile http://snortbox/acidbase., kus snortbox on teie Snorti ja BASE-ga arvuti aadress.

SNORT reeglite ülesehitus

Snort tuvastab liiklust reeglite (Inglise keeles - Snort rules) alusel. Reegel on tingimus(ed), millele vastamisel kas genereeritakse hoiatus või blokeeritakse paketid. Snort kasutab lihtsat ja üpris paindlikku reeglite kirjeldamise süntaksit. Oluline on meeles pidada, et reegel on üherealine (hoiduge automaatselt poolitavatest tekstiredaktoritest). Snorti reegel koosneb kahest loogilisest jaotusest, reegli pealdisest ja reegli seadistustest. Pealdis sisaldab tegevust, protokolli, lähte- ja sihtaaadressi ja netmaske ja lähte- ja sihtpordi kirjeldusi. Reegli seadistus koosneb teatest ja kirjeldusest, milliseid osi paketist tuleb vaadelda, et reegli tegevus sooritataks.

Näidisreegel:

      alert tcp !192.168.1.0/24 any -> 192.168.1.0/24 111 (content: "|00 01 86 a5|"; msg: "external mountd access";)

Tekst esimese suluni on reegli pealdis (rule header) ja sulgudes olev osa reegli seadistus (rule options). Sisus enne kooloneid olevad võtmesõnad on seadistuse võtmesõnad (option keywords). Sisu osa pole otseselt reegli tarbeks vajalik, see piiritleb täpsemalt, millistele pakettidele tegevus rakendada. Kõik kirjeldatud tingimused peavad olema täidetud, et reegel rakenduks. Tingimuste kogu võib vaadelda loogilise AND lausena. Samal ajal võib erinevaid reegleid vaadelda OR lausetena.


Võimalikud tegevused paketiga:


Alert – loome hoiatuse, logime paketi

Log – logime paketi

Pass – ignoreerime paketti

Activate – loome hoiatuse, rakendame dynamic reeglid

Dynamic – eelneb Activate tegevus, järgnevalt logime

Drop – laseme iptables-il paketi droppida ja logime

Reject – laseme iptables-il paketi droppida ja saadame keeldumise

Sdrop - laseme iptables-il paketi droppida ja ei logi

SNORTi reegli kasutamine

Pöörame tähelepanu allalaetud reeglitele kataloogis/etc/snort/rules. Reeglite kasutamist määrab include –lausend seadistusfailis /etc/snort/snort.conf . Näiteks:

       include $RULE_PATH/attack-responses.rules

määrab, et snorti reeglite faili

       /etc/snort/rules/attack-responses.rules 

kasutatakse.

Kontrollime, kas on määratud local.rules kasutamine ja kui pole, lubame.

       include $RULE_PATH/local.rules

Täiendame faili local.rules mõne reegliga seejärel salvestame ja taaslaeme Snorti.

Kokkuvõte

Referaat koosneb Snorti ja Base installeerimis ja seadistamis juhendist ning Snorti reeglite ülesehituse kirjeldusest ja reeglite koostamisest. Mille tulemusena on võimalik Snorti erinevaid reegleid koostada(rünnakute tuvastamiseks, keelamiseks ja hoiatuste seadistamiseks).

Kasutatud kirjandus

http://paginas.fe.up.pt/~mgi98020/pgr/writing_snort_rules.htm#includes

Kasutatud Snorti ja BASE installeerimis juhendit (paberkujul), millel allikas puudus.

Referaadi 1-6 punkti koostas Gerli Kaunissaar AK51

SNORT

Mis on Snort?

Snort on avatud lähtekoodiga võrgu sissetungi vältimise süsteemi, mis on võimeline täitma reaalajas liiklus-analüüsi ja packeti loggimisi IP võrkudes. Smort suudab teha protokolli analüüsi, sisu otsimist/sobitust ja saab kasutada erinevate rünnakute ja sondide leidmisel,nagu ka stealth port skaneerimist, CGI rünnakud, SMB sondid, OS sõrmejäle tegemisel, ning palju muud.

Mida saab Snortiga teha?

Snortil on kolm peamist otstarvet:

  1. Võib seda otseselt kasutada pakkide nuuskimisel nagu tcpdump.
  2. Paketi loggerina (kasulik võrguliikluse debuggimisel jne).
  3. Või siis täis puhutud võrgu sissetungi vältimise süsteemina.

Kuidas Snort tööle saada?

Eeltingimused

MacPorts

Võib juhtuda, et kõigepealt pead installeerima MacPorts paki. Juhendi MacPortsi konfigureerimiseks leiad siit http://trac.macports.org/wiki/InstallingMacPorts

MySQL 5 installeerimine

Me kasutame MySQLi, et salvestada Snorti teateid andmebaasi BASE, et neile juurdepääseda ja kuvada.

  • Installi MySQL koos MacPortsiga.
   %% sudo port install mysql5 +server
  • mysql_install_db5 käsu täitmisel esmakordselt teha setup MySQL5.
   %% sudo -u mysql mysql_install_db5
  • käivita MySQL ja seadistada see käivituma süsteemi bootimisel.
   %% sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql5.plist
  • Kinnita MySQL protsess, et see töötaks selle käsuga.
   %% ps -ax | grep mysql
  • Kui MySQL töötab näeb väljund allolevaga sarnane välja.
   26683  ??  Ss     0:00.05 /opt/local/bin/daemondo --label=mysql5 --start-
   26692  ??  S      0:00.02 /bin/sh /opt/local/lib/mysql5/bin/mysqld_safe -
   26712  ??  S      0:16.90 /opt/local/libexec/mysqld --basedir=/opt/local 
   20796  p2  R+     0:00.00 grep mysql
  • Loo MySQL root parool.
   %% sudo /opt/local/lib/mysql5/bin/mysqladmin -u root password <mypassword>
  • Teosta MySQL root konto logini test uue root parooliga.
   %% mysql5 -u root -p

PHP intsleerimine ja testimine

Võite installida PHP 4 või 5, kuid hea PHP5 binaarne paigaldaja, mis töötab koos Apple'i Apache 1.3 on Marc Liyanage's PHP 5 pakett.

  • Laadige alla ja käivitage installeri pakett, tehke "lihtne install " ja hiljem redigeerige faili / usr/local/php5/lib/php.ini jaoks MacPorts "MySQL5 nagu näidatud.
   mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock
  • BASE liides kasutab faili index.php, nii et kui sa tahad lihtsalt "/ base" url juurdepääsu BASE veebiliidest leida httpd.conf faili (/ etc / httpd / httpd.conf Apple'i sisseehitatud Apache ) ja lisa "index.php",

DirectoryIndex direktiivi, nagu näidatud.

   <IfModule dir_module>
       DirectoryIndex index.html index.php
   </IfModule>
  • Nüüd pane veebiserver tööle.
    • Mine System Preferences Applei menüüs.
      • Kliki Sharing ikoonile.
        • Pane linnuke Web Sharing ruutu või eemaldada linnuke ja vaata seda uuesti.

Valmistuge PHP testiks, looge fail nimega test.php Apache dokumendi juurkataloogi (/ Library / veebiserveri / Documents Apple'i sisseehitatud Apache), mis sisaldab allpool toodud rida.

   <?php phpinfo() ?>.

Nüüd ava url http://localhost/test.php brauseris. Kui PHP töötab korralikult näed PHP tabelit.

Snort DB loomine

Logi sisse MySQLis root kasutajana.

   %% mysql5 -u root -p

Kui oled loginud MySQLis root kasutajaks, loo Snorti andmebaas ja kasutaja ning määrata Snorti load andmebaasis.

   mysql> create database snort;
   mysql> grant INSERT,SELECT on root.* to snort@localhost;
   mysql> grant CREATE,INSERT,SELECT,DELETE,UPDATE on snort.* to snort@localhost;
   mysql> grant CREATE,INSERT,SELECT,DELETE,UPDATE on snort.* to snort;
   mysql> SET PASSWORD FOR snort@localhost = OLD_PASSWORD('<snortdb-passwd>');
   mysql> exit

Installeeri ja konfigureeri BASE.

Teostage see käsk paigaldamaks BASE ja selle sõltuvus Adodb kaudu MacPortsi.

   %% sudo port install base

Tee sümbolitega lingid Apache root dokumenti.

   %% cd <Apache-docroot>
   %% sudo ln -s /opt/local/share/adodb  adodb
   %% sudo ln -s /opt/local/share/base  base

Tee koopia BASE proovi failist mille laiendiks on "dist".

   %% cd /opt/local/share/base
   %% sudo cp base_conf.php.dist base_conf.php

Avage fail base_conf.php tekstiredaktoris.

   %% pico /opt/local/share/base/base_conf.php

Muuda faili muutujad, nagu on näidatud.

   $BASE_urlpath  = '/base';
   $DBlib_path    = '/<Apache-docroot>/adodb';
   $alert_dbname     = 'snort';
   $alert_host       = 'localhost';
   $alert_user       = 'snort';
   $alert_password   = '<mysql-snort-password>';
   $archive_dbname   = 'snort';
   $archive_user     = 'snort';
   $archive_password = '<mysql-snort-password>';
   $archive_host     = 'localhost'

Snordi instaleerimine ja konfigureerimine

Siin installime Snorti, impordime Snordi MySQL andmebaasi skeemi ja seadistame Snorti.

Snordi installeerimine

Kasutage neid samme, et installida MacPortsi kaudu Snort.

   %% sudo port install snort +mysql5 +server

Installi Snordi reeglid

Tee koht Snordi seadete failidele, eeskirjadele ja logidele.

   %% sudo mkdir –p /opt/local/etc/snort/rules
   %% sudo mkdir /var/log/snort

Selleks, et käivitada täielik eeskirjade kogum, peate registreeruma Snort.org. Siis minge Snordi reeglite lehele ning laadige alla "registred user" versioon (võid ka maksta ja saada "subscription release") Snordi reeglite failidest ning pakkige need lahti.

   %% cd <snort-rules-download-dir>/rules
   %% sudo cp * /opt/local/etc/snort/rules
   %% sudo cp *.config /opt/local/etc/snort

Kuna Snordil ei ole automatiseeritud updateimis mehhanismi, peaksite alla laadima uusimad eeskirjad ja taaskäivitama Snordi iga paari nädala tagant veendumaks, et see tunneks uusimaid rünnaku profiile.


Redigeeri snort.conf

Nimeta snort.conf proovi fail ümber snort.conf.

   %% cd /opt/local/etc/snort
   %% sudo mv snort.conf.dist snort.conf
   %% sudo pico /opt/local/etc/snort/snort.conf

Siis ava snort.conf tekstiredaktoris.

   %% sudo pico /opt/local/etc/snort/snort.conf

Muuda RULE_PATH ja andmebaasi muutujad täpselt nii, nagu on näidatud ja HOME_NET vastavalt vajadusele.

   # Path to your rules files
   var RULE_PATH /opt/local/etc/snort/rules
   # database: log to a variety of databases
   output database: alert, mysql, user=snort password=<snortpwd> dbname=snort host=localhost
   var HOME_NET [10.1.1.0/24,192.168.1.0/24]

Vaikeseaded teiste muutujate snort.conf failis peaks olema OK enamikel eesmärkidel.

Impordi Snorti skeem

Impordi Snordi andmebaasi skeemi sisse Snordi MySQL andmebaasi, nagu on näidatud.

   %% cd /opt/local/share/snort/schemas
   %% cat create_mysql | mysql5 –u root -p snort


Logi sisse MySQLi root kasutajana.

   %% mysql5 –u root –p

Siis kuva Snordi tabelid tema andmebaasis.

   mysql> show databases;
   mysql> use snort;
   mysql> show tables;
   mysql> exit
   +------------------+
   | Tables_in_snort  |
   +------------------+
   | data             |
   | detail           |
   | encoding         |
   | event            |
   | icmphdr          |
   | opt              |
   |  reference       |
   | reference_system |
   | schema           |
   | sensor           |
   | sig_class        |
   | sig_reference    |
   | signature        |
   | tcphdr           |
   | udphdr           |
   +------------------+
   16 rows in set (0.00 sec)

Impordi BASE's skeemid

Lisa tabelid, mida BASE vajab Snordi andmebaasi kasutades neid käske.

   %% cd /opt/local/share/base/sql
   %% cat create_base_tbls_mysql.sql | mysql5 -u root -p snort

Nüüd näita tabeleid uuesti ja näed uut tabelit eesliidesega "acid", sest BASE põhineb vanemal Analysis Consolil Intrusion Andmebaasil (ACID).

   +------------------+
   | Tables_in_snort  |
   +------------------+
   | acid_ag          |
   | acid_ag_alert    |
   | acid_event       |
   | acid_ip_cache    |
   | base_roles       |
   | base_users       |
   | data             |
   | detail           |
   | encoding         |
   | event            |
   | icmphdr          |
   | iphdr            |
   | opt              |
   | reference        |
   | reference_system |
   | schema           |
   | sensor           |
   | sig_class        |
   | sig_reference    |
   | signature        |
   | tcphdr           |
   | udphdr           |
   +------------------+
   22 rows in set (0.01 sec)

See lõpetab installi ja konfiguratsiooni kõigile vajalikule tarkvarale Snordil ja BASEl.

Snorti käivitamine esiplaanil

Snordi kävitamine esiplaanil võimaldab näha veateateid nii, et see on hea mõte kävitada Snort sel viisil, kuni olete kindel, et programm töötab korralikult. Lihtsalt jätta-D (daemon mode) valik ja Snort jooksebki esiplaanil.

   %% sudo snort –c /opt/local/etc/snort/snort.conf

Veenduge, et MySQL tugi on sisse lülitatud. Kui Snort on kompileeritud MySQL toetusega,näed sa neid Snorti andembaasi sõnumeid mis liiguvad üle oma terminali akna (output trimmed):

   database: compiled support for ( mysql )
   database: configured to use mysql
   database:          user = root
   database: password is set
   database: database name = snort
   database:          host = localhost
   database:   sensor name = <ip address>
   database:     sensor id = 1
   database: schema version = xxx
   database: using the "alert" facility
    --== Initialization Complete ==--

Pärast mil initsialiseerimise info on kuvatud,näed sa live packeti jäädvustatud teavet terminali ekraanile,seda muidugi siis kui oled ühendatud võrku. Nüüd "kill" SNorti esiplaani protsess kirjutades Cntl-C et vaadata kokkuvõtet nagu on näidatud allpool.Pöörake erilist tähelepanu "Action Stats" osas (output trimmed):

   Snort received 216 packets
       Analyzed: 216(100.000%)
        Dropped: 0(0.000%)
    =========================
    Breakdown by protocol:
       TCP: 10         (4.630%)          
       UDP: 98         (45.370%)         
      ICMP: 60         (27.778%)         
       ARP: 19         (8.796%)
     EAPOL: 0          (0.000%)
      IPv6: 0          (0.000%)
       IPX: 0          (0.000%)
     OTHER: 23         (10.648%)
    DISCARD: 0          (0.000%)
    ==========================
    Action Stats:
    ALERTS: 1
    LOGGED: 1
    PASSED: 0

Kui hoiatusteated ja / või sisselogitud statistika on null siis Snort ei loggi ennast korralikult MySQLi ningei näe tegevust BASEis.

Snorti käivitamine - tagaplaanil

Kui tead Snort töötab korralikult, siis võib selle käivitada tagataustal -D (daemon) lülitiga.

    %% sudo snort –D –c /opt/local/etc/snort/snort.conf

Kui olete installinud Snorti koos serveriga võite kasutada launchctl et seada Snort käivituma süsteemi bootimisel, aga kui sa ikka ei taha käivitada Snorti startupil siis võib lihtsalt jätta selle sammu tegemata.

    %% sudo launchctl load -w /Library/LaunchDaemons/org.macports.snort.plist

Kui sa ei saa installida Snorti koos + serveriga või ei soovi jooksutada launchctl käsku, võite Snordi käivitada tagataustal koos Snordi käivitamisskriptiga nagu näidatud.

    %% sudo /opt/local/share/snort/snort.sh start


Snordi protsesside vaatamine

Et näha Snorti töötamas tagataustak,kasuta seda käsku.

    %% ps -ax |grep snort

Kui Snort töötab, ps käsu väljund sisaldab rida sarnaselt käesolevale.

   538  p1  S+ 0:00.51 snort -c /opt/local/etc/snort/snort.conf

Teadete vaatamine Snordiga

Mine http://localhost/base/index.php et vaadata BASE pealehte. Võib juhtuda, et peate ootama mõne hetke ennem kui Snort tuvastab sissemurdmise või sondi, mistõttu ei pruugi te näha mitte mingisugust tegevust BASE veebilehel kohe pärast Snordi paigaldamist.

Snort1.jpg

Snort2.jpg

ERKO UMAL A21