domingo, 9 de noviembre de 2008

Sistema de Detección de Intrusos


Sistema de Detección de Intrusos

Para configurar un sistema de detección de intrusos en Ubuntu, procedemos de la siguiente forma:

Primero procedemos a instalar MySql, mediante el siguiente comando:

# apt-get install mysql-server

Luégo de instalar MySql, procedemos a iniciarlo; para ello ejecutamos el siguiente comando:

# /etc/init.d/mysqld start

Y ahora para ingresar al entorno de MySql, ejecutamos el siguiente comando:

# mysql

Y continuamos a crear la base de datos de Snort, así:

mysql> CREATE DATABASE snort;

y le asignamos una contraseña para entrar al servidor MySQL, siendo root el usuario de la base de datos, así:

mysql> SET PASSWORD FOR root@localhost=PASSWORD('tu_contraseña_BBDD');

Y procedemos a salirnos de la consola de MySql, así

mysql> exit;

Ahora procedemos a crear el esquema de la base de datos de Snort, que serán las tablas que
se utilizará el Snort. Para ello necesitaremos el código fuente de Snort; así que nos situamos sobre el directorio /usr/src y procedemos a realizar la descarga de éste, mediante el siguiente comando:

# wget http://www.snort.org/dl/snort-2.8.3.1.tar.gz

Y ahora procedemos a extraer los archivos, mediante el siguiente comando:

# tar zxvf snort-2.8.3.1.tar.gz

Y ahora si procedemos a crear el esquema de la base de datos de Snort, mediante el siguiente comando:

# mysql -u root -p < /usr/src/snort-2.8.3.1/schemas/create_mysql snort y a continuación nos pedirá que ingresemos la contraseña que registramos a la base de datos. Ahora, para comprobar que hemos importado el esquema de la base de datos correctamente, ingresamos nuevamente a la consola de MySql y ejecutamos el siguiente comando para usar la base de datos "snort": mysql> use snort;

Y ahora procedemos a listar las tablas de la base de datos de snort, así:

mysql> show tables;

que nos dará como resultado...




Luego procedemos a instalar PHP (versión 5, en este caso), mediante el siguiente comando:

# apt-get install php5

Ahora, continuamos con la instalación de Snort; para ello ejecutamos el siguiente comando:

# apt-get install snort


Luego, procedemos a editar el archivo de configuración /etc/snort/snort.conf, así, mediante el editor gedit:

# gedit /etc/snort/snort.conf &


Y proseguimos a modificar la siguiente línea:

output database:log,mysql, user=snort password=[password] dbname=snort host=localhost

Ya teniendo configurado snort, se procede a iniciar el servicio, especificando la interface de red a controlar, así:

# snort -i etho -c /etc/snort/snort.conf


Ahora, continuamos con la instalaciòn de BASE (sistema de auditoría que proporciona una interface web en PHP para ver las alertas generadas por snort).

Primero nossituamos sobre el directorio sobre el cual vamos a hacer la descarga, asi:


# cd /var/www/

Luego procedemos a realizar la descarga, así:

# wget http://easynews.dl.sourceforge.net/sourceforge/secureideas/base-1.3.9.tar.gz

Ahora extraemos los archivos en este directorio, asi:

# tar zxvf base-1.3.9.tar.gz

ahora movemos los archivos de la carpeta base-1.3.9 a la carpeta base, así:

# mv base-1.3.9 base

Y ahora eliminamos los archivos de la descarga original, así:

# rm base-1.3.9.tar.gz // Borra los archivos de descarga

Ahora procedemos a copiar el archivo base_conf.php.dist bajo el nombre de base_conf.php (este archivo se encarga de la configuración del BASE), así:

# cp /var/www/base/base_conf.php.dist /var/www/base/base_conf.php

Ahora realizaremos la instalación de ADOBD (intermediario entre BASE y MySQL).


Primero nos situamos sobre el directorio en que vamos a hacer la descarga, asi:


# cd /var/www/base

Para descargamos el ADOBD, ejecutamos el siguiente comando:

# wget http://kent.dl.sourceforge.net/sourceforge/adodb\/adodb495a.tgz

Luego, extraemos los archivos en este directorio, asi:

# tar zxvf adodb495a.tgz

Ahora, borramos los archivos de la descarga, asi:

# rm adodb495a.tgz

Luego editamos estas líneas del archivo base_conf.php:

$Base_urlpath = '/base'
$Dblib_path = '/var/www/base/adodb/';
$alert_dbname = 'snort';
$alert_password = 'password de snort';


Luego, nos encargamos de instalar PEAR (framework diseñado para ser un conjunto de componentes visuales reutilizables en PHP), el cual se encarga de la parte visual (presentación) del BASE. Para ello, ejecutamos uno por uno los siguientes comandos:

