SIPCheck2 vigila tu Asterisk en busca de atacantes
Hace exactamente 4 años, en Sinologic lanzamos una aplicación llamada SIPCheck que se encargaba de monitorizar el log de Asterisk y vigilar los intentos de conexión por parte de bots y atacantes para así, añadirlos al firewall y crear una lista de atacantes pública y utilizable por cualquiera, algo similar a lo que hace la aplicación fail2ban aunque más orientado a Asterisk y, al reportar las direcciones IP a una base de datos general que pueda ser consultada por todos, más social y útil.
Tras 4 años, el resultado ha sido realmente interesante: más de 4000 direcciones IP atacantes y más de 400 usuarios detectando ataques ha hecho que desde Sinologic nos planteásemos una mejora considerable: SIPCheck2
En esta nueva versión, desarrollada en Python, permite, no solo informar de cualquier atacante, si no también recibir la lista de los atacantes que dos o más usuarios hayan reportado, adelantándonos a los posibles ataques incluso antes de que se produzcan.
Se han añadido alguna mejoras como posibilidad de no detectar «falsos ataques» de direcciones IP y redes «conocidas» (clientes, red local, pruebas, etc.).
Cuando nuestro SIPCheck2 detecta un atacante, lo reporta al servidor y esa dirección IP queda almacenada en tu cuenta, de forma que queda baneada automaticamente en todos los sistemas que compartan dicha cuenta.
Si otros sistemas reportan también la misma IP atacante, esa dirección pasa a ser oficialmente un atacante y es reportada a todos los usuarios de SIPCheck con otras cuentas.
Otra de las novedades es que las direcciones IP atacantes caducan, desapareciendo al cabo del tiempo, ya que está demostrado que pertenecen a sistemas zombies que tienen fallos de seguridad y que con el tiempo son bloqueados o arreglados y no tiene sentido que permanezcan más tiempo en nuestro firewall.
Como variante, incluye un archivo de configuración desde el que se puede modificar algunos parámetros para adaptarlo mejor a nuestro sistema, añadir direcciones IP y redes nuestras para evitar falsos positivos y algunas mejoras más.
Por último, SIPCheck2 está completamente rediseñado desde cero y en Python, por lo que está más orientado a realizar mejoras e incorporar futuras novedades.
El código de SIPCheck2 ha sido puesto a disposición pública a través de la cuenta GitHub de Sinologic, por lo que cualquier persona pueda participar y contribuir si lo desea reportando problemas, mejoras y parches para bugs que se hayan detectado.
SIPCheck2 es compatible con Python 2.7 o superior, por lo que algunos sistemas CentOS o Elastix deberán instalar la versión 2.7 o superior en sus sistemas, y tener así dos versiones: Python 2.4 (con la que funcionan algunas herramientas del sistema) y Python 2.7 o superior. Nuestro colega Eloy Coto nos ayuda un poco indicándonos cómo se puede hacer: https://gist.github.com/eloycoto/9abceacffb9fea1195ea
Personalmente, si utilizáis la versión SIPCheck 1, os recomiendo que actualicéis a la versión 2, merece la pena: carga menos el sistema, es más rápido, más eficiente y más útil. Además hay varias personas colaborando en desarrollar esta versión, con lo que tiene mucho más mantenimiento y está más preparado para añadir mejoras.
Recuerda que una de las principales ventajas de SIPCheck es la posibilidad de reportar a un servidor central las direcciones IP atacantes, y recibir las direcciones IP atacantes confirmadas de otros usuarios, para lo que es necesario modificar la configuración sipcheck.conf y actualizar vuestra KEY para personalizar vuestro usuario y que las direcciones IP que hayas baneado sean personales. Si tienes varios sistemas Asterisk protegidos con SIPCheck, puedes configurar la misma KEY y así, al detectar un atacante en una de las máquinas, queda baneada en el resto de sistemas que tengan la misma KEY. Si un mismo atacante es reportado desde varias KEY, entonces pasa a ser un atacante oficial y es reportado al resto de usuarios de la red SIPCheck.
Próximamente se hará un ranking de usuarios que más reportan y así poder tener un sistema completo de estadísticas, por ataques, procedencia, destino, y poder sacar alguna conclusión interesante que nos ayude a mejorar la seguridad de vuestros sistemas Asterisk.
Por último, comentar que SIPCheck2 está aún en modo prueba y aunque está siendo probado en distintos sistemas y en todos parece que funciona perfectamente, os agradeceríamos que informéis sobre cualquier bug, mejora o añadido que creas que puede ser interesante.
La creación, desarrollo y plantemiento de esta aplicación ha sido posible gracias a: Sergio Cotelo, Javier Vidal y Thomás Sahagún por lo que ha sido un trabajo en equipo en el que varias personas han aportado su grano de arena (o su montaña de conocimientos) para poder hacer algo útil y que parece que funciona. Hay que agradecer a Saúl sus consejos sobre Python y a aquellas personas que se han prestado a probar esta versión beta en sus sistemas Asterisk. 😀
Más información y descarga del SIPCheck2: https://github.com/sinologicnet/sipcheck