Como bloquear una IP en una conexion entre Kamailio y Asterisk

195 views
Skip to first unread message

Manuel Camargo

unread,
Jan 17, 2016, 11:57:59 AM1/17/16
to asterisk-es
Resulta que tengo una conexion con Kamailio como proxy y Asterisk como autenticacion.
Ambos estan conectados mutuamente y los usuarios pasan por el proxy y este los deriva a un Asterisk u a otro balanceado, pero la autenticacion la hace contra una base de datos de los Asterisk.

El tema es que claro, yo miro los Asterisk y veo constantemente, usuarios intentando usar el servicio sin autenticacion (bots supongo) y me gustaria restringirlos, pero el problema que a nivel de IP no puedo pararlos porque evidentemente intentan "logearse" en el Asterisk a traves de Kamailio por lo que la unica IP que aparece es la del Kamailio ( a nivel de transporte).

Yo solo se la IP del "atacante" a nivel SIP porque en el mensaje aparece la ip del emisor. Si la IP fuera la que se registrara directamente con el Asterisk con el Fail2Ban tendria resuelta esta papeleta, pero no es este el caso. ¿Sabeis alguna solucion para hacer algo tipo fail2ban, pero mirando los paquetes SIP?

Basicamente el mensaje que se repite es:

[Jan 17 17:55:28] NOTICE[1191][C-000023d3]: chan_sip.c:25469 handle_request_invite: Failed to authenticate device (USUARIO_QUE_INTENTA_REGISTRARSE)<sip:(USUARIO_QUE_INTENTA_REGISTRARSE)@IP_DEL_KAMAILIO>;tag=fb246b53

En el Kamailio no puedo hacer nada, porque para el kamailio, todo el trafico es bueno (especialmente el trafico que no es demasiado agresivo, en plan ataque DDOS), estos intentos de registro suelen ser suaves, con peticiones cada 10 o cada 20 segundos y para el Kamailio son Invites totalmente aceptables. Si meto el Fail2ban en el asterisk, lo que pasa evidentemente, es que acaba baneando al Servidor de Kamailio.

Espero vuestras respuestas, gracias de antemano :-)

Ricardo Peironcely

unread,
Jan 17, 2016, 12:08:25 PM1/17/16
to aster...@googlegroups.com
Un fail2ban modificando el script para que aplique las reglas en el kamailo, o que apunte las ips en una BBDD y que el kam las rechace?

воскресенье, 17 января 2016 г. пользователь Manuel Camargo написал:
--
Este email pertenece a la lista de Asterisk-ES (http://www.asterisk-es.org)
Normas de la lista Asterisk-ES: http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es
---
Has recibido este mensaje porque estás suscrito al grupo "asterisk-es" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a asterisk-es...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a aster...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/asterisk-es.
Para acceder a más opciones, visita https://groups.google.com/d/optout.


--
Un saludo / Best regards / с уважением

Ricardo Peironcely

Enviado desde mi móvil, disculpas por la brevedad.
This mail was sended from mobile, sorry for being brief.
Посланный из телефона, извините за быть кратким.

Manuel Camargo

unread,
Jan 17, 2016, 1:56:31 PM1/17/16
to asterisk-es
En realidad me daria igual que aplicara las rglas en el kamailio o en el asterisk. El problema es como hacer para que el Fail2ban en el asterisk se de cuenta que el "atacante" no es la IP del kamailio? 

Raúl Alexis Betancor Santana

unread,
Jan 17, 2016, 2:41:55 PM1/17/16
to aster...@googlegroups.com
Si lo he entendido vien ... usas un kamailio como loadbalancer ... y luego los asterisk hacen la función de registrar ...

Umm ... ese esquema tiene visos de crecer bastante poco.

De todas formas y sin entrar en discusiones sobre tu arquitectura ... lo que puedes hacer es añadir como una cabecera SIP desde los kamailio la IP original del cliente y usar esta en el asterisk para fail2ban la reconozca como la 'mala'.

La solución correcta sería que en el kamailio hicieras los bloqueos, usando el módulo pike, y sin son bots los que te están dando por saco ... les puedes pillar por el user-agent y directamente no pasar ese tráfico a los asterisk.

Aunque ya digo ... no es cuestión de mirar porqué has elegido ese diseño de infraestructura tan debil.


Angel Elena

unread,
Jan 17, 2016, 3:09:33 PM1/17/16
to aster...@googlegroups.com
has mirado los user-agent de los atacantes ?.

No es una solución eficaz al 100% pero te puede aliviar "algo" si bloqueas esos user-agent

--------------------------------
Ángel Elena Medina _o)
cr...@craem.net / \\
http://blog.craem.net _(___V
@craem_
--------------------------------

