viernes, diciembre 29, 2006

Conversores de configuraciones de firewalls (La historia de Object Filler)

Comencé a programar Object Filler casi por accidente en 2003. En aquel tiempo, como parte de mis actividades de ingeniería de pre-venta de Check Point, tres clientes de manera casi simultánea me pidieron migrar la configuración de sus equipos Cisco PIX a Check Point como parte de las pruebas que querían realizar (en producción, claro está) a la solución de firewall que en ese momento estaban por adquirir. Dado que en las 3 ocasiones el "experto" presente era yo, me tocó hace las migraciones a mí.

¡Qué dolor de dedos y qué dolor de cabeza!: Extraer las configuraciones, analizarlas, pasarlas a mano, probarlas y aplicarlas. Las primeras dos veces soporté mi calvario con la dignidad de un ingeniero resignado a su suerte. La tercera vez pensé que habría una manera de hacerlo mejor y mas rápido. Busqué en Internet (Google, Yahoo!, Webcrawler, Altavista - un Metacrawler manual pues) y nada. Pregunté entre otros colegas en Check Point y al parecer nadie a nivel mundial había tenido la idea de esa herramienta. Bueno, para ser justos, la gente de una compañía Solsoft había tenido la idea, pero era en gran escala y muy cara para cosas puntuales como lo que yo necesitaba. Así las cosas, y teniendo un pasado bastante obscuro como abogado del Software Libre y programador aficionado, pensé en hacer algo yo mismo.

Comencé primero programando un "secuenciador" de objetos: producir objetos (redes y hosts originalmente) de forma secuencial en un rango de direcciones IP definido. Elegí Lenguaje C para hacerlo mas bien por nostalgia. Y como producía solamente objetos en secuencia de "relleno", decidí llamarla "Object Filler". Inicialmente codifiqué las rutinas para probar si un texto era una IP, y dada una máscara de red decidir si pertenecía a un host, a una red o a un broadcast. Después fui añadiendo cosas. Justo ahora no recuerdo el orden exacto de cómo fue, pero comencé a añadir soporte a otros tipos de objeto (rangos, gateways), soporte alimentar la herramienta desde un archivo con formato predefinido (hosts, Comma Separated Values o CSV) hasta que finalmente dí el paso que me había motivado a escribir el código inicial: soportar como entrada al programa una configuración de Cisco PIX. De paso, ya que andaba en esas, decidí meter soporte a configuraciones de Netscreen.

Fiel a mis principios de que el conocimiento debe propagarse, decidí desde el inicio que la herramienta sería gratuita y estaría públicamente disponible. Desafortunadamente, mi contrato como empleado de Check Point dice que las creaciones que tenga mientas trabaje para Check Point, son de Check Point. Así pues, muy a mi pesar, no pude liberar el código al público. Sin embargo, al ser una herramienta no producida por Investigación y Desarrollo, no podía ser oficialmente soportada por la compañía. Pero en realidad, como era un juguete personal en ese momento, esto no me importaba. Quería que la herramienta fuera útil para mí y no tenía problema en compartirla con gente que también la encontrara útil. Punto.

Inicialmente no tenía dónde colgar (publicar) la herramienta, así que comencé por mandarla a gente conocida, colegas cercanos que creí la encontrarían útil. Así llegó a manos de Jeff Mousseau, en ese tiempo un ingeniero para Nokia en Canadá, a quien conocí por azares del destino mientras hacíamos un trabajo juntos. A Jeff le gustó la herramienta y me pidió autorización para colgarla en su sitio web http://www.digitalmigrations.com - en ese tiempo (por ahí de 2003/2004) muy famoso porque contenía documentos muy útiles de configuración de clusters de Nokia paso-a-paso y otras monerías bastante aprovechables por ingenieros de Check Point y de Nokia. Me sentí muy honrado por su petición y por supuesto accedí. Un par de años mas tarde, a raíz de que Jeff decide salir de Nokia, decide cerrar el sitio, lo cual dejó a la comunidad de seguridad en general sin un excelente sitio de información bastante útil. Y a mi herramienta la dejó sin casa.

Para ese entonces, y gracias a la popularidad del sitio, la herramienta era ya mas conocida y comenzaba a recibir uno que otro mensaje de correo electrónico agradeciéndome por la herramienta, haciendo consultas y también sugerencias. Así es que decidí crear Object Dumper, para poder vaciar la configuración de objetos a un formato CSV, mas fácil de leer y manipular.

Internamente, en ese entonces tenía un "padrino" de altas esferas en la compañía, quien me ayudó a obtener mucha información que de otro modo me hubiera sido muy difícil obtener por mi mismo. Gracias a Sharon Besser, pude conseguir comandos, estructuras de bases de datos y otras informaciones muy útiles.

