Sinfonier

Sinfonier, la comunidad para desarrolladores de seguridad informática

En un mundo donde cada día existe más información es complicado estar al tanto de todo lo que sucede. En el campo de la seguridad informático, la situación no es diferente. Sinfonier busca ser la solución a este problema.

Desde hace unos años la información catalogada como OSINT (Open Source Intelligence) y Open Data ha ido creciendo de forma exponencial. De igual manera el trabajo para procesar dicha información se ha multiplicado.

Dentro del contexto actual existen dos grandes retos. Por un lado, adecuar los sistemas y soluciones actuales, para soportar el volumen de información, y por otro, dar soporte de “tiempo-real” al procesamiento de la información que se recolecta desde las diferentes fuentes. En Telefónica han estado trabajando para solucionar ambas problemáticas y el resultado ha sido Sinfonier, que nace en un contexto relacionado con la ciberseguridad pero que no se limita solamente a un ámbito específico.

Sinfonier intenta hacer frente a la segunda problemática poniendo a disposición de los usuarios un framework de tiempo real como es Apache-STORM  pero con un interfaz gráfico intuitivo, una capa de abstracción para facilitar el desarrollo de nuevas funcionalidades y la gestión del cluster y una comunidad abierta y colaborativa.

Sinfonier soporta el modelado de algoritmos (Apache Storm trabaja con diagramas DAG – directed acyclic graph -) y la creación de piezas de software (los módulos que hacen posible la creación de los algorimos) para el procesamiento y recolección de información de forma sencilla y pudiendo utilizar varios lenguajes de programación (inicialmente Java y Python, pero en un futuro lenguajes como Ruby y Node.js se irán incorporando).

¿Cómo funciona Sinfonier?

Apache Storm

Para saber cómo funciona Sinfonier es necesario primero conocer su corazón. Sinfonier utiliza un framework de procesamiento en tiempo real creado por Nathan Marz, el que fuera ingeniero jefe de procesamiento de datos en Twitter. Utilizado por Twitter y otras muchas compañías en sus sistemas de procesamiento, Apache- STORM es un sistema de procesamiento que forma parte del proyecto Apache y que se está consolidando como referencia.

Apache-STORM provee de un sistema de procesamiento en tiempo real modular que permite desarrollar diferentes piezas de software que interactúan entre ellas. Está enfocado al procesamiento de flujos de datos continuos.

Basa su funcionamiento en “topologías”, que no son más que algoritmos para el procesamiento de flujos de información (diagramas DAG – directed acyclic graph -).

El “editor” de Sinfonier

Sinfonier permite el modelado de topologías de forma sencilla. Con un editor fácil de utilizar con filosofía “drag and drop permite crear topologías utilizando los módulos seleccionados por el usuario de los disponibles en la comunidad.

editor sinfonier

Se puede observar que Sinfonier incluye un elemento más a las topologías definidas por Apache-STORM. Además de los Spouts (elementos que recuperan la información que va a ser procesada) y los Bolts (elementos que transforman la información que viene desde los spouts o de otrs bolts) Sinfonier incluye un nuevo elemento que hemos llamado Drains.

Los Drains no son más que Bolts encargados de enviar la información procesada de un servicio externos a Sinfonier para almacenar, generar una alarma o simplemente mostrarla en una consola. Esto es necesario porque Sinfonier es un sistema que no almacena información, solamente la procesa. Por ello es necesario apoyarse en un servicio externo para que haga esta tarea, por ejemplo una simple base de datos.

Una vez que hemos visto lo sencillo que es crear una topología es el momento de crear los módulos que hacen posible la creación de las mismas

Para esto Sinfonier provee un interfaz que minimiza el código necesario para el desarrollo de los módulos y abstrae al desarrollador de la gestión de la estructura de datos encargada de transportar los datos durante el procesamiento en Apache-STORM.

Los datos

Sinfonier hace uso de una estructura de datos JSON para modelar cada uno de los elementos procesados. Añadiendo, eliminando o modificando la estructura en cada transformación.

Para crear un módulo es necesario realizar dos pasos: dar de alta el módulo y referenciar el código fuente del mismo. En este caso Sinfonier utiliza el servicio de Gist de Github porque además de permitir mantener un control de versiones y soportar comentarios sobre el código nos aseguramos que el código de los módulos creados sea libre y esté disponible para la comunidad.

Para cada uno de los tipos de módulos el proceso es similar, solamente cambian los métodos y algunas operaciones sobre el JSON que se está procesando. Sinfonier actualmente soporte Java y Python y tienen en roadmap utilizar Ruby y NodeJS.

Una vez el módulo está validado lo tendremos disponible para ser utilizado por cualquier usuario de la comunidad. Buscar módulos es sencillo:

modulos Sinfonier

La Comunidad

El resultado de Sinfonier es una comunidad de conocimiento y cooperación donde el trabajo puede ser reutilizado y los esfuerzos puestos en mejorar el procesamiento y recolección de la nueva información que se va generando.

Desde investigadores sin conocimientos de programación y desarrolladores con amplia experiencia programando hasta medianas y grandes empresas pueden utilizar Sinfonier como herramienta para el procesamiento y enriquecimiento de información con el objetivo de conseguir crear nueva información integrando Sinfonier en su proceso de inteligencia.

Sinfonier pone a disposición de sus usuarios la capacidad para recolectar información desde multitud de fuentes, procesarla y enriquecerla de forma dinámica y continua. Son los usuarios los que tendrán que proveer de contenido los algoritmos en forma de topologías y sacar el máximo partido a dicha información.

Meetup & Hackatones

Si te interesa Sinfonier y quieres saber mejor cómo funciona, tienes la posibilidad de participar en nuestro primer MeetUP que se celebrará el día 10 de diciembre en Madrid.

Por otro lado, entre los días 5, 6 y 7 de diciembre tendrán lugar dentro del evento de INCIBE “Cybercamp” diferentes retos que iremos proponiendo para todos los interesados. Si quieres participar y crear desde una tipología a un módulo concreto puedes apuntarte a través de su página web.

Sobre el autor

RELACIONADOS