SnortConsole » Cronologia » Versione 6
Simone Piccardi, 21-12-2010 11:21
| 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 | 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 | |||
| 7 | 6 | Simone Piccardi | h2. Installazione ed impostazione di MySQL |
| 8 | |||
| 9 | 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 | |||
| 11 | 1 | Amministratore Truelite | <pre> |
| 12 | 5 | Amministratore Truelite | apt-get install mysql-server |
| 13 | </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 | /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 | 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 | |||
| 39 | Type 'help;' or '\h' for help. Type '\c' to clear the buffer. |
||
| 40 | |||
| 41 | mysql> |
||
| 42 | </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 | |||
| 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 | mysql> use snort; |
||
| 57 | 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 | </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 | 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 | |||
| 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 | |||
| 75 | 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 | |||
| 77 | 1 | Amministratore Truelite | <pre> |
| 78 | output database: log, mysql, user=snort password=mypass dbname=snort host=logger |
||
| 79 | output database: alert, mysql, user=snort password=mypass dbname=snort host=logger |
||
| 80 | </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 | 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 | |||
| 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 | |||
| 88 | 1 | Amministratore Truelite | <pre> |
| 89 | 5 | Amministratore Truelite | ssh -L 3306:localhost:3306 -l root -N logger.truelite.it -f |
| 90 | </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 | |||
| 94 | 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 | |||
| 96 | 1 | Amministratore Truelite | <pre> |
| 97 | 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 | </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 | 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 | |||
| 112 | 1 | Amministratore Truelite | <pre> |
| 113 | ... |
||
| 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 | Mar 23 13:01:03 localhost snort: Snort initialization completed successfully (pid=6120) |
||
| 117 | </pre> |
||
| 118 | |||
| 119 | 6 | Simone Piccardi | h2. La configurazione dell'infrastruttura web |
| 120 | |||
| 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 | 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 | wget -c http://jaist.dl.sourceforge.net/sourceforge/secureideas/base-1.0.2.tar.gz |
||
| 132 | 1 | Amministratore Truelite | cd /var/www |
| 133 | tar -xvzf ~/base-1.0.2.tar.gz |
||
| 134 | mv base-1.0.2 base |
||
| 135 | </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 | Alias /base /var/www/base |
||
| 141 | <DirectoryMatch /var/www/base> |
||
| 142 | Options +FollowSymLinks |
||
| 143 | 6 | Simone Piccardi | AllowOverride None |
| 144 | 5 | Amministratore Truelite | order allow,deny |
| 145 | 1 | Amministratore Truelite | allow from all |
| 146 | <IfModule mod_php3.c> |
||
| 147 | php3_magic_quotes_gpc Off |
||
| 148 | php3_track_vars On |
||
| 149 | php3_include_path . |
||
| 150 | </IfModule> |
||
| 151 | <IfModule mod_php4.c> |
||
| 152 | php_flag magic_quotes_gpc Off |
||
| 153 | php_flag track_vars On |
||
| 154 | php_value include_path . |
||
| 155 | 2 | Amministratore Truelite | </IfModule> |
| 156 | 1 | Amministratore Truelite | </DirectoryMatch> |
| 157 | </pre> |
||
| 158 | 6 | Simone Piccardi | |
| 159 | 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 |