-----Mensaje original-----
De: Manuel Camargo <sir....@gmail.com>
Enviado: Dom 17-01-2016 17:58
Asunto: [Asterisk-ES] Como bloquear una IP en una conexion entre Kamailio y Asterisk
Para: asterisk-es <aster...@googlegroups.com>;
> <http://www.asterisk-es.org> )
> Normas de la lista Asterisk-ES:
> http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es
> <http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es>
> ---
> Has recibido este mensaje porque estás suscrito al grupo "asterisk-es" de
> Grupos de Google.
> Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía
> un correo electrónico a asterisk-es...@googlegroups.com
> <mailto:asterisk-es...@googlegroups.com> .
> Para publicar en este grupo, envía un correo electrónico a
> aster...@googlegroups.com <mailto:aster...@googlegroups.com> .

Manuel Camargo

unread,
Jan 17, 2016, 3:58:17 PM1/17/16
to asterisk-es
Si, estoy haciendo pruebas estructurales, y en este sentido me he encontrado con esa tesitura. 

No entiendo a que te refieres "añadir como una cabecera SIP". La IP del atacante ya aparece en el Header, pero no tengo claro como el fail2ban podria leer esa cabecera para hacer el bloqueo

Raúl Alexis Betancor Santana

unread,
Jan 17, 2016, 5:13:50 PM1/17/16
to aster...@googlegroups.com
Como ya te he dicho ... estás enfocando incorrectamente el problema.

No te centres en bloquear nada en el asterisk ... tienes que bloquear en el Kamailio.

Tienes que evitar que 'llegen a tu cocina'.

El Fail2ban no va a pillarlos ... porque el Asterisk no te va a generar un log con la IP del atacante, tu única opción, es pasar la IP desde el kamailio en una cabecera ... y en el kamailio, cuando el asterisk responda que no autentica el fulano ... 'contar' la cantidad de intentos que lleva y bloquearle. Para eso está pike.

Pero insisto ... estás enfocando el problema incorrectamente.

Ricardo Peironcely

unread,
Jan 17, 2016, 5:18:34 PM1/17/16
to aster...@googlegroups.com
El campo tag, debiera corresponder con el mismo en el kamailio, aunque la solución que te dan por ahí con pike es mucho más robusta.


воскресенье, 17 января 2016 г. пользователь Manuel Camargo написал:
En realidad me daria igual que aplicara las rglas en el kamailio o en el asterisk. El problema es como hacer para que el Fail2ban en el asterisk se de cuenta que el "atacante" no es la IP del kamailio? 


El domingo, 17 de enero de 2016, 18:08:25 (UTC+1), RPR escribió:
Un fail2ban modificando el script para que aplique las reglas en el kamailo, o que apunte las ips en una BBDD y que el kam las rechace?

воскресенье, 17 января 2016 г. пользователь Manuel Camargo написал:
Resulta que tengo una conexion con Kamailio como proxy y Asterisk como autenticacion.
Ambos estan conectados mutuamente y los usuarios pasan por el proxy y este los deriva a un Asterisk u a otro balanceado, pero la autenticacion la hace contra una base de datos de los Asterisk.

El tema es que claro, yo miro los Asterisk y veo constantemente, usuarios intentando usar el servicio sin autenticacion (bots supongo) y me gustaria restringirlos, pero el problema que a nivel de IP no puedo pararlos porque evidentemente intentan "logearse" en el Asterisk a traves de Kamailio por lo que la unica IP que aparece es la del Kamailio ( a nivel de transporte).

Yo solo se la IP del "atacante" a nivel SIP porque en el mensaje aparece la ip del emisor. Si la IP fuera la que se registrara directamente con el Asterisk con el Fail2Ban tendria resuelta esta papeleta, pero no es este el caso. ¿Sabeis alguna solucion para hacer algo tipo fail2ban, pero mirando los paquetes SIP?

Basicamente el mensaje que se repite es:

[Jan 17 17:55:28] NOTICE[1191][C-000023d3]: chan_sip.c:25469 handle_request_invite: Failed to authenticate device (USUARIO_QUE_INTENTA_REGISTRARSE)<sip:(USUARIO_QUE_INTENTA_REGISTRARSE)@IP_DEL_KAMAILIO>;tag=fb246b53

En el Kamailio no puedo hacer nada, porque para el kamailio, todo el trafico es bueno (especialmente el trafico que no es demasiado agresivo, en plan ataque DDOS), estos intentos de registro suelen ser suaves, con peticiones cada 10 o cada 20 segundos y para el Kamailio son Invites totalmente aceptables. Si meto el Fail2ban en el asterisk, lo que pasa evidentemente, es que acaba baneando al Servidor de Kamailio.

