Snort è un applicativo Open Source sotto licenza GPL. In particolare si tratta Intrusion Detection System che si occupa di analizzare i pacchetti che transitano sulla rete e confrontarli con le firme di attacchi conosciuti, se riconosce un tentativo di intrusione invia un allert, che può mettere in moto tempestivo l'amministratore di sistema per una rapida risoluzione del problema. Snort è l'intrusion detection open source per eccellenza, vediamo come installarlo su CentOs 4.2...
Creazione dell'User
E' bene non utilizzare l'account root a meno di casi eccezionali, nell'uso quotidiano se dobbiamo effettuare operazioni che hanno bisogno di privilegi maggiori, basta dare il comando su
# groupadd <groupname>
# useradd -g <groupname> <username>
Diamo una password a questo utente:
#psswd <username>
Disabilitiamo i servizi inutili
Disabilitiamo apmd, cups, isdn, netfs, nfslock, pcmcia e portmap dando il comando (da root utilizzando su)
#chkconfig <service> off
Questo ci permetterà di risparmiare risorse di sistema, rendendo più performante il nostro intrusion detection Snort
Abilitiamo i servizi che ci servono
#chkconfig httpd on
#chkconfig mysqld on
#service httpd start
#service mysqld start
Installiamo i pacchetti che ci servono
Ricordate che se non siete loggati come root prima di dare alcuni comandi dovete dare il comando "su".
Ora andiamo nella cartella /root/ con questo comando
#cd /root/
creiamo la cartella snortinstall
#mkdir snortinstall
Installiamo Snort
Scarichiamo il pacchetto di Snort dal sito
# wget http://www.snort.org/dl/current/snort-2.6.1.5.tar.gz
Decomprimiamo il pacchetto del nostro Intrusion Detection
# tar -xvzf snort-2.6.1.5.tar.gz
# cd snort-2.6.1.5
Compiliamolo
# ./configure --with-mysql --enable-dynamicplugin
# make
# make install
Aggiungiamo un utente per snort
# groupadd snort
# useradd -g snort snort -s /sbin/nologin
Creiamo le cartelle per Snort
# mkdir /etc/snort/
# mkdir /etc/snort/rules
# mkdir /var/log/snort
# cd etc/ (etc/ non /etc/)
# cp * /etc/snort/
Adesso tornate nella cartella principale di installazione, scaricate e installate le regole per snort
# cd /root/snortinstall
# wget Queto_Link (tasto desto/copia indirizzo)
# tar -xvzf nortrules-pr-2.4.tar.gz
# cd ruled
# cp * /etc/snort/rules
Modifichiamo la configurazione principale, aprendo il file /etc/snort/snort.conf effettuiamo i seguenti cambiamenti:
var HOME_NET 10.0.0.0/24 (Naturalmente l'indirizzo che ho messo io è solo di esempio voi dovrete mettere quello della rete in cui deve operare l'Intrusion Detection)
var EXTERNAL_NET !$HOME_NET (Questo significa che tutto quello che non fa parte della HOME_NET è rete esterna)
Cambiamo "var RULE_PATH ../rules" in "var RULE_PATH /etc/snort/rules"
Dopo la linea che dice "preprocessor stream4_reassemble" aggiungiamo la linea "preprocessor stream4_reassemble: both,ports 21 23 25 53 80 110 111 139 143 445 513 1433" (senza le virgolette)
Ora diciamo a Snort di fare il log in Mysql
Togli il commento alla seguente riga:
output database: log, mysql, user=snort password=<the password you gave it> dbname=snort host=localhost
Ricordati la password che metti, dopo ti servirà per configurare mysql
Impostiamo Snort per partire all'avvio del sistema
Spostiamoci nella directory /etc/init.d e scriviamo:
# wget http://internetsecurityguru.com/snortinit/snort
# chmod 755 snort
# chkconfig snort on.
Configuriamo Mysql
Ecco la sequenza di comandi per configurare Mysql:
mysql
mysql> SET PASSWORD FOR root@localhost=PASSWORD('password');
>Query OK, 0 rows affected (0.25 sec)
mysql> create database snort;
>Query OK, 1 row affected (0.01 sec)
mysql> grant INSERT,SELECT on root.* to snort@localhost;
>Query OK, 0 rows affected (0.02 sec)
mysql> SET PASSWORD FOR snort@localhost=PASSWORD('password_from_snort.conf');
>Query OK, 0 rows affected (0.25 sec)
mysql> grant CREATE, INSERT, SELECT, DELETE, UPDATE on snort.* to snort@localhost;
>Query OK, 0 rows affected (0.02 sec)
mysql> grant CREATE, INSERT, SELECT, DELETE, UPDATE on snort.* to snort;
>Query OK, 0 rows affected (0.02 sec)
mysql> exit
>Bye
Esegui i seguenti comandi per creare le tabelle
#mysql -u root -p < ~/snortinstall/snort-2.6.0/schemas/create_mysql snort
#Enter password: la root password di mysql
Ora bisogna controllare se sono state create tutte le tabelle nel database:
# mysql -p
>Enter password:
mysql> SHOW DATABASES;
(You should see the following)
+------------+
| Database
+------------+
| mysql
| Snort
| test
+------------+
3 rows in set (0.00 sec)
mysql> use snort
>Database changed
mysql> SHOW TABLES;
+------------------+
| Tables_in_snort
+------------------+
Version 15 Page 10 of 19 Updated 8/17/2006 8:30 AM
| data
| detail
| encoding
| event
| icmphdr
| iphdr
| opt
| reference
| reference_system
| schema
| sensor
| sig_class
| sig_reference
| signature
| tcphdr
| udphdr
+------------------+
16 rows in set (0.00 sec)
exit;
Installiamo Base
Vai nella cartella di download di snort (cd /root/snortinstall)
Aggiorniamo pear
# pear upgrade --force PEAR-1.3.3 Archive_Tar-1.3.1 Console_Getopt-1.2
# pear upgrade --force PEAR-1.4.11
# pear upgrade PEAR
Istalliamo altri pacchetti che ci servono:
# yum install php-gd.i386
# pear install --alldeps Image_Graph-alpha
# pear install --alldeps Image_Canvas-alpha
# pear install --alldeps Numbers_Roman
SCARICHIAMO ADODB
# wget http://easynews.dl.sourceforge.net/sourceforge/adodb/adodb480.tgz
SCARICHIAMO BASE
#wget Questo_Link (tasto destro/Copia indirizzo)
Configuriamo il Firewall
# nano /etc/sysconfig/iptables
Aggiungiamo la seguente riga (Non mettetela in fondo, ma prima del REJECT finale)
"-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT" (senza le virgolette)
Ora cancellate le seguenti righe:
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
Date il comando "service iptables restart" e dovreste vedere una cosa del genere
[root@IDS ~]# service iptables restart
Azzerare le regole del firewall: [ OK ]
Impostazione delle catene su policy ACCEPT:filter [ OK ]
Scaricamento dei moduli iptables: [ OK ]
Applicazione delle regole firewall iptables: [ OK ]
Ora se volete vedere le regole dell'iptables basta dare il comando:
# iptables -L
Istalliamo ADODB
ADOdb è una libreria per php, è utilizzata per connettersi a molti tipi di database. Base ha bisogno di questa libreria per poter funzionare, quindi vediamo come installarla...
# cd /var/www/
# tar -xvzf /root/snortinstall/adodb480.tgz
Installiamo e configuriamo BASE
# cd /var/html/www
# tar -xvzf /root/snortinstall/base-1.2.6.tar.gz
# mv base-1.2.6/ base/ (questo rinomina la directory base-1.2.5 in "base")
Copia il file base_conf.php.dist in base_conf.php
Editiamo il file "base_conf.php" e aggiungiamo i seguenti parametri
$BASE_urlpath = "/base";
$DBlib_path = "/var/www/adodb/ ";
$DBtype = "mysql";
$alert_dbname = "snort";
$alert_host = "localhost";
$alert_port = "";
$alert_user = "snort";
$alert_password = "password_configurata_in_snort.conf";
/* Archive DB connection parameters */
$archive_exists = 0; # Set this to 1 if you have an archive DB
Ora dal vostro browser accedete alla pagina https://ip_address/base
Facciamo partire snort all'avvio come servizio:
# chkconfig snort on
# service snort start
La prima volta che entrerete in Base vi chiederà di ottimizzare il DataBase, clickate su "setup page"
Finito tornate alla pagina principale e vedrete Base funzionante
Proteggiamo la directory di BASE
Attualmente la directory di Base aperta a chiunque si colleghi, bisogna proteggerla con una password se non si vogliono brutte sorprese:
# mkdir /var/www/passwords
# /usr/bin/htpasswd -c /var/www/passwords/passwords NOMEUTENTE
Dove NOMEUTENTE è l'user che utilizzerete per connettervi alla pagina di Snort. Dopo aver dato il suddetto comando vi chiederà di digitare la password per l'utente
Ora editiamo httpd.conf (/etc/httpd/conf). Sotto le righe:
<Directory />
Options FollowSymLinks
AllowOverride
</Directory>
Dovete aggiungere le seguenti righe:
<Directory "/var/www/html/base">
AuthType Basic
AuthName "SnortIDS"
AuthUserFile /var/www/passwords/passwords
Require user base
</Directory>
Salvate le modifiche e fate ripartire apache con il commando
# Service httpd restart
Installiamo NTOP tramite yum
Nella cartella /etc/yum.repos.d create un file chiamato dag.repo e aggiungete il seguente testo nel file:
[dag] name=Dag RPM Repository for Red Hat Enterprise Linux
baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag/
gpgcheck=1
enabled=1
Importiamo le Chiavi PGP
# rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
Per far partire l'installazione ora scrivi:
# yum install ntop
Editiamo la configurazione di ntop modificando il file /etc/ntop.conf
# nano /etc/ntop.conf
Settiamo la scheda sulla quale Snort farà lo sniffing dei pacchetti. Se hai una sola scheda si tratta della Eth0
--interface eth1 (O un'altra interfaccia)
Togliamo il commento alla configurazione del SSL sulla porta 3001 cambiando la riga, da cosi:
#--https-server 3001
a cosi
--https-server 3001
Apriate la porta 3001 nel firewall aggiungendo le seguenti righe al file /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3001 -j ACCEPT
Facciamo ripartire iptables
# service iptables restart
A questo punto settiamo la password per NTOP
# ntop @/etc/ntop.conf -A
Inserischi la tua password
Torna nel file ntop.conf e cambia la riga
#--daemon
in
--daemon
Ora configuriamo il sistema in modo che NTOP parti come servizio all'avvio e lo facciamo partire
# chkconfig ntop on
# service ntop start
Collegati con il tuo browser in https alla porta 3001, l'indirizzo dovrebbe essere una cosa del genere: https://ip_address:3001/
Dovreste vedere la pagina di NTOP, se avete qualche errore controllate se avete fatto partire il servizio e se la configurazione è come sopra...
Finita l'installazione
Ora è il momento di testare snort, i migliori programmi per fare dei test sono GFI Languard e Nessus, preferibilmente il secondo. Fate uno scan della macchina con snort e poi andate a controllare BASE. Dovreste avere degli Alerts. Ora dovrai configurare snort in base alle tue necessita, questo è uno step obbligatorio se volete che il vostro IDS non vi dia falsi allarmi e sia sempre efficiente, quindi datevi da fare e buon lavoro.
NOTE
Se il servizio di snort non parte, come è successo a me potrebbero esserci dei problemi con le regole o il database, un comando utile per fare il troubleshooting è il seguente:
# snort -T
Fa il test della configurazione, e stampa sul terminale tutto il debug