13/12/2011

snort2mail: script per ricevere gli alert di snort direttamente sulla nostra casella di posta elettronica

Gli alert generati da snort sono di indubbia utilità, in quanto da un'attenta analisi degli stessi è possibile individuare possibili tentativi di intrusione sulla nostra rete. Poichè sono un po' pigro e la lettura dei log è sicuramente una delle fasi più tediose del mio lavoro, ho pensato di creare il seguente script, in grando di inviare al mio indirizzo email gli alert in questione man mano che vengono generati.

snort, mail, snort2mail, alert, IDS, NIDS

Ecco lo script:

#!/bin/bash

logfile=/var/log/snort2sms.log

destinatario=vostro.indirizzo@email.it

ROOT_UID=0

if [ "$UID" -ne "$ROOT_UID" ];then

        ERRORE1="Errore 1: Devi essere root per eseguire lo script"
        echo $ERRORE1
        echo "$(date) $ERRORE1" >> $logfile
        exit 1

fi

cd /var/log/snort

if [ -f alert ];then

        if [ -f alert_backup ];then
                #confronto i due file e salvo le differenza all'interno di mail
                diff alert alert_backup > mail

        else

                touch alert_backup
                cp alert alert_backup
        fi

else

        ERRORE2="Errore 2: Il file alert non esiste. Sei sicuro di aver installato snort?"
        echo $ERRORE2
        echo "$(date) $ERRORE2" >> $logfile

fi

if [ -s mail  ];then

        cp alert alert_backup

        cat mail | mail -iv -s "HOME: snort alert" $destinatario;
fi

rm mail

Non vi resta che schedulare l'esecuzione dello script mediante cron e creare il file di log snort2mail.log nella directory /var/log.

Enjoy.

10:00 Scritto da: nazarenolatella in Sicurezza | Link permanente | Commenti (0) | Segnala | Tag: snort, mail, snort2mail, alert, ids, nids | OKNOtizie |  Facebook

24/10/2011

Configurare un firewall Cisco PIX 501 come IDS

Premesso che i PIX 501 sono molto limitati come IDS, in quanto supportano soltanto circa 70 signature (piuttosto datate), può tornare comunque utile configurarli come Intrusion Detection System di prima linea, a cui associare dei sistemi più sofisticati, basati ad esempio su snort.

PIX-501.gif.jpg

Ovviamente, affinchè l'IDS possa svolgere il suo compito è necessario abilitare il logging dei pacchetti "sospetti", reindirizzandoli su un'altra macchina (aka logserver), in modo da non causare eventuali memory leak al nostro piccolo firewall (soprattutto se la mole di traffico che deve esaminare è piuttosto elavata).

Ma veniamo alla configurazione del PIX. Per prima cosa digitiamo il comando (in modalità enable):

NightFirewall# sh run | i ip audit

il cui output sarà:

ip audit info action alarm
ip audit attack action alarm

Esso rappresenta le due tipologie di signature che possono essere gestite dal firewall, ovvero info ed attack, con le rispettive azioni di default (che in entrambi i casi è alarm).

Definiamo adesso delle nuove policy di audit digitando:

NightFirewall# conf t
NightFirewall(config)# ip audit name esterna info
NightFirewall(config)# ip audit name interna attack action drop

La prima policy è di tipo info, la seconda è di tipo attack a cui è associata l'azione drop nel caso in cui vengano individuati dei pacchetti sospetti.

Associamo le policy di audit appena create alle interfacce del nostro PIX:

NightFirewall(config)# ip audit interface outside esterna
NightFirewall(config)# ip audit interface inside interna

ed infine lanciamo un write mem per salvare la nuova configurazione:

NightFirewall(config)# write mem

Ora il nostro PIX si comporterà come un IDS.

A presto.

PS: i log generati dal firewall avranno sa seguente struttura:

