Progetto

Generale

Profilo

SnortConsole » Cronologia » Versione 3

Versione 2 (Amministratore Truelite, 26-01-2006 17:14) → Versione 3/6 (Amministratore Truelite, 26-01-2006 17:14)

= Installare una console web per SNORT = 

 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. 

 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. 
 Installazione ed impostazione di MySQL 

 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 è: 
 {{{ 
 apt-get install mysql-server 
 }}} 
 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: 
 {{{ 
 #bind-address              = 127.0.0.1 
 }}} 
 e riavviare il server. 

 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''. 

 Dovendo compiere operazioni amministrative occorre collegarsi come root del database, se non si è precedentemente impostata una password si provveda a farlo subito con: 
 {{{ 
 /usr/bin/mysqladmin -u root password mypassword 
 }}} 
 e a questo punto ci si potrà collegare con il comando: 
 {{{ 
 piccardi@monk:~$ mysql -u root -p  
 Enter password: 
 Welcome to the MySQL monitor.    Commands end with ; or \g. 
 Your MySQL connection id is 7 to server version: 4.0.24_Debian-2-log 

 Type 'help;' or '\h' for help. Type '\c' to clear the buffer. 

 mysql> 
 }}} 
 dove in corrispondenza ad Enter password: si è immessa la password precedentemente impostata. 

 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: 
 {{{ 
 mysql> CREATE DATABASE snort; 
 Query OK, 1 row affected (0.00 sec) 
 }}} 
 dopo di che occorre dare accesso ad un utente per la scrittura sul suddetto database; questo si fa con l'istruzione: 
 {{{ 
 mysql> use snort; 
 Database changed 
 mysql> grant INSERT,SELECT,UPDATE on snort.* to snort identified by "mypass"; 
 Query OK, 0 rows affected (0.00 sec) 
 }}} 
 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: 
 {{{ 
 cd /usr/share/doc/snort-mysql/                                                  
 zcat create_mysql.gz | mysql -u root -h localhost -p snort  
 }}} 
 Configurazione di SNORT 

 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'' snort-mysql che supporta il logging su MySQL, che è pure quello che contiene lo script di generazione delle tabelle usato in precedenza. 

 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. 

 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: 
 {{{ 
 output database: log, mysql, user=snort password=mypass dbname=snort host=logger 
 output database: alert, mysql, user=snort password=mypass dbname=snort host=logger 
 }}} 
 (la seconda riga si è aggiunta per inserire pure gli allarmi e non viene generata da debconf). 

 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. 

 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: 
 {{{ 
 ssh -L 3306:localhost:3306 -l root -N logger.truelite.it -f 
 }}} 
 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. 

 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: 
 {{{ 
 mysql> grant INSERT,SELECT,UPDATE on snort.* to snort@localhost identified by "mypass"; 
 Query OK, 0 rows affected (0.00 sec) 
 }}} 
 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: 
 {{{ 
 output database: log, mysql, user=snort password=mypass dbname=snort host=sensor 
 output database: alert, mysql, user=snort password=mypass dbname=snort host=sensor 
 }}} 
 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. 

 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: 
 {{{ 
 ... 
 Mar 23 13:01:02 localhost snort: Rule application order: ->activation->dynamic->alert->pass->log 
 Mar 23 13:01:02 localhost snort: Log directory = /var/log/snort 
 Mar 23 13:01:03 localhost snort: Snort initialization completed successfully (pid=6120) 
 }}} 
 La configurazione dell'infrastruttura web 

 A questo punto si devono installare Apache e PHP per poter utilizzare la console, i pacchetti necessari sono i seguenti: 
 {{{ 
 apt-get install apache libapache-mod-php4 libphp-adodb libphp-phplot \ 
   php4-gd php4-mysql 
 }}} 
 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: 
 {{{ 
 wget -c http://jaist.dl.sourceforge.net/sourceforge/secureideas/base-1.0.2.tar.gz 
 cd /var/www 
 tar -xvzf ~/base-1.0.2.tar.gz 
 mv base-1.0.2 base 
 }}} 
 dopo di che si potrà configurare apache per l'accesso inserendo le seguenti istruzioni: 
 {{{ 
 Alias /base       /var/www/base 
 <DirectoryMatch /var/www/base> 
 Options +FollowSymLinks 
 AllowOverride None 
 order allow,deny 
 allow from all 
 <IfModule mod_php3.c> 
   php3_magic_quotes_gpc Off 
   php3_track_vars On 
   php3_include_path . 
 </IfModule> 
 <IfModule mod_php4.c> 
   php_flag magic_quotes_gpc Off 
   php_flag track_vars On 
   php_value include_path . 
 </IfModule> 
 </DirectoryMatch> 
 }}} 
 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