Instalando y Configurando Centro IDS / IPS con Prelude SIEM, Snort y Prewikka. Parte I

Seguimos viendo sistemas de detección de intrusiones (IDS/IPS). Ya hemos visto respecto a este tema: Snort, Suricata, Bro – IDS, Snorby, EasyIDS, etc.

En esta ocasion vamos a crear un centro de recolección de eventos basado en analizadores o sensores. Todo ello gestionado por Prelude, un IDS híbrido y distribuído que recolecta, correlaciona y analiza todos los eventos de sensores remotos IDS, sensores del sistema local, etc, es decir, analiza, monitoriza y correlaciona el tráfico de red y los eventos del sistema local. Los sensores pueden estar, como he dicho, ubicados en local, en hosts remotos o segmentos de red, además la comunicación con el manager Prelude se realiza de una forma segura.

prelude siem ids ips

En esta serie de artículos vamos a instalar un sistema completo Prelude, la interface web para la gestión de alertas Prewikka y vamos a configurar un sensor local snort, que previamente hemos configurado con soporte prelude para enviar los eventos a nuestro centro Prelude. Usaremos el correlator, instalaremos un notificador de eventos e, incluso, añadiremos sensores remotos.

En esta primera parte veremos que es Prelude, instalaremos los requisitos básicos,  instalaremos prelude manager, librerías, prelude-lml, prelude correlator, registraremos nuestro sensor prelude-lml e instalaremos el visor Prewikka para ver nuestras alertas.

pero antes que nada.

¿ Qué es prelude ?.

Resumimos un poco lo visto más arriba y seguimos viendo un poco más sobre Prelude.

Prelude recopila toda la información de los distintos sensores registrados y los envía al colector o sistema centralizado de alertas. A su vez, estos datos son enviados a la base de datos, en nuestro caso mysql. Las alertas son ordenadas, correlacionadas (mediante el motor Prelude Correlator), gestionadas y mostradas a través de una interface web que es Prewikka.

También de le donomina al sistema Prelude “Security Information Management” (SIM) system

Como se recopila la información. Los sensores.

A través de las aplicaciones / sensores que deben hacer uso de las librerias libprelude que es como un Framework para el acceso a Prelude. También a través de los logs tales como los logs de Apache, syslog, etc. Incluso se puede desarrolar mediante, Python por ejemplo, sensores personalizados. Otro componente es libpreludedb que se encarga del acceso a la/s base de datos.

Como sensores podemos usar Snort (de forma nativa), Kernel…, auque Prelude tiene su propio sensor (Perelude-lml). Prelude-lml recopila información de logs de apache, Asterisk, OSSEC, dispositivos CISCO, VPN, Clamav, PAN, SQL Server, Oracle, OpenSSH, Norton, Sendmail, sudo, Squid, Postfix, Nagios, Honeytrap, diferentes logs del sistema y muchos etcéteras más.

La arquitectura básica de Prelude os lo muestra en este gráfico obtenido de la web de prelude.

arquitectura básica de prelude ids ips

Podemos programar nuestros propios ensores mediante Lua, Perl, Python como hemos comentado ya, C, etc. Siempre usando la interface API o Framework libprelude.

Instalación de Prelude IDS / IPS.

Bien, vamos al lio.

Como cualquier herramienta de este tipo, necesitamos unos prerequisitos:

Requisitos previos básicos.

alfon@preludeids:~$ sudo apt-get install apache2 php5 nbtscan  php5-mysql php5-gd libnet1 libnet1-dev libpcre3 libpcre3-dev autoconf libtool gcc-4.4 g++ automake gcc make flex bison nmap ruby libpcap-ruby

Ahora, si no lo teníamos, instalamos mysql. En mi caso, es suficiente con lo que hay en los repositorios:

sudo apt-get install mysql-server libmysqlclient16-dev

Ya sabeis… password de root, etc. Nos hará falta má adelante.

Libpcap.

wget http://www.tcpdump.org/release/libpcap-1.1.1.tar.gz
tar -zxf libpcap-1.1.1.tar.gz
cd libpcap-1.1.1
./configure –prefix=/usr –enable-shared
make
make install

Libdnet.

wget http://libdnet.googlecode.com/files/libdnet-1.12.tgz
tar -zxf libdnet-1.12.tgz
cd libdnet-1.12
./configure –prefix=/usr –enable-shared
make
make install

DAQ.

wget http://www.snort.org/dl/snort-current/daq-0.5.tar.gz
tar zxvf daq-0.5.tar.gz
cd daq-0.5
./configure
make
make install
ldconfig