# apt-get install php5-gd php-pear
# pear install Image_Color
# pear install Image_Canvas-alpha
# pear install Image_Graph-alpha

Para tomar los cambios realizados reiniciamos el servidor, ejecutando el comando:

# /etc/init.d/apache2 restart


Ahora, procedemos a ingresar a BASE; primero abrimos el explorador y tipeamos la dirección http://localhost/base y nos llevará a la siguiente página:






Luego, procedemos a dar clic sobre el link de “Setup page”, el cual nos llevara a otra página, en la que le damos clic en el botón “AG”, el cual, finalmente, nos llevará a una página en las que se nos indica que se ha terminado de crear la base de datos que snort utilizará para mostrar las alertas.





Ahora, siempre que ingresamos la URL http://localhost/base en el explorador, obtenendremos la interfaz principal del BASE, la cual nos permitirá visualizar las alertas generadas por el Snort de forma cómoda y muy organizada.


Instalación de servidor Web con certificado seguridad

Instalación de servidor Web con certificado seguridad

A continuación, explicaremos como asegurar un servidor web mediante el uso de certificados digitales.

Antes que nada, abrimos nuevamente la terminal y nos logeamos como "su" (super-usuario), mediante el siguiente comando:

# su


Y a continuación, ingresamos la contraseña correspondiente.

No obstante, primero necesitamos montar un servidor web en nuestra máquina virtual (para este caso, emplearemos un servidor Apache). Para instalarlo, ejecutamos el siguiente comando:

#apt-get install apache2

Luego necesitamos generar un certificado y para ello es necesario la firma de una entidad certificadora. Sin embargo, también es posible auto-firmar nuestros propios certificados, haciéndonos pasar por un una entidad certificadora.


Así que luego de instalar el servidor, ingresamos al directorio /etc/apache2 y creamos un directorio llamado certificados, luego al interior de éste creamos otras dos carpetas llamadas CA y Server, en donde iremos guardando las llaves y los certificados que vamos generando con openSSL tanto para la entidad certificadora como para el servidor.

Para instalar openSSL, ejecutamos siguente comando:

#apt-get install oppenssl

Posteriormente, lo primero que debemos hacer para crear estos certificados es generar un llave privada, tanto para la entidad certificadora como para el servidor, mediante la herramienta openSSL.

Luego, ingresamos al directorio /etc/apache2/certificados/CA y procedemos a generar nuestrar primera llave (correspondiente a la entidad certificadora), mediante el siguiente comando:

# oppenssl genrsa -des3 -out ca.key 2048

Y ahora ingresamos al directorio /etc/apache2/certificados/Server y procedemos a generar la llave correspondiente al servidor, mediante el siguiente comando:

# oppenssl genrsa -des3 -out server.key 1024


Ahora, procedemos a crear los certificados, tanto para la entidad certificadora como para el servidor.


Así, que ingresamos al directorio /etc/apache2/certificados/CA y ejecutamos el siguiente comando:

# openssl req -new -x509 -days 120 -key ca.key -out ca.crt

Ahora, ingresamos al directorio /etc/apache2/certificados/Server y ejecutamos el siguiente comando para generar una petición de certificado a partir de la llave creada anteriormente para nuestro servidor:
# openssl req -new -key server.key -out server.crs

Y ahora si generaremos un certificado digital a partir de la petición que acabamos de crear y utilizando la llave ca.key creada anteriormente, mediante el siguiente comando:

# openssl x509 -req -in server.crs -out server.crt -sha1 -CA ../CA/ca.crt -CAkey ../CA/ca.key -CAcreateserial -days 60


Ahora que tenemos nuestro certificado firmado por una "entidad certificadora", procedemos enotnces a confirgurar nuestro servidor web para que lo use.


Por lo general, los servidores web contienen sitios en un espacio virtual definido. Así que para probar nuestro servidor apache vamos a crear un sitio llamado ssl. En apache los sitios tienen asociados un archivo de configuración, asi que para crear el sitio y su archivo de configuración ingresamos al directorio /etc/apache2/mods-enabled y ejecutamos el siguiente comando:

# cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl


Con el cual, estamos creando la configuración de nuestro nuevo sitio basados en la configuración que tiene ya el apache, en un archivo llamado default y que se encuentra en el directorio /etc/apache2/mods-enabled. Ahora proseguimos a ingresar a éste directorio y ejecutamos el siguiente comando:


# ln -s /etc/apache2/sites-available/ssl /etc/apache2/sites-enabled/ssl

Con este comando lo que estamos haciendo es creando nuestro sitio web. Y ahora que se tiene creado un sitio , es hora de hacer las configuraciones necesarias para que se use el certificado digital.