--
Este email pertenece a la lista de Asterisk-ES (http://www.asterisk-es.org)
Normas de la lista Asterisk-ES: http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es
---
Has recibido este mensaje porque estás suscrito al grupo "asterisk-es" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a asterisk-es...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a aster...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/asterisk-es.
Para acceder a más opciones, visita https://groups.google.com/d/optout.


--

rfernandezmx

unread,
Jan 17, 2016, 7:32:47 PM1/17/16
to asterisk-es
No soy muy experto en kamailio pero mira lo que te encontre:

https://www.kamailio.org/wiki/tutorials/security/kamailio-security

Jon Bonilla (Manwe)

unread,
Jan 17, 2016, 7:39:23 PM1/17/16
to aster...@googlegroups.com
El Sun, 17 Jan 2016 08:57:59 -0800 (PST)
Manuel Camargo <sir....@gmail.com> escribió:
No te voy a decir nada que no te hayan dicho Raul u otros. Pero vamos allá:

- La autenticación tiene más sentido hacerla en el Kamailio. Es más eficiente y
ahorras trabajo a los asterisk. Puedes hacer que kamailio autentique usando
la db de asterisk muy fácilmente. Busca en el blog de miconda integración
kamailio-asterisk y verás que los cambios en los parámetros del módulo auth
son triviales.

- No tiene sentido correr el fail2ban en el asterisk si las peticiones vienen
del kamailio. Deberías tener iptables que rechazasen todo tráfico SIP que no
viniera de Kamailio. Al ser éste el punto único de entrada, el fail2ban o
similar debería correr en kamailio.

- Si tienes fail2ban en kamailio, con hacer un xlog que incluya $si como IP de
origen de una auth fallida, puedes general la expresión que fail2ban
interprete para banear esa IP cuando te interese. De todas formas, esto lo
puedes hacer nativamente en el kamailio usando hashtables.

Espero que te sirva de ayuda.

un saludo,

Jon

jorge montero

unread,
Jan 18, 2016, 3:36:24 AM1/18/16
to aster...@googlegroups.com
hola,

Los consejos sobre apoyarse en el Kamailo me parecen los más acertados, pero a veces un firewall en capa 7......

--
Este email pertenece a la lista de Asterisk-ES (http://www.asterisk-es.org)
Normas de la lista Asterisk-ES: http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es
---
Has recibido este mensaje porque estás suscrito al grupo "asterisk-es" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a asterisk-es...@googlegroups.com.
Para publicar una entrada en este grupo, envía un correo electrónico a aster...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/d/optout.



--
Un saludo.

Jorge Montero

Raúl Alexis Betancor Santana

unread,
Jan 18, 2016, 3:57:06 AM1/18/16
to aster...@googlegroups.com
Nadie ha dicho que se base solo en el pike y hastables de kamailio, sino que es mucho más eficiente hacer ahí ese control.

Tal como le ha comentado John, puede generar un xlog cuando pike salte por número de reintentos y cogerlo con fail2ban. PERO EN EL KAMAILIO.

Asterisk ya es sufuciente resource-hogger, como para encima meterle la tarea de control de seguridad. Que de todas formas, de todos es conocido que no hace bien.



De: "jorge montero" <cot...@gmail.com>
Para: aster...@googlegroups.com
Enviados: Lunes, 18 de Enero 2016 8:36:17
Asunto: Re: [Asterisk-ES] Como bloquear una IP en una conexion entre Kamailio y Asterisk
hola,

Para publicar en este grupo, envía un correo electrónico a aster...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Manuel Camargo

unread,
Jan 18, 2016, 8:12:44 AM1/18/16
to asterisk-es
Si, para hacerlo en el Kamailio no habria problemas. Seria todo felicidad
El chiste es ver como hacerlo con la arquitectura que tengo montada.
El Kamailio lo tengo casi como un semi-stateless proxy si no fuera porque a veces lo uso para balancear por eso esto no se puede hacer en el Kamailio (o no quiero que se haga de momento)

En un futuro cambiare algunas cosas, pero de momento necesito un parche feo para salir al paso.

Sir Brain Colward

unread,
Jan 19, 2016, 9:48:03 AM1/19/16
to asterisk-es
Lo tengas stateless o statefull, los replies al register van a volver por el kamailio, por lo que te es muy fácil hacer el filtrado en el Kamailio. Haz caso a Jon Bonilla y lee los consejos de seguridad de Kamailio. Te servirán independientemente de que sea statefull o stateless. El Kamailio hará estupendamente ese trabajo y mucho mejor de lo que pueda hacer el Asterisk.

Saludos,

SBC
Reply all
Reply to author
Forward
0 new messages