Hasta aquí unos requisitos básicos que en muchos casos ya podemos tenerlo si hemos instalado Snort, BASE, etc.

Requisitos previos para Prelude.

Vamos por partes.

apt-get install libgnutls-dev python lua50 libprelude-dev libpreludedb-dev

A través de un gestor de paquetes yambién he instalado por que me hizo falta:

  • python-preludedb
  • python-prelude
  • libprelude-perl
  • libpreludedb-perl
  • prelude-correlator

Ahora instalamos Prelude-manager:

apt-get install prelude-manager

introducimos, cuando pregunte, la contraseña de root mysql y la contraseña para que prelude-manager se registre.. podemeos dejar en blanco esta última.

A continuación, después de unos segundos, nos saldrá algo aprecido a esto:

Created profile ‘prelude-manager’ with analyzerID ‘1048432883315243’.
Changed ‘prelude-manager’ ownership to UID:115 GID:124.
* prelude-manager disabled, please adjust the configuration to your needs
* and then set RUN to ‘yes’ in /etc/default/prelude-manager to enable it.

Esto significa que tenemos que editar /etc/default/prelude-manager y poner yes:

DAEMONUSER=prelude  # Users to run the daemons as.

RUN=yes   # set to yes to start the server in the init.d script.
# you need to register the “prelude-manager” profile
# before being able to start the manager automaticall

salvamos y ejecutamos prelude-manager:

sudo /usr/sbin/prelude-manager -d -P /var/run/prelude-manager.pid

Ahora vamos con el sensor Prelude-lml. Lo instalamos:

apt-get install prelude-lml

si dá algún tipo de error hacemos lo siguiente:

aptitude -y purge prelude-lml &>/home/en_micaso_alfon/prelude-lml-install_logfile && aptitude -y install prelude-lml &>>/home/en_micaso_alfon/prelude-lml-install_logfile

Iniciamos prelude-lml:

sudo /usr/bin/prelude-lml -d -q -P /var/run/prelude-lml.pid

Ahora tenemos que registrar el sensor prelude-lml.

Registro de prelude-lml.

Para ello vamos a usar dos terminales.

En una terminal (A) hacemos lo siguiente:

sudo prelude-admin registration-server prelude-manager

Saldrá algo así como:

The “30rp9yhy” password will be requested by “prelude-admin register”
in order to connect. Please remove the quotes before using it.

Generating 1024 bits Diffie-Hellman key for anonymous authentication…
Waiting for peers install request on 0.0.0.0:5553…

En una terminal (B) hacemos:

sudo prelude-admin register “prelude-lml” “idmef:w” 127.0.0.1 –uid 0 –gid 0

Nos saldrá algo parecido a esto:

You now need to start “prelude-admin” registration-server on 127.0.0.1:
example: “prelude-admin registration-server prelude-manager”

Enter the one-shot password provided on 127.0.0.1: (aquí ponemos 30rp9yhy)
Confirm the one-shot password provided on 127.0.0.1: (aquí  30rp9yhy)

Entonces….:

Connecting to registration server (127.0.0.1:5553)… Authentication succeeded.

En la Terminal (A) saldrá esto:

Connection from 127.0.0.1:57644…
Registration request for analyzerID=”3384001739145698” permission=”idmef:w”.
Approve registration? [y/n]: Approve registration? [y/n]: Approve registration? [y/n]:

“le decimos” yes para aprobar el registro.

Ya temenos registrado el sensor prelude-lml.

Lo comprobamos:

prelude admin listado desensores registrados

El AnalizerID es 3384001739145698ya está registrado.

NOTA: También aparece snort en mi instalación. Lo haremos en el própoximo capítulo.

Desde prelude-admin podemos gestionar, borrar, listar, crear, etc, todos nuestros sensores. Lo veremos más asdelante.

Instalación de Prewikka.

Ahora vamos a instalar la interface web Prewikka para visualizar y gestionar las alertas.

Nos hará falta un servidor web. En mi caso he usado Lighttpd. Así que lo descargamos e instalamos con apt-ger install por ejemplo.

Prewikka lo instalamos también con apt-get install prewikka.

Damos permisos a prewikka.conf:

sudo chmod 755 /etc/prewikka/prewikka.conf

Editamos el archivo de configuración de lighttpd /etc/lighttpd.conf  y añadimos los siguiente:

En server.modules añadimos la línea:

“mod_cgi”,

y al final del archivo de configuración:

$HTTP[“url”] =~ “^/prewikka” {
alias.url = (
“/prewikka/prewikka/images” => “/usr/share/prewikka/htdocs/im$
“/prewikka/prewikka/css” => “/usr/share/prewikka/htdocs/css”,
“/prewikka/prewikka/js” => “/usr/share/prewikka/htdocs/js”,

“/prewikka” => “/usr/share/prewikka/cgi-bin/prewikka.cgi”
)
cgi.assign = ( “.cgi” => “” )
}

reiniciamos ahora lighttpd:

/etc/init.d/lighttpd restart

En el navegador web:

http://localhost/prewikka/

Y ya temenos nuestro interface Prewikka mostrando las alertas.

Para entrar:

  • Login:admin
  • Password: admin

Más adelante lo cambiaremos, crearemos usuarios y modificaremos el lenguaje de la interface.

Una vez introducidos los datos (pinchar en la imagen para agrandar):

Interface GUI prewikka prelude

He marcado los distintos Sensores / analizadores (registrados, nativos y prelude-lml ) Aparece también snort que lo instalaremos y configuraremos con soporte para prelude en el próximo capítulo.

En el menú del izquierda Agentes, podemos ver los sernsores que hemos registrado anteriormente. Tambien snort:

agentes o sensores en prewikka prelude

Hasta aquí por hoy.

Próximo capítulo o Parte II.

En el próximo capítulo instalaremos snort con soporte para prelude. Registraremos snort en el sistem prelude y comprobaremos desde Prewikka como se visualizan las alertas Snort.

Hasta la próxima.

=================

Esta entrada fue publicada en OSSEC HIDS, Prelude IDS - IPS, Security Onion, Snort. Guarda el enlace permanente.