Para esto ingresamos al directorio /ect/apache2/sites-enabled/ y abrimos el archivo default, lo modificamos y quedará de la siguiente manera:



Luego entramos a configurar nuestro sitio bajo https (puerto 443), para esto abrimos el archivo de configuración ssl que está ubicado en el mismo directorio, lo modificamos y quedará de la siguiente forma:



Posteriormente seguimos con la configuracion de puertos, para esto abrimos el archivo ports.conf que se encuentra dentro del directorio etc/apache2/ y verificamos que el archivo solo contenga la línea "Listen 80" (refiriéndose al puerto 80 del servidor); en caso de no existir la ingresamos y guardamos los cambios realizados.



De esta forma nuestro servidor web ha quedado asegurado. Y ahora, para verificar que las modificaciones sobre los archivos de configuración sean correctas, ejecutamos el siguiente comando:

# apache2ctl configtest

Finalmente, reiniciamos nuestro servidor web para que asuma los cambios hechos, ejecutando el siguiente comando:

# /etc/init.d/apache2 restart


Ahora trataremos de ingresar al localhost de nuestro servidor seguro (https://localhost), pero nos sacará un aviso como el siguiente:



Para poder ingresar, debemos aceptar el certificado que nosotros mismo creamos:

Luégo de aceptar nuestro certificado, el explorador nos llevará al index de nuestro http seguro:

Instalación y configuración del servicio de Firewall

Instalación y configuración del servicio de Firewall


Primero que todo, la práctica nos indica que tenemos que agregar la segunda IP 10.44.8.50 al servidor local; para ello, abrimos la terminal o línea de comandos y empleamos el siguiente comando:


# ifconfig eth0:1 10.44.8.50 netmask 255.0.0.0 up


Luego procedemos a instalar el servicio de Iptables (en caso de no tenerlo instalado), mediante el siguiente comando:

# apt-get install iptables


Luego, nos disponemos a borrar cualquier regla que pueda existir dentro de iptables, con el fin eliminar cualquier configuración previa, mediante el siguiente comando:

# iptables -F


Ahora que iptables no posee ninguna regla, nos disponemos entonces a registrar las reglas que han de cumplir las siguientes indicaciones:

1. El firewall debe permitir el acceso al puerto www de los siguientes servidores: 200.3.144.5, 200.3.144.42, 10.44.8.95, 10.44.8.120, localhost.

# iptables -A OUTPUT -d 200.3.144.5 -p TCP --dport www -j ACCEPT
# iptables -A OUTPUT -d 200.3.144.42 -p TCP --dport www -j ACCEPT
# iptables -A OUTPUT -d 10.44.8.95 -p TCP --dport www -j ACCEPT
# iptables -A OUTPUT -d 10.44.8.120 -p TCP --dport www -j ACCEPT
# iptables -A OUTPUT -d localhost -p TCP --dport www -j ACCEPT


2. Debe permitir el acceso a puerto 23 del servidor local desde localhost.

# iptables -A INPUT -s localhost -p TCP --dport 23 -j ACCEPT


3. Debe eliminar el acceso al puerto 23 desde cualquier otro host.

# iptables -A INPUT -s 0/0 -p TCP --dport 23 -j DROP


4. Debe permitir el acceso al puerto 22 del servidor local pero solo desde la red 10.44.8.0/24 unicamente.

# iptables -A INPUT -s 10.44.8.0/24 -p TCP --dport 22 -j ACCEPT
# iptables -A INPUT -s 0/0 -p TCP --dport 22 -j DROP


5. Debe permitir el acceso al servidor ftp local desde toda la red 10.44.0.0/16 solamente.

# iptables -A INPUT -s 10.44.0.0/16 -p TCP --dport 20:21 -j ACCEPT
# iptables -A INPUT -s 0/0 -p TCP --dport 20:21 -j DROP
Añadir imagen

Para observar las reglas que se han insertado empleamos el siguiente comando:

# iptables -L

Añadir imagen


Posteriormente, para comprobar el correcto funcionamiento de las reglas que hemos creado, empleamos nmap para cerciorarnos del estado de los puertos en cuestión, así:

# nmap -sT localhost


Para guardar las reglas activas (las que hemos ido poniendo hasta ahora) ejecutamos el siguiente comando:

# iptables-save > /etc/iptables.up.rules

Y ahora necesitamos que esta configuración se cargue automáticamente al iniciar el sistema. Para ello, editamos el fichero /etc/network/interfaces para que la entrada de la interfaz de red eth0 quede así:

auto eth0
iface eth0 inet dhcp

auto eth0:1
iface eth0:1 inet static
address 10.44.8.50
netmask 255.0.0.0


pre-up iptables-restore < /etc/iptables.up.rules


Guardamos y listo.