Dopo aver installato e configurato snort, barnyard2, pulledpork e MySQL (vedi qui e qui), ora vedremo come installare l’interfaccia Web del nostro sistema NIDS, ovvero Snorby.
Poichè tale interfaccia si basa su Ruby, è necessario predisporre il nostro sistema per il supporto del linguaggio di scripting in questione.
Preparazione della macchina
Per prima cosa installiamo i software prerequisiti, mediante i comandi:
yum -y groupinstall "Development Tools" yum install -y openssl-devel readline-devel libxml2-devel libxslt-devel mysql mysql-devel mysql-libs mysql-server urw-fonts libX11-devel libXext-devel qconf fontconfig-devel libXrender-devel unzip yum -y install xz urw-fonts libXext openssl-devel libXrender
Successivamente, scarichiamo ed installiamo ImageMagick , per la creazione di immagini bitmap, e wkhtmltopdf, per la conversione delle pagine HTML in PDF (funzionalità indispensabile durante la generazione dei report):
cd /usr/local/src wget ftp://ftp.fifi.org/pub/ImageMagick/ImageMagick-6.8.9-6.tar.gz tar -xvf ImageMagick-6.8.9-6.tar.gz cd ImageMagick-6.8.9-6 ./configure make make install ldconfig cd .. wget http://sourceforge.net/projects/wkhtmltopdf/files/0.12.1/wkhtmltox-0.12.1_linux-centos6-amd64.rpm/download rpm -Uvh wkhtmltox-0.12.1_linux-centos6-amd64.rpm
Adesso scarichiamo rvm, attraverso il quale sarà possibile installare la versione di Ruby compatibile con Snorby (ovvero la 1.9.3, che, purtroppo, è ormai obsoleta e non più mantenuta):
curl -L get.rvm.io | bash -s stable
Installiamo dunque Ruby e facciamo in modo che il sistema utilizzi la versione 1.9.3 come default:
rvm install 1.9.3 rvm use --default 1.9.3
Ora, utilizzando il packet manager di Ruby (ovvero gem), procediamo con l’installazione di Rails (il framework) e di passenger (necessario per integrare Snorby e Apache):
gem install rails gem install passenger passenger-install-apache2-module
Installiamo alcuni pacchetti prerequisiti:
gem install devise_cas_authenticatable -v '1.1.0'
e
gem install bundler
In particolare, quest’ultimo si occupa di gestire le dipendenze tra i gem (ed è il software responsabile della creazione dei file Gemfile e Gemfile.lock).
Installazione e configurazione di Snorby
Creiamo la directory nella quale ospitare Snorby:
mkdir -p /var/www/html/snorby
e scarichiamo l’applicazione vera e propria:
cd /var/www/html/snorby wget -O snorby.zip --no-check-certificate https://github.com/Snorby/snorby/archive/master.zip
Scompattiamo l’archivio, posizioniamoci nella directory snorby-master e spostiamone il contenuto all’interno di /var/www/html/snorby:
unzip snorby.zip cd snorby-master/ mv * ../
Modifichiamo ora il contenuto del file Gemfile, sostituendo le direttive di default per rake, json e devise_cas_authenticatable con le seguenti:
gem 'rake', '0.9.2.2' gem 'json', '~> 1.8.3' gem 'thin' gem 'devise_cas_authenticatable', '~> 1.1.0'
Inoltre, è necessario inserire la direttiva gem ‘thin’ subito dopo gem ‘json’, commentando quella dopo gem “letter_open”:
gem 'json', '~> 1.8.3' gem 'thin' group(:development) do gem "letter_opener" # gem 'thin'
Discorso simile vale per il file Gemfile.lock, in cui bisogna modificare le direttive rake e json nel seguente modo:
rake (0.9.2.2) json (1.8.3)
Lanciamo il comando bundle install in modo da installare i pacchetti gem (con le relative dipendenze) definiti all’interno del Gemfile precedentemente editato:
bundle install
Eliminiamo la dir snorby-master (ormai vuota) e passiamo alla configurazione di Snorby:
rm -rf snorby-master/ cd config cp snorby_config.yml.example snorby_config.yml nano snorby_config.yml
definendo la giusta timezone:
time_zone: Europe/Rome
A questo punto possiamo configurare la connessione al database, editando il file config/database.yml:
cd .. cp config/database.yml.example config/database.yml nano config/database.yml
il cui contenuto sarà simile al seguente:
# Snorby Database Configuration # # Please set your database password/user below # NOTE: Indentation is important. # snorby: &snorby adapter: mysql username: vostrouser password: "vostrapassword" # Example: password: "s3cr3tsauce" host: localhost development: database: snorby <<: *snorby test: database: snorby <<: *snorby production: database: snorby
Avviamo l’applicazione (con finalità di test), mediante i comandi:
rake snorby:setup rails server thin -e production
da lanciare all’interno della dir /var/www/html/snorby ed il cui output dovrebbe essere simile al seguente:
=> Booting Thin => Rails 3.1.12 application starting in production on http://0.0.0.0:3000 => Call with -d to detach => Ctrl-C to shutdown server Thin web server (v1.6.3 codename Protein Powder) Maximum connections set to 1024 Listening on 0.0.0.0:3000, CTRL+C to stop http://ip:3000/users/login
Provando ora a connetterci (con il nostro browser) a http://ip:3000/users/login dovremmo riuscire a visualizzare l’interfaccia di Snorby (con il relativo form per il login, dove l’email di default è snorby@example.com e la password è semplicemente snorby).
Integrazione tra Snorby e Apache
Come già affermato in precedenza, il modulo di Apache che consente al nostro server Web di interfacciarsi con le applicazioni scritte in Ruby prende il nome di passenger.
Per prima cosa occorre dunque configurare il suddetto modulo:
nano /etc/httpd/conf.d/mod_passenger.conf
il cui contenuto dovrà essere:
LoadModule passenger_module /usr/local/rvm/gems/ruby-1.9.3-p551/gems/passenger-5.0.16/buildout/apache2/mod_passenger.so PassengerRoot /usr/local/rvm/gems/ruby-1.9.3-p551/gems/passenger-5.0.16 PassengerDefaultRuby /usr/local/rvm/gems/ruby-1.9.3-p551/wrappers/ruby
Infine, modifichiamo il file di configurazione di Apache (/etc/httpd/conf/httpd.conf), creando un virtual host opportuno (in ascolto sulla porta TCP 82):
Listen 82 <VirtualHost *:82> Servername vostroserver.vostrodominio.com DocumentRoot /var/www/html/snorby/public <Directory /var/www/html/snorby/public> Order deny,allow Allow from all Options -MultiViews AuthName "Snorby Access" AuthType Basic AuthUserFile /etc/snorby/passwd Require valid-user </Directory> </VirtualHost>
Tale virtual host richiede l’autentica HTTP, ergo occorre creare il file in cui verranno salvate le coppie username/password da utilizzare:
mkdir -p /etc/snorby htpasswd -c /etc/snorby/passwd vostroutente
Infine, riavviamo Apache:
service httpd reload
ed abbiamo finito.
Alla prossima.