sabato, Novembre 23, 2024

Installazione di Snort

Alessandro Pensato
Alessandro Pensatohttp://www.alessandro-pensato.it
Ciao a tutti, sono Alessandro, sono nato a Palermo il 24/01/1983 e vivo a qualche chilometro dalla città. Da anni coltivo la passione per i computer e tutto quello che ci sta attorno, con un occhio di riguardo per il mondo delle reti. Nel 2000 mi avvicino al mondo di Linux e ne resto impressionato da ciò che consente di fare, nonchè alla filosofia dell’opensource. Nel Aprile 2005 ho conseguito la certificazione Cisco CCNA. Da Novembre 2006 sono membro del CUG. Ho completato il corso HP IT Essential I e II e Cisco Network Security. Ho svolto uno stage presso Jump2Future dove mi sono occupato di redigere una ralazione per la realizzazione di un cluster basato su RedHat GFS (Global File System). Lavoro per l’IBIM-CNR di Palermo dal 2002 come tecnico informatico e gestione rete. Sto cominciando ad acquisire conoscenze nel campo del VoIP con software quali Trixbox e Elastix, realizzazione e uso di macchine virtuali basate su VMWare.

Introduzione

Per prima cosa occorre istruire APT su dove prelevare i pacchetti necessari, in particolare il repository Dotdeb è fondamentate. Modifichiamo il file di configurazione di APT inserendo le righe di seguito.

# vi /etc/apt/sources.list
	deb http://debian.fastweb.it/debian stable main contrib non-free
	deb http://packages.dotdeb.org stable all

Adesso occore rendere effettive le modifiche alla configurazione, per farlo usiamo il comando

# apt-get update

Prima di procedere con il resto dell’installazione, è consigliabile tenere l’ora di sistema aggiornata. Utilizziamo il servizio NTP puntando al server primario dello IEN di Torino

# apt-get install ntpdate
# ntpdate server ntp1.ien.it

Se già non disponiamo di regole di firewalling, possiamo utilizzare il tool Lokkit, molto semplice da configurare. Per il nostro scopo lasceremo aperte solo le porte per Ssh e Https.

# apt-get install lokkit
# lokkit
	**** Scegliere Medium e Custom: Abilitare porte 22,443 ****

Adesso possiamo compinciare con l’installazione dei pacchetti richiesti da Snort. Infatti, l’accesso ai report di Snort avverrà tramite interfaccia web protetta da SSL e con il supporto di Php e MySQL, Installiamo questi pacchetti e rispondere alle domande che ci verranno poste per la configurazione del certificato SSL.

Installazione di Apache con supporto PHP5

# apt-get install apache-ssl php-pear php5 php5-cli php5-common php5-dev  
  php5-gd php5-mysql libapache-mod-php5 php5-gd  libphp-adodb    

**** Rispondere alle domande pr la configurazione di SSL ****
Dato che utilizzeremo Apache 1.3.x, possiamo procedere con la rimozione della versione 2.x

# apt-get remove apache2.2-common

Installazione di MySQL

Procediamo ora con l’installazione di MySQL, necessario per la memorizzazione dei dati catturati da Snort, Durante la fase di configurare ci verrà chiesto di inserire una password per l’utente root su mysql.

# apt-get install mysql-server-5.0 mysql-client-5.0 libmysqlclient15-dev  

Installazione di Snort

L’installazione di Snort sarà fatta dai sorgenti, quindi occorre predisporre il sistema con il software necessario per la compilazione.

# apt-get install  libnet1 libnet1-dev libpcre3 libpcre3-dev autoconf automake1.9 libpcap0.8 
libpcap0.8-dev gcc make libtool libssl-dev gcc-4.1 g++

Come detto in precedenza, eseguiremo l’installazione dai sorgenti. Dopo averli scaricati e decompressi, lancieremo il configure abilitanto il supporto per mysql ed i plug-in dinamici.

# cd /usr/src/
# wget wget 
# tar zxvf snort-2.7.0.1.tar.gz
# cd snort-2.7.0.1
# ./configure --with-mysql --enable-dynamicplugin
# make && make install

Configurazione di Snort

Prima di avviare Snort occorre creare l’utente con il quale verrà eseguito ed alcune directory e file di configurazione.

# mkdir /etc/snort
# mkdir /var/log/snort
# groupadd snort
# useradd -g snort snort
# chown snort:snort /var/log/snort
# cd /etc/snort
# cp /usr/src/snort-2*/etc/*.conf* .
# cp /usr/src/snort-2*/etc/*.map .