Oct 22 17:57:26 nightfirewall.*.org %PIX-4-400014: IDS:2004 ICMP echo request from 172.16.*.* to 172.16.*.* on interface inside
Oct 22 17:59:16 nightfirewall.*.org %PIX-4-400014: IDS:2004 ICMP echo request from 172.16.*.* to 192.168.*.* on interface inside
Oct 22 17:59:16 nightfirewall.*.org %PIX-4-400010: IDS:2000 ICMP echo reply from 192.168.*.* to 192.168.*.* on interface outside

In questo caso l'IDS ha generato dei falsi positivi, in quanto trattasi semplicemente di alcuni ping lanciati da nagios per i suoi check.

Ho quindi proceduto a disattivare le signature coinvolte utilizzando i seguenti comandi:

NightFirewall(config)# ip audit signature 2000 disable
NightFirewall(config)# ip audit signature 2004 disable

09:15 Scritto da: nazarenolatella in Sicurezza | Link permanente | Commenti (0) | Segnala | Tag: pix 501, ids, signature, attack, info, ip audit, snort | OKNOtizie |  Facebook

09/08/2011

Aggiornare snort alla versione 2.9.0.5 su *buntu

L'installazione di snort 2.9.0.5 su *buntu non è affatto banale. Infatti, occorre installare delle specifiche librerie e degli specifici strumenti per poter compilare il codice sorgente dell'IDS in questione.

 

snort 2.0.9.5, snort.conf, oinkmaster, rules, IDS

 

Per prima cosa scarichiamo la tarball mediante CLI usando wget:

nightfly@nightbox:~$ wget -O snort-2.9.0.5.tar.gz http://www.snort.org/downloads/867

Scompattiamola e posizioniamoci nella dir appena creata:

nightfly@nightbox:~$ tar -xzvf snort-2.9.0.5.tar.gz
nightfly@nightbox:~$ cd snort-2.9.0.5/

Stoppiamo la versione obsoleta di snort presente sulla nostra macchina:

nightfly@nightbox:~$ sudo service snort stop

Installiamo adesso alcune librerie necessarie per la compilazione di snort:

nightfly@nightbox:~/snort-2.9.0.5$ sudo apt-get install libpcap0.8-dev
nightfly@nightbox:~/snort-2.9.0.5$ sudo apt-get install libpcre3 libpcre3-dev
nightfly@nightbox:~/snort-2.9.0.5$ sudo apt-get install libdumbnet-dev libdnet libdnet-dev

Creiamo quindi un link simbolico all'header dumbnet.h poichè il file configure di snort va alla ricerca del file dnet.h:

nightfly@nightbox:~/snort-2.9.0.5/$ sudo ln -s /usr/include/dumbnet.h /usr/include/dnet.h

Installiamo l'ultima libreria che ci occorre, ovvero daq-0.5, disponibile direttamente sul sito www.snort.org:

nightfly@nightbox:~/snort-2.9.0.5/$ wget -O daq-0.5.tar.gz http://www.snort.org/downloads/860

nightfly@nightbox:~/snort-2.9.0.5/$ tar -xzvf daq-0.5.tar.gz
nightfly@nightbox:~/snort-2.9.0.5/$ cd daq-0.5/

Per compilare questa libreria è necessario utilizzare l'accoppiata flex/bison. Dunque procediamo con la loro installazione:

nightfly@nightbox:~/snort-2.9.0.5/daq-0.5$ sudo apt-get install flex bison

Possiamo ora compilare la libreria daq-0.5:

nightfly@nightbox:~/snort-2.9.0.5/daq-0.5$ ./configure
nightfly@nightbox:~/snort-2.9.0.5/daq-0.5$ sudo make
nightfly@nightbox:~/snort-2.9.0.5/daq-0.5$ sudo make install
nightfly@nightbox:~/snort-2.9.0.5/daq-0.5$ cd ..

Adesso passiamo alla compilazione di snort e successivamente sostituiamo il file di configurazione delle versioni precedenti con quello della release in questione:

