La historia de Pandora FMS

Un relato por Sancho Lerena

CEO y founder de Pandora FMS

Corría el año 2001. Yo tenía veinticinco años y era un fanático de Linux.

Trabajaba en AOL Spain como técnico de producción en el departamento de comunicaciones y seguridad, aunque mi experiencia era sobre todo con firewalls Checkpoint, también aprendí mucho de networking puro con equipos de Cabletron y Cisco.

Mi trabajo en aquel entonces consistía en configurar y gestionar todo el entorno de red de producción. Era un CPD entero, con cientos de equipos Unix, Windows y equipos de red de alta gama. A pesar de que el equipo de operación utilizaba HPOpenview, era imposible tener una foto ni un «mapa» de todo.

Gracias a mi background en seguridad y en entornos Linux, me hice un hueco en el equipo por mi habilidad de explorar redes, entrar en sistemas y mapear lo que había de forma lógica.

Pandora FMS History

En esa época descubrí que no había ninguna herramienta decente para monitorizar entornos heterogéneos con una topología de red compleja

Gestioné varios pilotos de implantación de herramientas de recolección y centralización de eventos (SEM, SIEM). De esa experiencia aprendí mucho.

Utilicé mucho MRTG y elaboré scripts con RRDTool, con los que pintaba gráficas de los principales sistemas de comunicaciones (routers, equipos RAS de alta gama, conectividad entre VPN, firewalls, etc), cosas que OVO no hacía o no quería hacer ya que parecía complicadísimo hacer cualquier cambio.

Luego entré a trabajar en BBVA. Allí mis labores estaban más ligadas al mundo de la seguridad en sistemas y tomé contacto serio con AIX y Solaris. Las herramientas que se usaban para monitorizar de forma corporativa eran todas las de las Big4: tenían de todo, pero era un entorno muy fragmentado.

La división de departamentos estaba orientada a un binomio de sistemas o comunicaciones y cada equipo de trabajo estaba orientado de forma diferente, por lo que usaban herramientas diferentes y metodologías diferentes.

Desde seguridad, tampoco tenía acceso a ninguna de esas herramientas por lo que para monitorizar mis sistemas (Firewalls, IDS, entornos Unix, entornos Windows, etc) no me quedó mas remedio que explorar nuevas vías.

Me hice especialista en técnicas de firewall piercing que luego me sirvieron para entender cómo superar los problemas de topologías de red complejas, aplicándolos a lo que hoy son partes del diseño de la arquitectura de Pandora FMS.

Intenté implantar Nagios, pero la debilidad de sus agentes y lo rígido de su concepción de la monitorización no me encajaba. En esa época para nosotros era más importante obtener datos de rendimiento que no únicamente estados.

Necesitaba gráficas potentes y poder agregar datos de diferentes fuentes en informes. Era vital relacionar cosas y poder compararlas, establecer umbrales y generar alertas. Necesitaba también poder ejecutar pruebas complejas -ya que ningún entorno era estándar- y poder recoger información desde los sistemas.La gran mayoría de las veces no había acceso directo a la maquina que monitorizaba, así que tenia que instalar agentes que contactaran «a ciegas» conmigo u otro sistema intermedio.

Por mi experiencia en herramientas de colección de logs y eventos había visto que todos los sistemas basados en agentes se estrellaban debido a sus rígidos requisitos; basados en máquinas Java recientes o distribución de paquetes binarios. En muchos entornos de producción, era imposible actualizar versiones, instalar paquetes en el sistema o instalar cosas como superusuario. Nagios ni siquiera se acercaba a lo que necesitaba.

Desde entonces me volví a encontrar muchos sistemas con uptimes de varios años a los cuales nadie quería o podía meterles mano.

RRDTool approach

El padre de Pandora FMS:

ARENA

El primer concepto de software que integró nuestras necesidades lo llamamos «Arena» y era un entorno que recogía datos que enviaban unos precarios agentes escritos en KSH.

Esos datos ni siquiera estaban normalizados, se enviaban en texto claro separados por líneas punteadas «—-«. El servidor era un desarrollo en Perl que hizo un compañero del departamento de seguridad lógica (Juan H.) y el frontal en PHP que desarrollé yo fue mi primer código PHP.

Yo conocía algo de programación web de trabajos anteriores, aunque mi experiencia era muy escasa y con paradigmas muy antiguos (Programación en CGI en C y HTML rudimentario en servidores Netscape). También fue mi primer contacto con MySQL, ya que mi único background en bases de datos era Sybase.

