Bienvenidos a este nuevo post del apasionante mundo de la VoIP. En el post de hoy veremos la necesidad de monitorizar nuestro tráfico SIP y las opciones que nos brinda el maravilloso proyecto Homer 5 para esta tarea.
Hace ya unos 4 meses que el proyecto Homer5 dejó de considerarse Beta y se publicó la versión 5.0.1 (al día de escribir este post, ya está la versión 5.0.5). Para los que no lo conozcáis, Homer es un proyecto de software libre desarrollado por la gente de QXIP que tiene como finalidad la monitorización de tráfico SIP, RTCP y RTCP-XR para su posterior análisis.
Motorización de llamadas no recientes con Homer 5
A pesar de tener increíbles herramientas, como Sngrep (de mano de nuestro compañero Iván Alonso), que nos ayudan a analizar llamadas en tiempo real, muchas veces tenemos la necesidad de que ese análisis sea de llamadas realizadas horas, incluso días, previos y no tenemos ninguna captura lanzada en nuestro SIPProxy o B2BUA. Para esos casos, Homer nos permite tener una captura actualizada constantemente y almacenarla limpiamente, para poder analizarlo cuando nos haga falta.
La infraestructura para desplegar Homer consta de varios componentes:
Infraestructura de Homer en el cliente: Captagent
Para la recolección de los datos es necesario instalar unos nodos llamados “captagent” en cada máquina que nos interesa monitorizar (centralita, proxy…). Este captagent se encarga de capturar el tráfico SIP (RTCP…) y tras encapsularlo en un protocolo propio (HEP-EEP), lo envía al destino que le indiquemos para su posterior tratamiento. Captagent nos provee de unos filtros con los que le indicaremos las interfaces, puertos y tipo de tráfico que queremos capturar, incluso nos da la opción de crear un recolector para el tráfico RTCP-XR.
Infraestructura de Homer en el servidor
Para los que conocierais las versiones anteriores del proyecto, veréis muchos cambios en la parte del servidor, ya que los desarrolladores de Sipcapture han optado por dividir el proyecto en varios subproyectos.
Kamailio
Por defecto, se deja en manos de Kamailio la labor de recepción, desencapsulación e inserción de los datos en la base de datos SQL del tráfico que envían los captagents. Para ello nos facilitan una configuración que prácticamente nos da todo el trabajo hecho, teniendo solamente que editar algún que otro parámetro para adecuarlo a nuestro entorno.
MYSQL
Al apartado de base de datos le han dado un cambio de 360 grados respecto a sus versiones anteriores. Para los que seáis veteranos con Homer, habréis sufrido el problema de las slow querys, ya que anteriormente se guardaba toda la información en una única tabla. En esta nueva versión, además de separar los datos en varias tablas dependiendo de su función, tenemos disponible un script croneable que nos borra las entradas antiguas, haciendo que las tablas sean de un tamaño más reducido y fácil de realizar búsquedas para el motor de BD.
WEB
Homer 5, a diferencia de sus predecesores, han dividido la parte web en dos: homer-api y homer-ui:
- Homer-api, el back-end, es un desarrollo realizado en PHP que se encarga de la interacción con la base de datos y nos provee de un API (también está disponible un apidoc para entender la API, por si nos interesara explotarlo mediante nuestra propia aplicación).
- Por otro lado, tenemos homer-ui, el front-end. Siguiendo las tendencias actuales, es una SPA (Single Page Application) realizada con AngularJs, con multitud de librerías, que nos provee de una interfaz visual muy atractiva y fácil de usar. Como se muestra en la imagen de comienzo, esta webapp ataca contra homer-api para recoger los datos que nos interesen.
¿Qué podemos hacer con Homer 5?
Muy bien, nos has contado varias de cosas sobre su estructura, ¿pero qué funcionalidades nos ofrece Homer 5?
Opción de personalizar la web
Para quienes hayáis visto el apartado web y no os convenza su organización, sabed que el panel web nos ofrece un buen widget. Sin necesidad de editar el código fuente de la aplicación, se puede reorganizar el panel web mediante drag&drop para adecuarlo al gusto del consumidor, pudiendo configurar la distribución de las columnas, los campos de los formularios, los tipos de gráficas….
Búsquedas
Podemos realizar búsquedas de llamadas y paquetes SIP fácilmente aplicando diferentes filtros como franja de tiempo, Call-id, método SIP, origen, destino… Los resultados se nos muestran coloreados y agrupados por Call-id y si clicamos sobre ellos, se nos muestra dibujado el call-flow, pudiendo ver a raw el contenido de los paquetes. Si quisiéramos, también tenemos la opción de descargar el contenido en un pcap o txt para enviarlo a otra persona o analizar la llamada con alguna otra herramienta.
Reportes
Siempre y cuando nuestro captagent esté correctamente configurado para que capture el tráfico RTCP o RTCP-XR y los endpoints generen este tipo de paquetes, Homer recoge estos datos y los asocia al canal correspondiente, dándonos la opción de verlos en una gráfica atractiva. Gracias a esta funcionalidad podemos detectar problemas de audio de una llamada, como jitters o pérdidas de paquetes.
Gráficas
Gracias a las diferentes gráficas que nos ofrecen, podemos monitorizar el tráfico de nuestro sistema de un simple vistazo para poder descubrir posibles irregularidades. También nos ofrece la posibilidad de integración con sistemas como InfluxDB y ElasticSearch para generar gráficas personalizadas que se adapten a nuestras necesidades.
Alarmas
Es posible configurar el sistema de alarmas para detectar y alertar de ciertos errores o ataques.
Por ejemplo, la configuración por defecto de Kamailio que nos provee el proyecto, considera ciertos paquetes como escaneos (por ejemplo, los paquetes enviados desde SIPVicious). Pero hay que tener en cuenta que esto es bastante básico, ya que la configuración comprueba el UserAgent y sería suficiente por parte de un atacante modificar el código fuente del software y cambiar el UserAgent para evitar este filtro.
También tiene la posibilidad de contabilizar ciertos paquetes (403, 482, spoofing… ) y configurarlo para que al superar un umbral nos sea notificado vía email. Esto nos puede alertar de funcionamientos anómalos de nuestros sistemas, pudiendo detectarlos rápidamente.
Geolocalización
Haciendo uso del módulo «GeoIP» de Kamailio (que, a su vez, usa libgeoip), Homer nos ofrece un mapa mundial en el que nos muestra por país el número de INVITE que ha recibido. Básicamente, comprueba el origen de la dirección IP que ha enviado el paquete y los almacena en la base de datos para su posterior análisis.
Gracias a esta opción, podemos visualizar cómodamente los países que más uso hacen de nuestro servicio, o incluso podemos identificar ataques si estamos recibiendo intentos de países en los que no solemos dar servicio.
Etcétera
Homer es un proyecto muy activo en el que realizan actualizaciones de nuevas features, optimizaciones y bug fixes casi a diario, no hay más que echar un ojo a su repositorio en Github. Habrá que ir viendo qué nos ofrece este proyecto durante los siguientes meses y, si alguno tiene interés, puede también contribuir en mejorarlo (que esto es software libre ;D ).
No hemos querido entrar en detalles de la instalación, ya que en la wiki del proyecto están muy bien documentados los pasos para hacer. Para los script-kiddies, también hay opción de realizar las instalación automáticamente mediante un script que se encarga de ejecutar todos los pasos.
En el Github de Sipcature también está disponible la versión para Docker, por lo que… ¡ya no tenéis ninguna excusa para no probarlo!
1 Comentario
¿Por qué no comentas tú también?
Aporte:
Si deseas correr sngrep como servicio por alguna razón puedes seguir:
En mi caso fue para integración con HOMER.
https://groups.google.com/d/msg/homer-discuss/NG5Zo4CUfFU/zWy7wf66DQAJ
Aprovecho dar gracias, excelente trabajo de irontec.
Martin Hace 7 años
Queremos tu opinión :)