jump to navigation

IDS con Snort sobre CentOS 5 27 octubre, 2009

Posted by Fredy Ruiz Ondre in IDS.
trackback

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

Anuncios

Comentarios»

1. alejandro - 5 junio, 2010

hola,necesito ayuda porfavor,quiero hacer este proyecto,ya que es una prueba en mi colegio,lo malo es que no entiendo casi nada de los comandos,mejor dicho nada,lo que he tratado de hacer es muy pco,e miradoe este manual,y he llegado hasta cuando ahy que descargar snort y las reglas,yo me registre para descargarlas y pude,pero desde el terminal de centos 5 no puedo descargarlas,como puedo solucionar esto,o si me puedes explicar con mas detalles es urgente esta ayuda…PORFAVORRRR

2. Fredy Ruiz Ondre - 7 junio, 2010

Hola que tal, mira desde la consola del GNU/Linux no podras descargar directamente las reglas. Imagino que estas tratando de descargarlos de la siguiente manera:
wget url …
Descargalo via web ya sea que estes en windows o GNU/Linux y luego lo pasas con winscp o scp respectivamente

alejandro - 10 junio, 2010

Ola sabes,e hecho casi todo,solo cuando me meto al navegador no me carga nada,no muestra nada,yo no entiendo nada de linux,con suerte como crear una carpeta,asi que eso de scp no se que es?,te dio mi mail para que hablemos o mandame tu msn para mayor rapidez,ojala que me puedas ayudar,tengo muy poco tiempo,porfa ayudame… mail: alejandro.n.92 arroba gmail.com
o mi msn janostreet arroba live.cl…AYUDAME PORFA..

3. Fredy Ruiz Ondre - 10 junio, 2010

Alejandro,

Haber dime en que parte te has quedado. Me dices que cuando entras al navegador no te carga nada?. Esta activo el servicio httpd? si esta activo verifica que el firewall este desactivado o en todo caso que permita la conexion por el puerto 80.

alejandro - 11 junio, 2010

1.Al momento de compilar snort con el comando ” ./configure –with-mysql –enable-dynamicplugin” me sale un error,si lo hago asi: ” ./configure –with-mysql” me acepta,pero esta bien? o como se soluciona ese error?

2.Al momento de llegar al ultimo paso de la configuracion del mysql me dan un error: traducido “Error de sintaxis de SQL”,como lo soluciono?

3.En que partes solo debo poner contraseña o lo dejo tal cual esta escrito ej.”contraseña” lo cambio o no,y para los otros parametros tambien los cambios o no ej:”local@host”,me puedes indicar cuales son lo que debo cambiar y que debo Poner y que significa?

4.Que ip pongo en el navegador para entrar a base?,Si yo pongo la red :”HOME_NET 192.168.0.0/24″?

5.Como hago para que funcione snort y me lanze una alerta a modo de prueba?

6.Como hago que snort tambien funcione como IPS y IDS a la vez?

7.Hasta que parte del tutorial debo llegar para instalar snort solamente y que me de los resultados en la consola y que me lanze alertas y funcione como IPS/IDS a la vez?

4. alejandro - 11 junio, 2010

8.Al momento de instalar los paquetes necesario por yum,los instala todos correctamentes a exepcion de unos creo,en una parte de la lista dice en negrita “No package mysqlclient10 available” que significa eso? y como lo soluciono?

5. Fredy Ruiz Ondre - 16 junio, 2010

Haber:
Debes ejecutar
# ./configure –with-mysql –enable-dynamicplugin

Si en esta parte te sale un error enviame que error te sale

La ultima parte del MySQL es esta
mysql> grant all privileges on snort.* to snort@localhost identified by ‘contraseña’;

Doc la sintaxis esta bien, aquí le damos privilegios al usuario snort controlar la base de datos snort mediante una clave, que en este caso a modo de ejemplo puse contraseña. Evidentemente aqui puedes ponerle la clave que tu quieras.

La IP que debes poner en tu navegador obviamente es la IP de la maquina donde estas instalando el IDS. En este caso tu red es 192.168.0.0/24, entonces lo normal seria que la IP de tu IDS sea la 192.168.0.1 y esta IP sea el Gateway de tu LAN. De esta manera todo el trafico pasaria a traves del IDS para ser analizada.

Para que snort te lanze una alerta pues activa el snort, por ejemplo de esta manera
# snort -D -c /etc/snort/snort.conf -i ethx
Donde: ethx es la interfaz de red por donde quieres analizar el trafico.
Luego de esto por ejemplo has un escaneo de puertos a la IP del IDS, claro para esto antes debes ingresar al archivo snort.conf y habilitar la deteccion de escaneos.

Para tener un IPS podrias usar snort_inline y con iptables pones en cola el paquete para que el snort_inline lo analice luego. Aqui te envio algunos enlaces para mas detalle.
http://openmaniak.com/inline_final.php
http://seclab.pl/pdf/Snort-Inline_and_IPTABLES.pdf

El paquete que falta eran para versiones de CentOS 4, se me paso quitarle para el 5.

6. alejandro - 16 junio, 2010