18 respuestas a Instalando y Configurando Centro IDS / IPS con Prelude SIEM, Snort y Prewikka. Parte I

  1. javcasta dijo:

    Buena pinta tiene este Prelude. ¿Como no he oido hablar de el hasta hoy? ( http://www.prelude-technologies.com/ )
    Tienen hasta versión para win32 ( http://www.prelude-technologies.com/download/releases/libprelude/libprelude-PreludeEasy-1.0.0.win32-py2.6.exe ) pasando por Debian, Fedora, Open y Free BSD,…, y como no paquetes para las distintas versiones de Ubuntu ( http://packages.ubuntu.com/search?keywords=prelude )
    Menudos curros te estas pegando en los post.
    🙂
    Salu2

  2. Alfon dijo:

    Gracias Javi. La versión W32 es para el Framework. El problema es que para usar Snort con el framework habría que compilar (snort) para un sistema win32 y es algo más complicado.
    Y si, la verdad es que me estoy dando unos buenos curros, además de alguna que otra hostia😉
    saludos,

  3. Mauricio dijo:

    Hola, eh seguido el tuto al pie de la letra, y me da un error interno del servidor
    500 – Internal Server Error
    O sea, no me entra a la pagina de prewikka
    Aquí coloco el archivo de conf del servidor web.

    server.modules = (
    “mod_alias”,
    “mod_compress”,
    “mod_cgi”
    )
    server.document-root = “/var/www/”
    server.upload-dirs = ( “/var/cache/lighttpd/uploads” )
    server.errorlog = “/var/log/lighttpd/error.log”
    index-file.names = ( “index.php”, “index.html”,
    “index.htm”, “default.htm”,
    “index.lighttpd.html” )
    static-file.exclude-extensions = ( “.php”, “.pl”, “.fcgi” )
    server.pid-file = “/var/run/lighttpd.pid”
    dir-listing.encoding = “utf-8”
    server.dir-listing = “enable”
    server.username = “www-data”
    server.groupname = “www-data”
    compress.cache-dir = “/var/cache/lighttpd/compress/”
    compress.filetype = (“text/plain”, “text/html”, “application/x-javascript”, “text/css”)
    include_shell “/usr/share/lighttpd/create-mime.assign.pl”
    include_shell “/usr/share/lighttpd/include-conf-enabled.pl”
    $HTTP[“url”] =~ “^/prewikka” {
    alias.url = (
    “/prewikka/prewikka/images” => “/usr/share/prewikka/htdocs/images”,
    “/prewikka/prewikka/css” => “/usr/share/prewikka/htdocs/css”,
    “/prewikka/prewikka/js” => “/usr/share/prewikka/htdocs/js”,
    “/prewikka” => “/usr/share/prewikka/cgi-bin/prewikka.cgi”
    )
    cgi.assign = ( “.cgi” => “” )
    }

  4. Alfon dijo:

    Hola Mauricio. Gracias por leerme.
    Respecto al del server error:
    – supongo que no tendrás un servicio apache activo?
    – Dime que te dice en /var/log/lighttpd/error.log aquí puede que esté la solución.
    – Este artículo en concreo los voy realizando a medida que instalo, etc. dicho lo cual me parece raro el error. POr eso revisa lo que te digo en los dos puntos anteriores.
    Por otroa parte la instalación de prewikka, ahora la tengo montada sobre apache2. Funciona mejor:
    Instalando y Configurando Centro IDS / IPS con Prelude SIEM, Snort y Prewikka. Parte 3
    Saludos,

  5. Mauricio dijo:

    Asi es Alfon, tengo Apache2 instalado, pero antes de activar el servicio Lighttpd desactive el servicio, pero me tira el error :S
    El log que me pides, arroja lo siguiente:

    2011-04-07 13:12:25: (log.c.166) server started
    2011-04-07 13:17:46: (server.c.1503) server stopped by UID = 0 PID = 20614
    2011-04-07 13:20:19: (log.c.166) server started
    2011-04-07 13:20:59: (server.c.1503) server stopped by UID = 0 PID = 21954
    2011-04-07 13:21:05: (log.c.166) server started
    2011-04-07 13:38:19: (server.c.1503) server stopped by UID = 0 PID = 29209
    2011-04-07 13:39:21: (log.c.166) server started
    2011-04-07 19:00:41: (server.c.1503) server stopped by UID = 0 PID = 23513

    GRacias por tu respuesta.
    pd: Voy a revisar la opcion que me colocas.

  6. Alfon dijo:

    Por el otro comenterio veoque lo estás intentando con apache. De todas formas aqui te dejo unos links donde habla sobre esto:
    http://project.lxcenter.org/issues/329
    http://redmine.lighttpd.net/issues/2243
    saludos,

  7. xuaku dijo:

    Hola.
    Siguiendo tu tutorial me encuentro con este error al intentar registrar prelude-lml:
    —-$ sudo prelude-admin register prelude-lml “idmef:w admin:r” 127.0.0.1 –uid 0 –gid 0
    could not parse permission: unknown permission type ‘“idmef’.—–

    Estoy usando ubuntu10.04.
    Puedes echar una mano, no encuentro nada por internet.
    Gracias.

  8. Delanuka dijo:

    Cambiale las comillas no copies y pegues y vas a ver que funciona.

  9. Borja dijo:

    Buenas Alfon,

    He seguido el manual y al acceder a prewikka, la base de datos parece estar mal instalada.
    me muestra el siguiente error: Table ‘prelude.Prewikka_Version’ doesn’t exist
    Al instalar prewikka no me pregunta donde quiero almacenar la base de datos y la crea como prewikka en mysql.

    Alguna solución?

    Supongo que volcando las tablas en prelude debería funcionar pero antes de tocar nada prefiero preguntar.

    Gracias.

  10. Giani dijo:

    Olá.
    instalei prewikka com apache2.
    Quando acesso a url http://localhost:80 carrega o prewikka com a seguinte mensagem de erro.
    Database error
    Access denied for user ‘prelude’@’localhost’ (using password: YES)
    Porém as senhas estão ok no file prewikka.conf

    Alguém poderia me ajudar neste erro? Obrigado!

  11. alex dijo:

    Antes que nada gracias por tu completo tutorial, pero tengo una precunta:
    En qué punto se crea el usuario (y la BD) prelude en mysql? porque no figura en mi base de datos y por supuesto, tengo errores cuando quiero acceder a prewikka.

  12. Pingback: Consulta Sobre IDS/IPS - HACK HiSPANO

  13. Niuskos dijo:

    Excelente tutorial he seguido los pasos que indicas sin embargo cuando ingreso al la url me dice The requested URL /prewikka/ was not found on this server. estoy usando Apache/2.2.22 puedes colaborarme. Gracias

  14. Pingback: Instalando y Configurando Centro IDS / IPS con Prelude SIEM, Snort y Prewikka. Parte 4. Sensor Suricata. | Seguridad y Redes

  15. Pingback: Instalando y Configurando Centro IDS / IPS con Prelude SIEM, Snort y Prewikka. Parte 2 | Seguridad y Redes

  16. Pingback: Instalando y Configurando Centro IDS / IPS con Prelude SIEM, Snort y Prewikka. Parte 3 | Seguridad y Redes

  17. anonimo dijo:

    En ubuntu 12.04 la libreria libmysqlclient16-dev se llama libmysqlclient-dev Saludos!

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