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