nightfly@nightbox:~/snort-2.9.0.5$ sudo make
nightfly@nightbox:~/snort-2.9.0.5$ sudo make install
nightfly@nightbox:~/snort-2.9.0.5$ cd etc
nightfly@nightbox:~/snort-2.9.0.5/etc$ sudo cp snort.conf /etc/snort

Posizioniamoci nella dir /etc/snort ed apriamo il file snort.conf in scrittura:

nightfly@nightbox:~/snort-2.9.0.5/etc$ cd /etc/snort
nightfly@nightbox:/etc/snort$ sudo nano snort.conf

ed effettuiamo le seguenti sostituzioni:

1) ipvar con var (poichè non abbiamo compilato snort con la flag --enable-ipv6)

2) var RULE_PATH ../rules
     var SO_RULE_PATH ../so_rules
     var PREPROC_RULE_PATH ../preproc_rules

     con

     var RULE_PATH /rules
     var SO_RULE_PATH /so_rules
     var PREPROC_RULE_PATH /preproc_rules

3) Commentiamo le seguenti direttive:

    #dynamicdetection directory /usr/local/lib/snort_dynamicrules
    #include $RULE_PATH/local.rules
    #inspect_gzip
    #unlimited_decompress
    #preprocessor normalize_ip4
    #preprocessor normalize_tcp: ips ecn stream
    #preprocessor normalize_icmp4
    #preprocessor normalize_ip6
    #preprocessor normalize_icmp6

4) Rimuoviamo le direttive:

     compress_depth 65535 decompress_depth 65535
  

Ora occorre eliminare tutte le vecchie rules di snort ed installare quelle nuove. Per fare ciò digitiamo i seguenti comandi:

nightfly@nightbox:/etc/snort$ cd rules
nightfly@nightbox:/etc/snort/rules$ sudo rm *

Successivamente installiamo le nuove regole mediante oinkmaster, configurandolo opportunamente affinchè possa scaricare le rules della versione 2.0.9.5:

nightfly@nightbox:/etc/snort/rules$ sudo nano /etc/oinkmaster.conf

ed inseriamo la stringa:

url = http://www.snort.org/pub-bin/oinkmaster.cgi/<vostro oinkcode>/snortrules-snapshot-2905.tar.gz

Adesso possiamo procedere con l'installazione vera e propria delle regole:

nightfly@nightbox:/etc/snort/rules$ sudo oinkmaster -o /etc/snort/rules

Ad installazione completata, prima di lanciare snort, modifichiamo il file /etc/ld.so.conf aggiungendo la direttiva:

include /usr/local/lib

Infine, rendiamo effettiva tale modifica lanciando il comando:

nightfly@nightbox:/etc/snort/rules$ sudo ldconfig

A questo punto lanciamo uno snort -V il cui output dovrebbe essere:

 ,,_     -*> Snort! <*-
  o"  )~   Version 2.9.0.5 (Build 135)
   ''''    By Martin Roesch & The Snort Team: http://www.snort.org/snort/snort-team
           Copyright (C) 1998-2011 Sourcefire, Inc., et al.
           Using libpcap version 1.0.0
           Using PCRE version: 7.8 2008-09-05

Copiamo l'eseguibile presente in /usr/local/bin/snort all'interno della dir /usr/sbin/snort:

nightfly@nightbox:/etc/snort/rules$ sudo cp /usr/sbin/snort /usr/local/bin/snort

Verifichiamo che la configurazione di snort non contenga errori digitando:

nightfly@nightbox:/etc/snort/rules$ sudo snort -T -c /etc/snort/snort.conf

Se l'output visualizzato è il seguente:

Snort successfully validated the configuration!

allora possiamo lanciare un sudo service snort start ed iniziare ad avvalerci di questo potentissimo IDS.

A presto.

15:54 Scritto da: nazarenolatella in SO: Linux | Link permanente | Commenti (0) | Segnala | Tag: snort 2.0.9.5, snort.conf, oinkmaster, rules, ids | OKNOtizie |  Facebook