El nacimiento de Pandora FMS

Las necesidades fueron creciendo y la arquitectura y diseño no cuadraban. Por otro lado mi compañero Juan H. se desvinculó del proyecto Arena y me planteé rehacerlo de cero con otro diseño. Ahí nació Pandora, a finales del año 2002.

Todavía era un hobby que rellenaba mis horas muertas, que en esa época eran muchas porque todavía no tenía hijos.

Con ayuda de un compañero (Sergio I.) hicimos el primer agente de Windows, basado en Windows Scripting Host y programado en VBScript. Sobra decir que no era ni la sombra de lo que sería años después, de hecho planteaba muchísimos problemas. Yo mismo desarrollé desde cero el servidor, usando Perl.

Nunca había hecho un proyecto serio con Perl, mi experiencia se limitaba a C y Turbo Pascal, donde sí había hecho cosas mas grandes.

Sin embargo, logré desarrollar en Pearl pequeños scripts, muy relacionados con auditoría de sistemas y herramientas de fuerza bruta, escaneo de redes y auditoría. Parte de algunos de esos códigos se integraron luego en Pandora como Goliat, el motor de transacciones sintéticas WEB. Aún así, mi experiencia con Perl en ese momento era bien escasa.

Poco a poco, y con la ayuda de algunos amigos fuimos creando algo, con una documentación para ir tirando, y fui enseñando el proyecto a compañeros de trabajo y conocidos que gracias a su feedback e ideas fueron dándole forma. Internamente, en el banco empezaba a ser una herramienta útil para tener una foto exacta de algunos sistemas de seguridad, sobre todo firewalls Checkpoint y entornos AIX.

El proyecto inicial se llamaba “Pandoramon”.

Es importante aclarar que el código de los agentes, la consola y el servidor partieron desde cero, nunca tomé nada prestado de proyectos como Nagios. Algunas personas han dudado de esto último y gracias a que todo el código está publicado desde el origen de los tiempos, se puede ver perfectamente que la arquitectura actual es heredera de esas primeras versiones de Pandora FMS.

Sancho Lerena

Pandora FMS como empresa

En 2002 había intentado montar una empresa basada en un software que habíamos desarrollado para tele vigilancia por internet para guardias (BabyCam), y en 2004 una empresa de consultoría de seguridad (Ip4All) pero ninguna llego a cuajar.

A mediados de 2005 me planteo vivir profesionalmente de Pandora, ofreciendo servicios de auditoría de redes, desarrollo a medida, instalaciones de software de seguridad, etc. En este punto todavía no existe el concepto de “versión Enterprise”. El modelo de negocio está basado en ofrecer servicios alrededor de dos productos base: Pandora y Babel. Babel era otro software con una filosofía similar, orientado al hardering de sistemas y cuadros de mando de seguridad.

Junto a David Villanueva –un antiguo compañero de trabajo-, decidimos montar Artica. Dejé mi estupendo trabajo como consultor senior especialista en el banco. A partir de este punto todo va cada vez más rápido, Ártica Soluciones Tecnológicas se funda oficialmente en Noviembre de 2005.

Los primeros inicios son duros, y Pandora no deja de ser una anécdota para mis primeros clientes. Me dedico a observar sus necesidades y aprender de los problemas reales en diferentes entornos, siempre ligado al mundo de la seguridad.

Una de las primeras cosas que hicimos fue renombrar el proyecto a Pandora. A finales de 2006 le añadimos la coletilla FMS ya que “Pandora” era excesivamente genérico.

Alguien nos dio un sabio consejo: Free Monitoring System era una manera muy mala de intentar vender (Free=Gratis), por ello para la F, escogimos la principal cualidad de Pandora y muy relacionada con el logo original (un pulpo): F de Flexible.

Los primeros años, Pandora tuvo un desarrollo muy lento, ya que no era un software como tal, sino un proyecto puramente “Free” que servía para introducirnos en proyectos de consultoría de seguridad. Conjuntamente desarrollábamos Babel Enterprise y no fue hasta principios de 2006 que ingresó el primer programador profesional en plantilla: Esteban Sánchez.

Él empezó a trabajar full-time en Pandora FMS. Durante los primeros años, Esteban y yo fuimos los primeros programadores, hasta que en Noviembre de 2007 se incorpora Ramon Novoa, que fue junto con Esteban, quienes empezaron a hacer de Pandora un producto de software de verdad. En esta época teníamos colaboraciones de diversas personas, una de las más importantes, Guruevi de Nueva York y otras personas de Sudamérica, Nueva Zelanda y Japón.

