En la siguiente guía vamos a explicar como instalar y administrar una red de detección de intrusos. El sistema empleado es el motor Snort que analiza el tráfico como un sniffer y trata los datos de entrada mediante una serie de preprocesadores y reglas para identificar posible tráfico de usuarios malintencionados.
Aquellas alertas generadas por esos preprocesadores o reglas son enviadas mediante un postprocesado a una base de datos, en el caso de la guia una MySQL. Para facilitar la gestión de la IDS se emplea un entorno web llamado Snorby que nos facilitará su administración.
Contenido |
El software requerido es Snort compilado con soporte para la base de datos MySQL (snort-mysql), un conjunto de reglas de ataques para el Snort (snort-rules-default), la base de datos MySQL, soporte para ruby y como forma opcional un servidor web Apache.
Antes de comenzar con la instalación es importante explicar que vamos a crear una contraseña para el usuario root en la base de datos, el cual tiene control total sobre MySQL. A su vez nos crearemos el usuario snort con contraseña contraseña_bbdd_snort y una base de datos donde escribirá Snort, que en el caso de la guía la he llamado snort28 (por la versión del Snort). Como nota final indicar que la contraseña que empleamos para el usuario snort que no contenga caracteres no numéricos o letras puesto que da problemas.
Instalamos la base de datos MySQL:
sudo aptitude install libmysqlclient15-dev mysql-client mysql-server
En la instalación de la base de datos se nos pedira que introduzcamos la contraseña de root para la base de datos. En caso de no haberla introducido podremos usar la herramienta mysqladmin para generarla:
mysqladmin -u root password contraseña_bbdd_root
Accedemos a mysql como root para crear la base de datos de nombre snort28 y darle permisos al usuario snort para que tenga control total sobre dicha base de datos. Adicionalmente crearemos la contraseña para el usuario snort:
mysql -u root -p (contraseña_bbdd_root) > create database snort28; > grant all on snort28.* to 'snort'@'localhost' identified by 'contraseña_bbdd_snort'; > flush privileges; > quit
Creamos toda la estructura de la base de datos que requerirá snort para guardar sus datos:
cd /usr/share/doc/snort-mysql/ zcat create_mysql.gz | mysql -u snort -p snort28
Instalamos Snort y sus reglas:
sudo aptitude install snort-mysql snort-rules-default
Configuramos snort modificando las siguientes líneas del fichero /etc/snort/snort.conf:
sudo vim /etc/snort/snort.conf
var HOME_NET 192.168.0.0/16 #Poner nuestra red interna var RULE_PATH /etc/snort/rules dynamicpreprocessor directory /usr/lib/snort_dynamicpreprocessor/ dynamicengine /usr/lib/snort_dynamicengine/libsf_engine.so output database: log, mysql, user=snort password=contraseña_bbdd_snort dbname=snort28 host=localhost
Para finalizar indicamos que ya tenemos tanto el Snort como la base de datos lista:
rm /etc/snort/db-pending-config
Instalamos Ruby y sus dependencias para dar soporte a Snorby:
sudo aptitude install git-core openssl ruby1.8-dev libopenssl-ruby libapr1-dev libaprutil1-dev rubygems1.8 rake
Nos bajamos snorby:
cd /var git clone git://github.com/mephux/Snorby.git cd /var/Snorby/config cp database.yml.example database.yml cp email.yml.example email.yml
Editamos database.yml:
production: adapter: mysql database: snort28 username: snort password: contraseña_bbdd_snort host: localhost
Ahora es donde empieza la fiesta... a descargarse dependencias toca:
gem install rake gem install -v=2.3.2 rails gem install mysql gem install prawn gem install passenger
Instalamos ya por fin Snorby:
cd /var/Snorby rake snorby:setup RAILS_ENV=production rake snorby:update RAILS_ENV=production
Ahora comprobamos que realmente esta funcionando levantando el servicio web de ruby:
ruby script/server -e production -b 127.0.0.1 -p 8888 -d
Nos conectamos por un navegador web a la siguiente dirección:
http://127.0.0.1:8888/
Si todo ha funcionado veremos una ventana de login, por defecto el usuario es snorby y la contraseña admin. Para cambiarlo vamos a la barra superior Settings -> MySettings -> Cambiamos el login y el password.
Captura de pantalla de interfaz Snorby: http://doc.ubuntu-es.org/Imagen:Snorby.jpg#filelinks
Nos puede interesar emplear el servidor web Apache por SSL en vez del servidor web de Ruby. Para ello hay que seguir los siguientes pasos:
Instalamos las dependencias:
sudo aptitude install apache2 apache2-prefork-dev build-essential
Creamos un servidor virtual:
sudo vim /etc/apache2/sites-available/ids
<VirtualHost 127.0.0.1:8888> SSLEngine On SSLCertificateFile /etc/apache2/ssl/apache2.pem LoadModule passenger_module /var/lib/gems/1.8/gems/passenger-2.2.8/ext/apache2/mod_passenger.so PassengerRoot /var/lib/gems/1.8/gems/passenger-2.2.8 PassengerRuby /usr/bin/ruby1.8 ServerAdmin webmaster@localhost DocumentRoot /var/Snorby/public <Directory /> Options FollowSymLinks AllowOverride None </Directory> ErrorLog /var/log/apache2/error.log LogLevel warn CustomLog /var/log/apache2/access.log combined </VirtualHost>
Indicamos que queremos que el servidor virtual se cree en el arranque de apache:
sudo ln -s /etc/apache2/sites-available/ids /etc/apache2/sites-enabled/ids
Agregamos el nuevo puerto a la lista de puertos:
sudo vim /etc/apache2/ports.conf <IfModule mod_ssl.c> Listen 8888 </IfModule>
Habilitar módulos ssl
sudo ln -s /etc/apache2/mods-available/ssl.conf /etc/apache2/mods-enabled/ sudo ln -s /etc/apache2/mods-available/ssl.load /etc/apache2/mods-enabled/
Creamos los certificados:
sudo mkdir /etc/apache2/ssl sudo cd /etc/apache2/ssl sudo openssl genrsa -out server.key 2048 sudo openssl req -new -key server.key -out server.csr sudo openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt sudo cat server.key server.crt >> apache2.pem
Instalamos la compatibilidad con apache <-> ruby mediante Passenger:
sudo /var/lib/gems/1.8/gems/passenger-2.2.8/bin/passenger-install-apache2-module
todo...
todo..