Project

General

Profile

SnortConsole » History » Version 6

Simone Piccardi, 12/21/2010 11:21 AM

1 5 Amministratore Truelite
h1. Installare una console web per SNORT
2 1 Amministratore Truelite
3 5 Amministratore Truelite
Il primo passo è installare i relativi pacchetti, purtroppo Debian al momento prevede come unico pacchetto di console "ACID":http://acidlab.sourceforge.net (nel pacchetto acidlab) che è assolutamente datato e non più mantenuto. Il progetto è stato sostituito da "BASE":http://secureideas.sourceforge.net/, che ha il grosso svantaggio di non essere pacchettizzato, e va pertanto installato a mano.
4 1 Amministratore Truelite
5 1 Amministratore Truelite
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 1 Amministratore Truelite
7 6 Simone Piccardi
h2. Installazione ed impostazione di MySQL
8 6 Simone Piccardi
9 6 Simone Piccardi
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 è:
10 6 Simone Piccardi
11 1 Amministratore Truelite
<pre>
12 5 Amministratore Truelite
apt-get install mysql-server
13 5 Amministratore Truelite
</pre>
14 6 Simone Piccardi
15 1 Amministratore Truelite
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:
16 6 Simone Piccardi
17 1 Amministratore Truelite
<pre>
18 5 Amministratore Truelite
#bind-address            = 127.0.0.1
19 1 Amministratore Truelite
</pre>
20 6 Simone Piccardi
21 5 Amministratore Truelite
e riavviare il server.
22 1 Amministratore Truelite
23 6 Simone Piccardi
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@.
24 1 Amministratore Truelite
25 5 Amministratore Truelite
Dovendo compiere operazioni amministrative occorre collegarsi come root del database, se non si è precedentemente impostata una password si provveda a farlo subito con:
26 6 Simone Piccardi
27 1 Amministratore Truelite
<pre>
28 1 Amministratore Truelite
/usr/bin/mysqladmin -u root password mypassword
29 5 Amministratore Truelite
</pre>
30 6 Simone Piccardi
31 5 Amministratore Truelite
e a questo punto ci si potrà collegare con il comando:
32 6 Simone Piccardi
33 5 Amministratore Truelite
<pre>
34 1 Amministratore Truelite
piccardi@monk:~$ mysql -u root -p 
35 5 Amministratore Truelite
Enter password:
36 5 Amministratore Truelite
Welcome to the [[MySQL]] monitor.  Commands end with ; or \g.
37 1 Amministratore Truelite
Your [[MySQL]] connection id is 7 to server version: 4.0.24_Debian-2-log
38 1 Amministratore Truelite
39 1 Amministratore Truelite
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
40 1 Amministratore Truelite
41 1 Amministratore Truelite
mysql>
42 1 Amministratore Truelite
</pre>
43 6 Simone Piccardi
44 5 Amministratore Truelite
dove in corrispondenza ad Enter password: si è immessa la password precedentemente impostata.
45 1 Amministratore Truelite
46 6 Simone Piccardi
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:
47 6 Simone Piccardi
48 1 Amministratore Truelite
<pre>
49 5 Amministratore Truelite
mysql> CREATE DATABASE snort;
50 1 Amministratore Truelite
Query OK, 1 row affected (0.00 sec)
51 5 Amministratore Truelite
</pre>
52 6 Simone Piccardi
53 1 Amministratore Truelite
dopo di che occorre dare accesso ad un utente per la scrittura sul suddetto database; questo si fa con l'istruzione:
54 6 Simone Piccardi
55 1 Amministratore Truelite
<pre>
56 1 Amministratore Truelite
mysql> use snort;
57 1 Amministratore Truelite
Database changed
58 5 Amministratore Truelite
mysql> grant INSERT,SELECT,UPDATE on snort.* to snort identified by "mypass";
59 1 Amministratore Truelite
Query OK, 0 rows affected (0.00 sec)
60 1 Amministratore Truelite
</pre>
61 6 Simone Piccardi
62 1 Amministratore Truelite
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:
63 6 Simone Piccardi
64 1 Amministratore Truelite
<pre>
65 1 Amministratore Truelite
cd /usr/share/doc/snort-mysql/                                                 
66 5 Amministratore Truelite
zcat create_mysql.gz | mysql -u root -h localhost -p snort 
67 2 Amministratore Truelite
</pre>
68 2 Amministratore Truelite
69 6 Simone Piccardi
h2. Configurazione di SNORT
70 1 Amministratore Truelite
71 6 Simone Piccardi
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.
72 5 Amministratore Truelite
73 6 Simone Piccardi
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.
74 6 Simone Piccardi
75 6 Simone Piccardi
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:
76 6 Simone Piccardi
77 1 Amministratore Truelite
<pre>
78 1 Amministratore Truelite
output database: log, mysql, user=snort password=mypass dbname=snort host=logger
79 1 Amministratore Truelite
output database: alert, mysql, user=snort password=mypass dbname=snort host=logger
80 1 Amministratore Truelite
</pre>
81 6 Simone Piccardi
82 5 Amministratore Truelite
(la seconda riga si è aggiunta per inserire pure gli allarmi e non viene generata da debconf).
83 1 Amministratore Truelite
84 1 Amministratore Truelite
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.
85 1 Amministratore Truelite
86 6 Simone Piccardi
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:
87 6 Simone Piccardi
88 1 Amministratore Truelite
<pre>
89 5 Amministratore Truelite
ssh -L 3306:localhost:3306 -l root -N logger.truelite.it -f
90 5 Amministratore Truelite
</pre>
91 1 Amministratore Truelite
92 6 Simone Piccardi
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.
93 6 Simone Piccardi
94 6 Simone Piccardi
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:
95 6 Simone Piccardi
96 1 Amministratore Truelite
<pre>
97 1 Amministratore Truelite
mysql> grant INSERT,SELECT,UPDATE on snort.* to snort@localhost identified by "mypass";
98 5 Amministratore Truelite
Query OK, 0 rows affected (0.00 sec)
99 5 Amministratore Truelite
</pre>
100 6 Simone Piccardi
101 5 Amministratore Truelite
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:
102 6 Simone Piccardi
103 1 Amministratore Truelite
<pre>
104 1 Amministratore Truelite
output database: log, mysql, user=snort password=mypass dbname=snort host=sensor
105 5 Amministratore Truelite
output database: alert, mysql, user=snort password=mypass dbname=snort host=sensor
106 1 Amministratore Truelite
</pre>
107 6 Simone Piccardi
108 2 Amministratore Truelite
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.
109 5 Amministratore Truelite
110 6 Simone Piccardi
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:
111 6 Simone Piccardi
112 1 Amministratore Truelite
<pre>
113 1 Amministratore Truelite
...
114 5 Amministratore Truelite
Mar 23 13:01:02 localhost snort: Rule application order: ->activation->dynamic->alert->pass->log
115 1 Amministratore Truelite
Mar 23 13:01:02 localhost snort: Log directory = /var/log/snort
116 1 Amministratore Truelite
Mar 23 13:01:03 localhost snort: Snort initialization completed successfully (pid=6120)
117 1 Amministratore Truelite
</pre>
118 1 Amministratore Truelite
119 6 Simone Piccardi
h2. La configurazione dell'infrastruttura web
120 6 Simone Piccardi
121 1 Amministratore Truelite
A questo punto si devono installare Apache e PHP per poter utilizzare la console, i pacchetti necessari sono i seguenti:
122 6 Simone Piccardi
123 1 Amministratore Truelite
<pre>
124 1 Amministratore Truelite
apt-get install apache libapache-mod-php4 libphp-adodb libphp-phplot \
125 5 Amministratore Truelite
  php4-gd php4-mysql