Snort, come altri IDS, si basa su delle firme per poter riconoscere le intrusioni. Tali firme sono periodicamente aggiornate. Tali firme sono disponibili sul sito ufficiale di Snort, previa registrazione gratuita. Io per comodità le ho già scaricate in precedenza ed ora provvedo ad aggiornarle.

# cd /root
# wget 
# cd /etc/snort
# tar xvzf /root/snortrules-snapshot-CURRENT.tar.gz

Occorre modificare il file di configurazione di Snort, che si trova in /etc/snort, commentando alcune righe ed aggiungendone di nuove.

# vi /etc/snort/snort.conf
	**** Commentare le righe presenti ****
	var RULE_PATH 
	var HOME_NET 
	var EXTERNAL_NET
	**** Aggiungere queste righe ****
	var RULE_PATH /etc/snort/rules
	var HOME_NET 192.168.0.0/24    # Inserire la classe di ip utilizzati nella LAN
	var EXTERNAL_NET !$HOME_NET

Creazione del database MySQL

Un’altra operazione importante, consiste nella creazione di un utente per l’accesso a mysql e la creazione di un database dove conservare gli eventi generati da Snort. Per prima cosa, accediamo come root a mysql e inseriamo i comandi riportati,

# mysql -u root -p
	create database snort;
	grant CREATE, INSERT, SELECT, DELETE, UPDATE 
	on snort.* to snort@localhost;
	SET PASSWORD FOR snort@localhost=PASSWORD('snort_password');
	exit;

Ora che il database è creato, possiamo importarne la struttura che si trova nei sorgenti di Snort.

# cd /usr/src/snort-2*/schemas
# mysql -u root -p < create_mysql snort

Configurazione di Apache-SSL e PHP

Dato che i rapporti generati da Snort saranno accessibili via web, occorre apportare delle modifiche alla configurazione di Apache e PHP, ovvero creare la DocumentRoot e aggiungere il supporto PHP,

# mkdir /var/www
# chown -R www-data /var/www
# vi /etc/apache-ssl/httpd.conf
	**** Decommentare queste righe ****
	#AddType application/x-httpd-php .php
       #AddType application/x-httpd-php-source .phps
# vi /etc/php5/apache/php.ini
	**** Aggiungere questa riga ****
 	extension=mysql.so
       extension=gd.so
# /etc/init.d/apache-ssl restart

Installazione di BASE

BASE si occuperà di generare i rapporti di Snort per renderli accessibili via web browser. La sua installazione è molto semplice e richiede un componente, ADODB, per la connessione al database.

# cd /var/www
# wget 
# tar zxvf base-1.3.8.tar.gz
# rm base-1.3.8.tar.gz
# mv base-1.3.8/ base
# chmod 777 base
# wget http://switch.dl.sourceforge.net/sourceforge/adodb/adodb501beta.tgz
# tar zxvf adodb501beta.tgz
# rm adodb501beta.tgz
# mv adodb5/ adodb

Configurazione di BASE

La configurazione consiste nell’inserire i parametri per la connessione al server MySQL e al database di Snort creato in precedenza. Tali parametri vanno inseriti nel fine base_config.php.

# cd base
# cp base_conf.php.dist base_conf.php
# vi base_conf.php
	**** Modificare i valori ****       
       $BASE_Language = 'italian';
	$BASE_urlpath = "/base";
	$DBlib_path = "/var/www/adodb/";
	$DBtype = "mysql";
	$alert_dbname = "snort";
	$alert_host = "localhost";
	$alert_port = "";
	$alert_user = "snort";
	$alert_password = "snort_password";

Adesso possiamo accedere tramite web browser all’URL di seguito per procedere con la creazione di alcune tabelle all’interno del database di Snort.

	---> Cliccare su Create BASE AG
	---> Cliccare su Goto the Main page to use the application

Accesso limitato ai reports

E’ consigliabile limitare l’accesso ai report, magari con nome utente e password, e se volgiamo inserendo l’accesso esclusivo ad alcuni ip della rete da cui vogliamo visualizzare i reports.

# mkdir /var/www/passwords
# /usr/bin/htpasswd -c /var/www/passwords/passwords snort_admin
	**** Immettere una password per l'utente snort_admin ****
