jump to navigation

IDS con Snort sobre CentOS 5 27 octubre, 2009

Posted by Fredy Ruiz Ondre in IDS.
15 comments

Un IDS es un sistema de deteccion de intrusos, es decir este sistema analiza todo el trafico y las compara contra una base de datos (firmas de ataques ya conocidos) y si coinciden el sisetma muestra como una alerta, estas alertas pueden ser monitoreada desde una interfaz web, tambien se puede configurar para que envie un correo a una cuenta predefinida

Instalamos los paquetes necesarios

# yum -y install mysql mysql-bench mysql-server mysql-devel  php-mysql httpd gcc pcre-devel php-gd gd mod_ssl glib2-devel gcc-c++ bison flex php-pear

Iniciamos los servicios de la base de datos y del apache

# /etc/init.d/httpd start
# /etc/init.d/mysqld start
# chkconfig mysqld on
# chkconfig httpd on

Crearemos nuestro directorio donde pondremos todos los pquetes que vayamos a utilizar

# mkdir /opt/ids
# cd /opt/ids
# wget http://www.tcpdump.org/release/libpcap-1.0.0.tar.gz
# tar xfz libpcap-1.0.0.tar.gz
# cd libpcap-1.0.0
# ./configure
# make
# make install
# cd ..
# 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
# ./configure –with-mysql –enable-dynamicplugin
# make
# make install
Una ves instalado seguimos con los siguientes pasos

# groupadd snort
# useradd -g snort snort -s /sbin/nologin
# mkdir /etc/snort
# mkdir /etc/snort/rules
# mkdir /var/log/snort
# cp /opt/ids/snort-2.8.5.1/etc/* /etc/snort/.

Ahora vamos a descargas las reglas

Para descargas las reglas necesitamos tener nuestra cuenta en http://www.snort.org, una ves hecho esto nos logeamos
y nos bajamos las reglas, luego la pasamos a nuestro servidor, en mi caso las baje en /root de mi pc local

Ahora mediante scp lo paso al servidor

# scp snortrules-snapshot-CURRENT.tar.gz 172.16.0.1:/opt/ids/

Listo ahora nuevamente en el servidor, nos ubicamos en /opt/ids

# cd /opt/ids/
# tar xfz snortrules-snapshot-CURRENT.tar.gz
# cp rules/* /etc/snort/rules/

Ahora vamos a configurar nuestro snort

# cd /etc/snort/

En el archivo snort.conf modificamos algunos parametros, tales como poner nuestra red interna, en mi caso 172.16.0.0/24
ademas de ello modifcamos la ruta donde se encuentran las reglas

# vim snort.conf

var HOME_NET 172.16.0.0/24
var EXTERNAL_NET !$HOME_NET

var RULE_PATH /etc/snort/rules

Configuremos nuestra base de datos mysql para registrar todos los eventos del snort

# mysqladmin -u root password ‘supercontraseña’
# mysqladmin create snort -p
Enter password:
# cd /opt/ids/snort-2.8.5.1
# mysql -p snort < schemas/create_mysql
Enter password:
# mysql -p
Enter password:
mysql> grant all privileges on snort.* to snort@localhost identified by ‘contraseña’;

Ahora vamos a hacer que el snort registre todo en la base de datos mysql, para ello nuevamente editamos el snort.conf
descomentamos la linea de output database para que quede de la siguiente manera

# vim snort.conf

output database: log, mysql, user=snort password=contraseña dbname=snort sensor_name=LAN host=localhost

Hecho esto, vamos a configurar la interfaz web para monitorear el IDS

Nos ubicamos nuevamente en /opt/ids/

# cd /opt/ids/
# pear install –alldeps Image_Graph-alpha Image_Canvas-alpha Image_Color Numbers_Roman
# wget http://downloads.sourceforge.net/project/adodb/adodb-php5-only/adodb-509a-for-php5/adodb509a.tgz
# wget http://downloads.sourceforge.net/project/secureideas/BASE/base-1.4.4/base-1.4.4.tar.gz
# cd /var/www/
# tar xfz /opt/ids/adodb509a.tgz
# mv adodb5 adodb
# cd html/
# tar xfz /opt/ids/base-1.4.4.tar.gz
# mv base-1.4.4 base
# cd base/
# cp base_conf.php.dist base_conf.php
# vim base_conf.php

$BASE_urlpath = ‘/base’;

$DBlib_path = ‘/var/www/adodb/ ‘;

$DBtype = ‘mysql’;
$alert_dbname   = ‘snort’;
$alert_host     = ‘localhost’;
$alert_port     = ”;
$alert_user     = ‘snort’;
$alert_password = ‘contraseña’;

Ahora accedemos via web

http://172.16.0.1/base

le damos clic en Setup page, luego en create BASE AG finalmente en Man page

En caso quieres ver los graficos en “Graph alert data” y te sale el siguiente
error

Error loading the Graphing library:
Check your Pear::Image_Graph installation!

Entonces debes instalar de la siguiente manera

# pear install -f Image_Graph
# pear install -f Image_Canvas

Finalmente iniciamos el servicio de snort, yo suelo ejecutarlo de la siguiente manera:

# snort -D -c /etc/snort/snort.conf -i eth1

Donde:

  • eth1 es mi interfaz interna de mi servidor

Ahora finalizando la configuracion instalaremos oinkmaster para que las reglas se actuzalicen de manera automatica

# chown snort.snort /etc/snort/ -R
# cd /opt/ids
# wget http://prdownloads.sourceforge.net/oinkmaster/oinkmaster-2.0.tar.gz
# tar xzf oinkmaster-2.0.tar.gz
# cd oinkmaster-2.0
# cp oinkmaster.pl /usr/bin/
# cp contrib/makesidex.pl /usr/bin/
# cp oinkmaster.conf /etc/

Nos logeamos a http://www.snort.org y generamos nuestro codigo oinkmaster

# vim /etc/oinkmaster.conf

url = http://www.snort.org/pub-bin/oinkmaster.cgi/<oinkcode>/snortrules-snapshot-CURRENT.tar.gz

En lugar del <oinkcode> ponemos el codigo que generamos en la web de http://www.snort.org

Nos ubicamos en /etc y hacemos lo siguiente

# cd /etc/
# makesidex.pl /etc/snort/rules > autodisable.conf

Ahora ponemos en el cron lo siguiente, de esta manera se actualizara todos los
dias a las 23:59 horas

# crontab -u snort -e

59 23 * * * oinkmaster.pl -C /etc/oinkmaster.conf -C /etc/autodisable.conf -o /etc/snort/rules