IDS

De doc.ubuntu-es
Revisión a fecha de 00:01 19 mar 2010; Jorolo (Discusión | contribuciones)

(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar

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

Instalación

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.


MySQL

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

Snort

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

Snorby

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

Servidor web Apache

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

Funcionamiento Snort

todo...


Construcción de reglas

todo..

Herramientas personales