este es el error al compilar snort “checking build system type… Invalid configuration `–with-mysql’: machine `–with’ not recognized
configure: error: /bin/sh ./config.sub –with-mysql failed”

7. alejandro - 16 junio, 2010

Sabes hice una alerta en la cual si me meto a google el snort me avisa en la consola…pero al ver mi navegador BASE no me muestra nada,nisiquiera se mueven las barritas…que puede estar mal?

Y sobre lo de que como snort se puede usar como IPS me podrias dar los pasos a seguir porfavor,te lo agradeceria mucho,ya que los enlaces que me diste no los entiendo para nada,porfavor,ya que estes bien y dios te bendiga,adios

8. Fredy Ruiz Ondre - 16 junio, 2010

En cuanto al error que te sale debe ser porque esta mal escrito las opciones, lo que pasa cuando se hace un copy y paste a veces no lo hace completamente. Haber no copies y pegues, mejor editalo.

# ./configure – -with-mysql – -enable-dynamicplugin

las opciones deben tener dos guiones seguidos, puedes ver las demás opciones ejecutando

# ./configure – -help

En cuanto a las alertas que te salen en la consola y que no están en BASE es porque no se están almacenando en la base de datos, vuelve a compilar el snort con la opción de mysql

En cuanto la IPS, ok voy a montar el sistema y estaré subiendo los pasos.

9. alejandro - 18 junio, 2010

Pongo esto y me sale este error:

mysql> grant all privileges on snort.* to snort@localhost identified by ‘5473327’;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘‘5473327’’ at line 1

Lo de la compilacion de snort ya me funciono..

10. alejandro - 18 junio, 2010

Lo e puesto sin comillas y con comillas..y no me resulta

11. alejandro - 18 junio, 2010

Al iniciar snort me sali este error:

–== Initializing Snort ==–
Initializing Output Plugins!
Initializing Preprocessors!
Initializing Plug-ins!
Parsing Rules file “/etc/snort/snort.conf”
PortVar ‘HTTP_PORTS’ defined : [ 80 2301 3128 7777 7779 8000 8008 8028 8080 8180 8888 9999 ]
PortVar ‘SHELLCODE_PORTS’ defined : [ 0:79 81:65535 ]
PortVar ‘ORACLE_PORTS’ defined : [ 1521 ]
Detection:
Search-Method = AC-BNFA-Q
Tagged Packet Limit: 256
Loading dynamic engine /usr/local/lib/snort_dynamicengine/libsf_engine.so… done
Loading all dynamic preprocessor libs from /usr/local/lib/snort_dynamicpreprocessor/…
Loading dynamic preprocessor library /usr/local/lib/snort_dynamicpreprocessor//libsf_ftptelnet_preproc.so… done
Loading dynamic preprocessor library /usr/local/lib/snort_dynamicpreprocessor//libsf_ssh_preproc.so… done
Loading dynamic preprocessor library /usr/local/lib/snort_dynamicpreprocessor//libsf_sdf_preproc.so… done
Loading dynamic preprocessor library /usr/local/lib/snort_dynamicpreprocessor//libsf_ssl_preproc.so… done
Loading dynamic preprocessor library /usr/local/lib/snort_dynamicpreprocessor//libsf_dns_preproc.so… done
Loading dynamic preprocessor library /usr/local/lib/snort_dynamicpreprocessor//libsf_dcerpc_preproc.so… done
Loading dynamic preprocessor library /usr/local/lib/snort_dynamicpreprocessor//libsf_smtp_preproc.so… done
Loading dynamic preprocessor library /usr/local/lib/snort_dynamicpreprocessor//libsf_dce2_preproc.so… done
Finished Loading all dynamic preprocessor libs from /usr/local/lib/snort_dynamicpreprocessor/
Log directory = /var/log/snort
database: ‘mysql’ support is not compiled into this build of snort

ERROR: If this build of snort was obtained as a binary distribution (e.g., rpm,
or Windows), then check for alternate builds that contains the necessary
‘mysql’ support.

If this build of snort was compiled by you, then re-run the
the ./configure script using the ‘–with-mysql’ switch.
For non-standard installations of a database, the ‘–with-mysql=DIR’
syntax may need to be used to specify the base directory of the DB install.

See the database documentation for cursory details (doc/README.database).
and the URL to the most recent database plugin documentation.
Fatal Error, Quitting..

Parece que no funciona el metodo tuyo…que puede ser…o estare haciendo algo malo yo…te he seguido en todo los pasos..

12. Fredy Ruiz Ondre - 18 junio, 2010

Si te muestra ese error es porque no has compilado el snort con soporte de MySQL.

–with-mysql –enable-dynamicplugin

Debes compilar el snort con soporte de base de datos, como minimo debes poder hacerlo con

–with-mysql

Salu2

13. alejandro - 19 junio, 2010

si lo he echo…pero no importa ya que me sirve igual sin eso y puede mostrandome la alerta en la terminal….LO ULTIMO QUE TE PIDO..es que me enseñez como puedo instalar snort_inline=IPS… para asi poder detener esa alerta…PORFAVOR…adios


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: