Progetto

Generale

Profilo

SnortConsole » Cronologia » Versione 1

Amministratore Truelite, 26-01-2006 17:11

1 1 Amministratore Truelite
= Installare una console web per SNORT =
2
3
Il primo passo è installare i relativi pacchetti, purtroppo Debian al momento prevede come unico pacchetto di console [http://acidlab.sourceforge.net ACID] (nel pacchetto acidlab) che è assolutamente datato e non più mantenuto. Il progetto è stato sostituito da [http://secureideas.sourceforge.net/ BASE], che ha il grosso svantaggio di non essere pacchettizzato, e va pertanto installato a mano.
4
5
L'uso di una console permette di utilizzare più macchine su cui si è installato SNORT per raccogliere dati (i cosiddetti sensori) che vengono inviati ad un database centrale, sul quale è disponibile poi anche la console via web che ne permette l'analisi.
6
Installazione ed impostazione di MySQL
7
8
Il primo passo è allora quello di installare e configurare sulla macchina su cui girerà la console un opportuno database, perché questo possa raccogliere i dati inviati dai vari sensori su cui gira SNORT, nel caso utilizzeremo MySQL, per Debian tutto quel che serve è:
9
{{{
10
apt-get install mysql-server
11
}}}
12
che provvede ad installare il necessario. La configurazione di default di Debian prevede che il server ascolti solo in locale, a noi però serve che sia raggiungibile via rete, per questo occore commentare la riga:
13
{{{
14
#bind-address            = 127.0.0.1
15
}}}
16
e riavviare il server.
17
18
Una volta installato il server deve essere creato un utente ed un database ad uso di SNORT, questo può essere fatto o traminte un programma di amministrazione ad interfaccia grafica come mysql-admin o a mano con l'uso del comando mysql.
19
20
Dovendo compiere operazioni amministrative occorre collegarsi come root del database, se non si è precedentemente impostata una password si provveda a farlo subito con:
21
{{{
22
/usr/bin/mysqladmin -u root password mypassword
23
}}}
24
e a questo punto ci si potrà collegare con il comando:
25
{{{
26
piccardi@monk:~$ mysql -u root -p 
27
Enter password:
28
Welcome to the MySQL monitor.  Commands end with ; or \g.
29
Your MySQL connection id is 7 to server version: 4.0.24_Debian-2-log
30
31
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
32
33
mysql>
34
}}}
35
dove in corrispondenza ad Enter password: si è immessa la password precedentemente impostata.
36
37
Per poter usare SNORT con MySQL il primo passo è creare il database i dati ad esso relativi, questo, una volta entrati nella console di MySQL, si fa con l'istruzione:
38
{{{
39
mysql> CREATE DATABASE snort;
40
Query OK, 1 row affected (0.00 sec)
41
}}}
42
dopo di che occorre dare accesso ad un utente per la scrittura sul suddetto database; questo si fa con l'istruzione:
43
{{{
44
mysql> use snort;
45
Database changed
46
mysql> grant INSERT,SELECT,UPDATE on snort.* to snort identified by "mypass";
47
Query OK, 0 rows affected (0.00 sec)
48
}}}
49
Devono poi essere create le tabelle per gli allarmi ed i dati di SNORT, in questo caso il pacchetto Debian prevede uno apposito script da eseguire, questo si può fare direttamente a riga di comando con:
50
{{{
51
cd /usr/share/doc/snort-mysql/                                                 
52
zcat create_mysql.gz | mysql -u root -h localhost -p snort 
53
}}}
54
Configurazione di SNORT
55
56
Una volta fatto questo l'infrastruttura sul database è predisposta; occorre configuarare SNORT per la registrazione; questo richiede, in caso di Debian, l'installazione del pacchetto snort-mysql che supporta il logging su MySQL, che è pure quello che contiene lo script di generazione delle tabelle usato in precedenza.
57
58
Installandolo debconf richiederà, oltre le solite indicazioni riguardo l'interfaccia da usare e la rete su cui ci si trova, l'indicazione dei dati del database su cui effettuare la registrazione, andrà indicato il server (per nome, nel caso aggiungere la risoluzione su /etc/hosts) del database e dell'utente e relativa password che assumeranno i valori impostati in precedenza.
59
60
Questo farà sì che nel file di configurazione /etc/snort/snort.conf compaiano le opportune righe di impostazione per l'uscita dei dati, nella forma:
61
{{{
62
output database: log, mysql, user=snort password=mypass dbname=snort host=logger
63
output database: alert, mysql, user=snort password=mypass dbname=snort host=logger
64
}}}
65
(la seconda riga si è aggiunta per inserire pure gli allarmi e non viene generata da debconf).
66
67
L'uso della configurazione di SNORT in questa modalità presenta però il problema che i dati vengono trasmessi in chiaro dai sensori alla macchina con il database, questo può essere risolto o collegando direttamente questi su una rete separata, oppure utilizzando una configurazione diversa che prevede l'utilizzo di tunnel cifrati con SSH.
68
69
In questo secondo caso quello che deve essere fatto è associare a localhost anche un nome locale (sempre dentro /etc/hosts), infatti se si usa localhost dentro la configurazione di SNORT questo cerca di collegarsi a MySQL tramite socket su filesystem. Il secondo passo è utilizzare ssh per creare il canale con:
70
{{{
71
ssh -L 3306:localhost:3306 -l root -N logger.truelite.it -f
72
}}}
73
che rimappa la porta del database sul server, collegandosi su esso su localhost, con la stessa porta in locale sil sensore; le opzioni consentono di lanciare il comando in background.
74
75
Occorre poi consentire esplicitamente la connessione al database dall'utente precedentemente definito anche da localhost, vale a dire deve essere abilitato da MySQL l'accesso con:
76
{{{
77
mysql> grant INSERT,SELECT,UPDATE on snort.* to snort@localhost identified by "mypass";
78
Query OK, 0 rows affected (0.00 sec)
79
}}}
80
Fatto questo si potrà tornare tornare a far ascoltare MySQL solo in locale (rimuovendo la precedente modifica al file di configurazione) e poi occorrerà modificare la configurazione di SNORT, inserendo il nome del sensore al posto di quello della macchina su cui sono salvati i log, con:
81
{{{
82
output database: log, mysql, user=snort password=mypass dbname=snort host=sensor
83
output database: alert, mysql, user=snort password=mypass dbname=snort host=sensor
84
}}}
85
e poi riavviare SNORT. In questo caso lo svantaggio è che occorre inserire il comando di creazione del tunnel in uno script di avvio ed utilizzare SSH con l'autenticazione a chiavi e con una chiave senza password (sul sensore), a meno di non eseguire un avvio a mano.
86
87
Per tenere sotto controllo il funzionamento della configurazione di SNORT si usi il comando tail -f /var/log/syslog, dato che è su questo file che vengono registrati i messaggi di avvio; se è tutto a posto si riceveranno una serie di messaggi terminanti con:
88
{{{
89
...
90
Mar 23 13:01:02 localhost snort: Rule application order: ->activation->dynamic->alert->pass->log
91
Mar 23 13:01:02 localhost snort: Log directory = /var/log/snort
92
Mar 23 13:01:03 localhost snort: Snort initialization completed successfully (pid=6120)
93
}}}
94
La configurazione dell'infrastruttura web
95
96
A questo punto si devono installare Apache e PHP per poter utilizzare la console, i pacchetti necessari sono i seguenti:
97
{{{
98
apt-get install apache libapache-mod-php4 libphp-adodb libphp-phplot \
99
  php4-gd php4-mysql
100
}}}
101
Una volta eseguiti i passi precedenti si può passare all'installazione di BASE, in questo caso si possono scaricare i sorgenti (la licenza è QPL) da http://secureideas.sourceforge.net/, ed installarlo con i seguenti comandi:
102
{{{
103
wget -c http://jaist.dl.sourceforge.net/sourceforge/secureideas/base-1.0.2.tar.gz
104
cd /var/www
105
tar -xvzf ~/base-1.0.2.tar.gz
106
mv base-1.0.2 base
107
}}}
108
dopo di che si potrà configurare apache per l'accesso inserendo le seguenti istruzioni:
109
{{{
110
Alias /base     /var/www/base
111
<DirectoryMatch /var/www/base>
112
Options +FollowSymLinks
113
AllowOverride None
114
order allow,deny
115
allow from all
116
<IfModule mod_php3.c>
117
  php3_magic_quotes_gpc Off
118
  php3_track_vars On
119
  php3_include_path .
120
</IfModule>
121
<IfModule mod_php4.c>
122
  php_flag magic_quotes_gpc Off
123
  php_flag track_vars On
124
  php_value include_path .
125
</IfModule>
126
</DirectoryMatch>
127
}}}
128
dentro un file (ad esempio base.conf) in /etc/apache/conf.d, una volta riavviato Apache si potrà accedere alla pagina iniziale della console all'indirizzo http://console/base