126 1 Amministratore Truelite
</pre>
127 6 Simone Piccardi
128 1 Amministratore Truelite
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:
129 6 Simone Piccardi
130 5 Amministratore Truelite
<pre>
131 5 Amministratore Truelite
wget -c http://jaist.dl.sourceforge.net/sourceforge/secureideas/base-1.0.2.tar.gz
132 1 Amministratore Truelite
cd /var/www
133 1 Amministratore Truelite
tar -xvzf ~/base-1.0.2.tar.gz
134 1 Amministratore Truelite
mv base-1.0.2 base
135 1 Amministratore Truelite
</pre>
136 6 Simone Piccardi
137 1 Amministratore Truelite
dopo di che si potrà configurare apache per l'accesso inserendo le seguenti istruzioni:
138 6 Simone Piccardi
139 1 Amministratore Truelite
<pre>
140 1 Amministratore Truelite
Alias /base     /var/www/base
141 1 Amministratore Truelite
<DirectoryMatch /var/www/base>
142 1 Amministratore Truelite
Options +FollowSymLinks
143 6 Simone Piccardi
AllowOverride None
144 5 Amministratore Truelite
order allow,deny
145 1 Amministratore Truelite
allow from all
146 1 Amministratore Truelite
<IfModule mod_php3.c>
147 1 Amministratore Truelite
  php3_magic_quotes_gpc Off
148 1 Amministratore Truelite
  php3_track_vars On
149 1 Amministratore Truelite
  php3_include_path .
150 1 Amministratore Truelite
</IfModule>
151 1 Amministratore Truelite
<IfModule mod_php4.c>
152 1 Amministratore Truelite
  php_flag magic_quotes_gpc Off
153 1 Amministratore Truelite
  php_flag track_vars On
154 1 Amministratore Truelite
  php_value include_path .
155 2 Amministratore Truelite
</IfModule>
156 1 Amministratore Truelite
</DirectoryMatch>
157 1 Amministratore Truelite
</pre>
158 6 Simone Piccardi
159 6 Simone Piccardi
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