jueves, 18 de febrero de 2010

Instalacion de Snort en Centos.

Snort se trata de un NIDS (Network Intrusion Detection System) basado en reglas para su funcionamiento. Vamos a ver como instalarlo con las reglas libres (BSD) de Emerging Threads un interfaz web (BASE: Basic Analysis and Security Engine)

Primero de todo deberemos instalar Snort con las reglas de Emerging Threads:

cd /usr/local/src

wget http://dl.snort.org/snort-current/snort-2.8.5.1.tar.gz
tar xzf snort-2.8.5.1.tar.gz
cd snort-2.8.5.1
wget http://www.emergingthreats.net/rules/emerging.rules.tar.gz
tar xzf emerging.rules.tar.gz
./configure --prefix=/usr/local/ --exec-prefix=/usr/local/ --enable-dynamicplugin --with-mysql
make all install

Copiamos los ficheros de configuración:

mkdir -p /usr/local/etc/snort/rules

mkdir -p /var/log/snort
cp -pr /usr/local/src/snort-2.8.5.1/rules/* /usr/local/etc/snort/rules/
cp -pr /usr/local/src/snort-2.8.5.1/etc/* /usr/local/etc/snort/

A continuación deberemos crear la base de datos MySQL y un usuario para acceder a ella:

mysql> create database snort;

Query OK, 1 row affected (0.00 sec)

mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, ALTER, EXECUTE, CREATE ROUTINE, ALTER ROUTINE, USAGE on snort.* to snort@localhost identified by 'snortsecret';
Query OK, 0 rows affected (0.02 sec)

Dentro de schemas del código fuente de Snort encontraremos las definiciones de las tablas para importarlas a la nueva base de datos:

cd /usr/local/src/snort-2.8.5.1/schemas/

cat create_mysql | mysql snort -u root -p

A continuación deberemos configurar Snort:

cd /usr/local/etc/snort/

sed 's@^\(include.*rules\)$@#\1@' -i /usr/local/etc/snort/snort.conf

Seguiremos editando el fichero snort.conf y modificando los siguientes parámetros:

  • Primero de todo deberemos definir cuales son nuestras redes:
    var HOME_NET [192.168.1.0/32,10.0.0.0/8]
    
  • Definiremos las redes externas como las no incluidas en HOME_NET
    var EXTERNAL_NET !$HOME_NET
    
  • Seguimos definiendo la ruta relativa donde se encuentran las reglas:
    var RULE_PATH rules
    
  • Mediante output definimos donde se almacenan los logs. Para usar MySQL deberemos especificar todos los datos:
    output database: log, mysql, user=snort password=snortsecret dbname=snort host=localhost
    
  • Deberemos añadir la siguiente linea para incluir las reglas de Emerging Threads
    include $RULE_PATH/emerging.conf
    

Para la instalación de la interfaz web BASE deberemos primero de todos instalar adoDB:

mkdir /var/www/admin/snortbase/htdocs -p

mkdir /var/www/admin/snortbase/logs -p
mkdir /var/www/admin/adodb -p
cd /var/www/admin/adodb
wget http://downloads.sourceforge.net/project/adodb/adodb-php5-only/adodb-510-for-php5/adodb510.tgz?use_mirror=ovh
tar xzf adodb510.tgz
mv adodb5/* .
rmdir adodb5

Seguimos instalando BASE:

cd /var/www/admin/snortbase/htdocs

wget http://downloads.sourceforge.net/project/secureideas/BASE/base-1.4.4/base-1.4.4.tar.gz?use_mirror=ovh
tar xzf base-1.4.4.tar.gz
mv base-1.4.4/* .
rmdir base-1.4.4
chmod 757 /var/www/admin/snortbase/htdocs/

A continuación deberemos configurar el VirtualHost en el servidor web. Por ejemplo, en Apache sería:



ServerAdmin webmaster@dummy-host.systemadmin.es
DocumentRoot "/var/www/admin/snortbase/htdocs"
ServerName snort.systemadmin.es
DirectoryIndex index.php

AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript application/x-javascript application/x-httpd-php application/rss+xml application/atom_xml text/javascript


Options FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all


ErrorLog "| /usr/local/sbin/cronolog -S /var/www/admin/snortbase/logs/current.error.log /var/www/admin/snortbase/logs/%Y/%m/%d/error.log"
CustomLog "| /usr/local/sbin/cronolog -S /var/www/admin/snortbase/logs/current.custom.log /var/www/admin/snortbase/logs/%Y/%m/%d/custom.log" combined


A continuación deberemos acceder mediante el navegador para seguir con la instalación de BASE:

Inicio de la instalación de BASE

Inicio de la instalación de BASE

Seguimos seleccionando lenguaje e indicando el path para adoDB:

Selección de idioma y path de adoDB

Selección de idioma y path de adoDB

Seguimos con la configuración de la base de datos:

Configuración de MySQL para BASE

Configuración de MySQL para BASE

Seguimos configurando, opcionalmente, un usuario para acceder a la aplicación una vez instalada:

Configuración de la autenticación

Configuración de la autenticación

A continuación creará las tablas para BASE:

Creación de las tablas para BASE

Creación de las tablas para BASE

Una vez las tablas estén creadas nos mostrará el siguiente mensaje:

Mensaje de creación de las tablas

Mensaje de creación de las tablas

Finalmente nos va a pedir el usuario y contraseña que hemos definido anteriormente para acceder al sistema por primera vez:

Autenticación de BASE

Autenticación de BASE

Y a continuación ya podremos acceder por primera vez al sistema, aún sin datos:

BASE recién instalado, sin datos aún

BASE recién instalado, sin datos aún

Para la realización de gráficos deberemos instalar los siguientes módulos de PEAR:

pear install Image_Color

pear install Image_Canvas-alpha
pear install Image_Graph-alpha

Finalmente podemos arrancar Snort mediante las daemontools:

mkdir -p /usr/local/supervise/snort

cat > /usr/local/supervise/snort </dev/null
EOF
chmod +x /usr/local/supervise/snort/run
ln -s /usr/local/supervise/snort /service/

Con el Snort levantado podremos ver como van apareciendo alertas en el BASE:

BASE con alertas

BASE con alertas

1 comentario:

  1. Es bastante feo no indicar la fuente y encima hacer hotlinking de las imágenes.

    Por favor, indica la fuente al principio y las imágenes o las quitas o las sirves desde un servidor tuyo.

    Muchas gracias

    ResponderEliminar