# vi /etc/apache-ssl/httpd.conf
	**** Modificare queste righe ***
	<Directory />
   	   Options SymLinksIfOwnerMatch
   	   AllowOverride None
	</Directory>
	**** Con ****
	<Directory />
   	   Options FollowSymLinks
   	   AllowOverride None
	</Directory>
	**** Aggiungere queste righe ****
	<Directory "/var/www/base">
   	   Order deny,allow
   	   Allow from 192.168.0.0/255.255.255.0
   	   AuthName "Snort IDS Web Interface"
   	   AuthUserFile /var/www/passwords/passwords
   	   AuthType Basic
   	   Require valid-user
       </Directory>

Pacchetti per la creazione dei grafici

Per ottenere dei grafici nelle pagine dei report occorre installare dei pacchetti da supporto a PHP.

# rm /etc/alternatives/php
# ln -s /usr/bin/php5 /etc/alternatives/php
# pear config-set preferred_state alpha
# pear install Image_Color
# pear install Image_Canvas
# pear install Image_Graph
# /etc/init.d/apache-ssl restart

Installazione di Barnyard

Questo programma snellisce il lavoro effettuato da Snort e ne permette un miglior funzionamento e velocià.

# cd /usr/src
# wget 
# tar xvzf barnyard-0.2.0.tar.gz
# cd barnyard-0.2.0
# ./configure --enable-mysql
# make &&m ake install

Configurazione di Barnyard

Ora che Barnyard dobbiamo integrarlo nella configurazione di Snort per poter lavorare correttamente.

# cp /usr/src/barnyard-0.2.0/etc/barnyard.conf /etc/snort
# vim /etc/snort/snort.conf
	**** Aggiungere queste righe ****
	output alert_unified: filename snort.alert, limit 128
	output log_unified: filename snort.log, limit 128
       **** Terminare i processi Snort ****
# vim /etc/snort/barnyard.conf
	**** Aggiungere/Modificare queste righe ****
	config hostname: sensor
	config interface: eth1
	output log_acid_db: mysql, database snort, server localhost, user snort, password snort_password, detail full
# cd /etc/snort
# vi bylog.waldo
	**** Aggiungere queste righe ****
	/var/log/snort
	snort.log
	108247783
	0

Avvio di Snort & Barnyard

Ora siamo pronti per poter avviare entrambi i servizi. Utilizziamo questa serie di righe per avviarli entrambi.

# /usr/local/bin/barnyard -c /etc/snort/barnyard.conf -g 
  /etc/snort/gen-msg.map -s /etc/snort/sid-msg.map -d /var/log/snort -f 
  snort.log -w /etc/snort/bylog.waldo &

Installazione e Configurazione di Oinkmaster

Come detto in precedenza, il lavoro svolto dall’IDS si basa sul riconoscimento di determinate attività confrontandole con degli elenchi, proprio come un antivirus. Periodicamente tali elenchi devono essere aggiornati per poter fronteggiare a nuove tipologie di attacchi. Oinkmaster si occupa di automatizzare le procedure per l’aggionamento delle firme e dei file di configurazione. Le firme sono disponibili per download previa registrazione gratuita, con la quale si ottiene un codice personale da inserire nel file di configurazione al posto del tag .

# cd /usr/src
# wget http://puzzle.dl.sourceforge.net/sourceforge/oinkmaster/oinkmaster-2.0.tar.gz
# tar xvzf oinkmaster*
# cd oinkmaster-2.0
# cp oinkmaster.pl /usr/local/bin
# mkdir /usr/local/etc
# cp oinkmaster.conf /usr/local/etc
# mkdir /tmp/oinktest
# vi /usr/local/etc/oinkmaster.conf
	**** Aggiungere all'url Snort 2.4 il codice Oinkmaster ****
url = 
# /usr/local/bin/oinkmaster.pl -o /tmp/oinktest

Script init.d per l’avvio automatico al boot

# vi /etc/init.d/snort-barn
	#!/bin/bash
	/sbin/ifconfig eth1 up
	/usr/local/bin/snort -Dq -u snort -g snort -c 
	/etc/snort/snort.conf -i eth1
	/usr/local/bin/barnyard -c /etc/snort/barnyard.conf -g 
	/etc/snort/gen-msg.map -s /etc/snort/sid-msg.map -d 
	/var/log/snort -f snort.log -w /etc/snort/bylog.waldo &
# chmod +x /etc/init.d/snort-barn
# update-rc.d snort-barn defaults 95

Articoli correlati

Noleggia una Tesla per il tuo evento ICT!

Categorie