30 agosto 2011

Nueva revisión de Amispammer

Aprovechando los últimos días de vacaciones de verano, me dispuse a tachar de mi lista de "To Do" una de las cosas que tenía pendientes hacía bastante tiempo: una nueva revisión de la herramienta Am I Spammer.

Esta herramienta, que hemos presentado hace tiempo en Security by Default, y que está incluida en varias distribuciones Linux como Debian y Ubuntu, ayuda a identificar si una dirección IP, o todas las que pertenecen a registros MX de un dominio, aparecen en una o varias listas negras de reputación. De esta manera, amispammer permite alertar a los administradores de sistemas de que el tráfico de correo electrónico desde esa(s) IPs presentará un servicio degradado al aparecer en alguna de estas listas negras, que los servidores de correo, relays o sistemas antispam con los que interactúen, marcarán como maliciosas antes de recibir/enviar sus correos.

Fue precisamente a la hora de paquetizar la herramienta en Debian, cuando se me hicieron varias sugerencias respecto a posibles mejoras a tener en cuenta. Así pues, la lista de cambios realizados a amispammer en esta ocasión han sido:

  • Utilizar Getopt::Std en vez de "getopt.pl", puesto que esta última librería se mantiene en Perl únicamente por compatibilidad con Perl 4 y actualmente se encuentra sin mantenimiento.
  • Cuando se ejecuta amispammer, por defecto se generan muchos hilos simultáneamente y en algunas versiones de Linux, durante un momento puntual, consume excesivos recursos de sistema. Convendría reducir la prioridad del proceso para mitigar ese consumo excesivo de recursos de la máquina que lo ejecuta. Para ello, en vez de utilizar "renice" como comando de sistema operativo (para entornos UNIX únicamente), ahora utilizo "setpriority" del proceso como función nativa de perl, haciendo extensible esta funcionalidad cuando amispammer se ejecuta en entornos Windows igualmente.
  • Si se ejecutaba amispammer sin parámetros, se entiende que la dirección IP a analizar es la propia IP pública desde la que se está ejecutando amispammer. Para identificar dicha dirección, anteriormente se hacía web-scraping mediante una consulta web a www.cualesmiip.es. En una versión posterior, se utilizaba http://checkip.dyndns.org. Así, se parseaba el resultado que devolvía la petición web y se obtenía la IP pública. Sin embargo, aunque parecía que el diseño de cualesmiip.es y/o el de checkip.dyndns.org nunca en la vida iba a cambiar, en ambas ocasiones, la función auto_get_ip dejó de funcionar gracias a que la ley de Murphy se aplicó en el formato de ambas webs. Así pues, en esta última revisión se utiliza el módulo perl Net::Address::IP::Local, que provee la IP pública de la máquina, sin apoyarse en cualesmiip.es ni checkip.dyndns.com, corrigiendo así este bug. 

La nueva versión de amispammer para Debian deberá esperar unos días hasta que sea aceptada, probada y actualizada. Avisaremos por el twitter de @secbydefault y actualizaré este post cuando la nueva versión esté disponible en Debian y Ubuntu de forma paquetizada. No obstante, esta nueva versión puede ser descargada del repositorio de herramientas de SbD y/o de la página del proyecto.
    Como siempre, si tenéis nuevas sugerencias con nuevas fucnionalidades o fuentes para añadir a amispammer, soy todo oídos!

    1 comments :

    Mines dijo...

    Interesante; siempre he recurrido a servicios de terceros como rblmon.com