Como nota curiosa, todos los proyectos de software libre escogen un animal, el nuestro fue un pulpo. Puedes ver más información sobre la historia del logo en nuestro blog.

Data Pandora
Data Pandora

Pandora FMS hoy día

Según datos de openhub.net a fecha de Noviembre 2015, Pandora FMS tiene 11,000 commits hechos por más de 50 personas, con un total de 413,000 líneas de código desarrolladas en PHP, Javascript, Perl, C++, C, Shellscript y Java. En Sourceforge hay registrados aproximadamente un millón de descargas.

Han sido muchas versiones, parches y actualizaciones las que en los últimos 12 años han transformado lo que en sus orígenes era un proyecto de un simple técnico para resolver problemas técnicos. Gracias a la colaboración de decenas de programadores, técnicos de sistemas, usuarios y clientes, hoy día Pandora FMS es una herramienta profesional de monitorización y gestión de grandes entornos.

Como “Padre” de la criatura, sólo puedo decir: ¡Gracias a todos por traernos hasta aquí!

Timeline PandoraFMS

Resumen de versiones de Pandora FMS a lo largo de su historia

Null

Primera versión pública: Pandora v0.8.1 (Agosto 2004)

Hasta Agosto de 2004 no liberamos nuestra primera versión de forma pública, era la versión 0.8. En ese momento el equipo de desarrollo éramos tres personas: Yo, Sergio I. que llevaba parte del agente inicial VBScript para Windows y Raúl M. que ayudaba en diferentes tareas, no relacionadas con código.
En esta época, el proyecto se llamaba “Pandoramon” en Sourceforge (porque Pandora ya estaba cogido).

La primera versión incorporaba únicamente funcionalidades relativas a los agentes (no tenía monitorización remota de ningún tipo) y su interfaz era bastante básica por decir algo. Tampoco tenía ni eventos. Las gráficas eso sí, eran bastante decentes. El modelo de datos quizás es lo que menos cambios ha sufrido de todo aquello, ya que no queda ni rastro del código original.

Hasta la versión 1.0 no empezamos a usar CVS: un sistema de control de versiones. Puede chocar, pero el hecho es que ninguno de los que estábamos vinculados al proyecto veníamos del mundo de desarrollo, sino de redes y sistemas. El hecho es que en este punto el proyecto era totalmente “Amateur”.

Pandora v1.0 (Octubre 2004)

En esta versión “las cosas se estaban poniendo serias”. Esta versión incorpora sistema de ACL’s de usuarios.

Pandora v1.2 (Diciembre 2006)

Empezamos a usar Subversion para gestionar el código. Primera versión del agente en C++, desarrollada por Esteban S., se descarta el agente que teníamos en VBScript. Se incorpora la monitorización remota y recepción de traps SNMP.

Pandora v1.3 (Noviembre 2007)

Se incorporan informes, gráficas combinadas, recon server e informes personalizados. Plantillas de módulos y de máquinas, para el recon server. Hay un cambio visual importante, que hace que empiece a ser tomada “en serio”.

Pandora v2.x (2008-2009)

Creamos el protocolo Tentacle. Introducimos el export server. Tentacle (Un protocolo de transferencia de archivos propio con puerto asignado por IANA, 41121/tcp) supuso un antes y un después a la hora de facilitar la vida a la hora de instalar agentes.

En la versión 2.x se intentó hacer una versión del servidor en C pero no llegó a cuajar y continuamos trabajando en la de Perl. Visto con perspectiva, podemos decir que fue una gran decisión. El principal cuello de botella del servidor es la interacción SQL no las operaciones internas.

Pandora v3.x (2010-2011)

Primera versión “Enterprise”. Dispone de edición remota de configuraciones de los agentes, informes PDF y algunas otras funcionalidades. Tenemos clientes monitorizando entornos de unos 2000 agentes.

Pandora v5.x (2014-2015)

Pasamos a GIT el proyecto, desde SVN. Introducimos el Satellite server. Gracias al satélite logramos en algunos entornos específicos una tasa de 500 chequeos por segundo, una barbaridad y además de forma distribuida y sin conexión bidireccional, lo que llamamos “headless” monitoring.

Pandora v6.x (2016)

Introducimos el metadirectorio de agentes, control remoto de escritorio integrado (con Pandora RC), gestión remota de servidores y satélites, mejoras en los dashboard, monitorización dinámica y Mejoras en la monitorización predictiva.