Al quedar la herramienta sin casa, decidí buscarle alguna. Un ingeniero de Check Point Estados Unidos (Brian Linder) ofreció gentilmente un espacio en su sitio web para hospedar ahí a Object Filler - http://www.lindercentral.com/ofiller - también escribí (a sugerencia de algunos ingenieros de Check Point) a Dameon Welch-Abernathy, mejor conocido como PhoneBoy; quien era el propietario del popular www.phoneboy.com y hospedaba ahí la lista de preguntas frecuentes (FAQ) mas admirada, respetada y confiada de la comunidad Check Point. Dameon no dudó en decir que sí a mi solicitud de hospedar ahí las herramientas, y así quedó.

El tiempo avanza, pongo mas funcionalidad a las herramientas soportando nuevas operaciones, nuevos objetos y mejorando la documentación existente. La popularidad de las herramientas crece y no hay quien me ofrezca apoyo para pedir a Check Point que se de soporte oficial a las herramientas, inclusive de ingenieros dentro de la compañía, pero eso no puede suceder por varios motivos. Hay quien me sugiere hacerla shareware y cobrar por ella, pero aparte de que legalmente no podía por ser la compañía la propietaria legal de la herramienta, y no yo; pues no era posible. Tampoco quería: era una manera para mí de satisfacer mis ímpetus por crear algo y darle rienda a la creatividad en mis tiempos muertos o aburridos. Hay quien me escribe para solicitarme nueva funcionalidad, y cuando hay disponibilidad de la persona en cooperar para hacer pruebas y proporcionar información, yo encantado añado la funcionalidad a la herramienta. me escribe así gente de varios lados, enviándome muestras de configuración de otros firewalls para apoyarlos a convertir a Check Point. Así nace el soporte para Gauntlet, Sidewinder y Raptor. Así nace también la funcionalidad de añadir interfaces a varios tipos de objeto.

Phoneboy decide sacar su sitio del aire y moverlo al sitio del Grupo de Usuarios de Check Point (http://www.cpug.org) al cuidado de Barry Stiefel, lo cual me hace igual solicitarle permiso para seguir colgando las herramientas ahora de ese sitio, cosa a la que Barry igual accede. Pedro Paixao (mi amigo y Gerente de Ingeniería para Latinoamérica de Check Point, y por tanto mi jefe) me ofrece hospedar la herramienta igual en un sitio ex-profeso para la herramienta por sí, lo cual me gusta y acepto la propuesta. Así surge http://ofiller.chatscope.com y por primera vez la versión 2.2 de las herramientas, lanzada en Diciembre de 2005, pone a este sitio como el sitio principal para ellas.

El día de hoy, hace unos momentos solamente, he terminado de empaquetar la versión 2.4 de Object Filler y Object Dumper. Al día de hoy son la única herramienta que puede convertir de otros firewalls (de Cisco PIX a Check Point convierte políticas y objetos) a Check Point. Que permite descargar de SmartCenters y CMAs de Provider-1 configuraciones completas de objetos y reglas a texto, y reconstruirlas en el mismo u otro SmartCenter o CMA. La única que puede recuperar información de objetos de un gateway, para recobrar el SmartCenter en casos donde éste se ha dañado. Al tiempo, Cisco sacó a mediados de 2006 una herramienta llamada Cisco Security Conversion Tool (CSCT) para migrar de Check Point a Cisco, que es gratuita para sus socios certificados y no es tan completa (los release notes indican que hay varias cosas sin cubrir, como el caso de configuraciones complejas de NAT).Hay otra herramienta gratuita para migrar de Check Point a Juniper (http://www.sousa.se/pub/fw1_convert/) pero es compleja de usar y no es completa. De hecho, de acuerdo a un artículo de Network World de mayo de 2006, nadie tiene herramientas verdaderas para hacer esto y al parecer Solsoft es la única solución viable. Pero cara.

En fin, pocos competidores para mi herramienta, que por el precio que tiene (gratis) y la funcionalidad que tiene, me parece que es un producto ganador (como dirían los gringos, un Killer App). Nada mal ¿eh? - ¡Lástima que llegó muy tarde para mi proyecto de Plan Emprendedor en la Universidad! :-P

2 comentarios:

Jose Ramirez Agüero dijo...

Amigo, gracias por tantos estoa años de apoyo. Espero no dejes de hacer programitas asi que nos facilitan la vida. Un abrazo y suerte en tu nueva fase.

Martin Hoz dijo...

¡Mil gracias por el comentario Pepe!
Y no, no dejaré de hacer programas. FortiConverter ya está siendo trabajado... ;-) jejeje!

Un abrazote y gracias de nuevo.