Claro, has dado en el clavo.
La idea que tenia era validar por IP. Pero de esa manera estaria validando TODA el trafico que llega a Kamailio, por tanto, tambien las extensiones que se intentan registrar. Extensiones que no se que IP van a tener.
(te pido que me corrijas si me equivoco)
Entonces, la idea en vez de validar por IP, es buscar otro tipo de validacion. El modulo permissions tambien puede validar por URI, aunque en este caso estaria en la misma situacion, ya que no conozco TODAS las IP desde las cuales las extensiones se registraran. No se si me explico bien.
Por ultimo, se me ocurre validar por username del URI, algo muy manual. A menos que haya una forma mas "economica" de hacerlo.
¿Que me propones?
Message: 2 Date: Mon, 4 Oct 2010 17:01:29 +0200 From: Iñaki Baz Castillo ibc@aliax.net Subject: Re: [SR-Users-ES] Seguridad en Kamailio To: Lista de usuarios de SIP Router sr-users-es@lists.sip-router.org Message-ID: AANLkTikhAGieJEtZN0OrRgzLVV3nnENewx-xdogmAsD5@mail.gmail.com Content-Type: text/plain; charset=UTF-8
El día 4 de octubre de 2010 15:44, Tincho ylm sadzas@gmail.com escribió:
Estuve leyendo el modulo "permissions".
Creo que lo que quiero hacer se resuelve simplemente autenticando los
INVITE
(que no estoy haciendo ahora).
No creo que hayas leído eso en la documentación del módulo 'permissions'. Este módulo da funcionalidad de validación de la IP origen:
http://kamailio.org/docs/modules/1.5.x/permissions.html#id2512057 http://kamailio.org/docs/modules/1.5.x/permissions.html#id2498680 http://kamailio.org/docs/modules/1.5.x/permissions.html#id2528182
La autenticación SIP no tiene anda que ver con el permitir tráfico desde algunas IP's sin solicitarles autenticación. Estamos hablando simplemente de permitir tráfico no autenticado en caso de que el request llegue desde determinadas IP's "privilegiadas" (módulo 'permissions').
Haciendo una captura con ngrep, veo que cuando asterisk envia el INVITE, kamailio lo tramita sin problemas y sin autenticarlo. Que me recomiendan ?
Que revises tu script de kamailio porque, sí o sí, en él has permitido explicitamente llamadas sin autenticación. Y que leas a fondo la documentación del módulo 'permissions'.
-- Iñaki Baz Castillo ibc@aliax.net
SR-Users-ES mailing list SR-Users-ES@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users-es
Fin de Resumen de SR-Users-ES, Vol 37, Envío 3
El día 5 de octubre de 2010 15:16, Tincho ylm sadzas@gmail.com escribió:
Claro, has dado en el clavo. La idea que tenia era validar por IP. Pero de esa manera estaria validando TODA el trafico que llega a Kamailio, por tanto, tambien las extensiones que se intentan registrar. Extensiones que no se que IP van a tener. (te pido que me corrijas si me equivoco)
Entonces, la idea en vez de validar por IP, es buscar otro tipo de validacion. El modulo permissions tambien puede validar por URI, aunque en este caso estaria en la misma situacion, ya que no conozco TODAS las IP desde las cuales las extensiones se registraran. No se si me explico bien. Por ultimo, se me ocurre validar por username del URI, algo muy manual. A menos que haya una forma mas "economica" de hacerlo. ¿Que me propones?
Creo que te estás liando y mucho. Sólo hay dos (tres) formas de "validar" un request:
1) Por autenticación SIP: El request llega desde cualquier IP y el server le solicita autenticación.
2) Por IP origen. El server permite requests desde algunas IP's específicas (insisto: aquellas que figuren en la tabla 'address' y uso de las funciones pertinentes del módulo 'permissions'.
3) Mezcla de 1 y 2. Sólo se permite tráfico desde IP's privilegiadas y además se les exige autenticación (modo paranoia).
Lo de validar por URI no vale NADA, ya que ahora mismo desde China alguien te puede mandar un INVITE conteniendo lo que el chino quiera. Si pone una UrI determinada, ¿tu Kamailio le va a dejar pasar?
Si tienes un Asterisk que envíe llamadas a Kamailio (un Asterisk *dentro* de tun arquitectura de servers, no un server Asterisk de un cliente), lo normal es que permitas que esas llamadas lleguen a Kamailio y no se pida autenticación. Para llamadas o registros desde clientes de IP's arbitratarias siempre exigir autenticación.
Pero sinceramente creo que no tienes muy claro lo que pretendes (de hecho aún no lo has dicho).
Saludos.
Muy buenas, Me imagino qué es lo que quiere hacer Tincho. Se trataría validar por IP origen y permitir sólo las IP desde que algún cliente se le ha registrado al Kamailio. Desgraciadamente no he visto ninguna solución "sencilla". Yo lo he implementado haciendo la función de manera "manual". Es decir, utilizo la tabla trusted para las WellKnown-IPs (o sea, la de los servers que ya sé que me llamarán) y para el resto me he implementado un sql para que busque en la tabla de contactos registrados algún contacto con la IP origen del request que quiero validar.
Puede que no sea elegante pero funciona (y tengo muchas cosas que mejorar al respecto).
Espero que esto os sirva de ayuda.
Saludos,
César Pinto (2439) +34 91 787 23 00 alhambra-eidos.es
-----Mensaje original----- De: sr-users-es-bounces@lists.sip-router.org [mailto:sr-users-es-bounces@lists.sip-router.org] En nombre de Iñaki Baz Castillo Enviado el: martes, 05 de octubre de 2010 16:31 Para: Lista de usuarios de SIP Router Asunto: Re: [SR-Users-ES] Seguridad en Kamailio
El día 5 de octubre de 2010 15:16, Tincho ylm sadzas@gmail.com escribió:
Claro, has dado en el clavo. La idea que tenia era validar por IP. Pero de esa manera estaria validando TODA el trafico que llega a Kamailio, por tanto, tambien las extensiones que se intentan registrar. Extensiones que no se que IP van a tener. (te pido que me corrijas si me equivoco)
Entonces, la idea en vez de validar por IP, es buscar otro tipo de validacion. El modulo permissions tambien puede validar por URI, aunque en este caso estaria en la misma situacion, ya que no conozco TODAS las IP desde las cuales las extensiones se registraran. No se si me explico bien. Por ultimo, se me ocurre validar por username del URI, algo muy manual. A menos que haya una forma mas "economica" de hacerlo. ¿Que me propones?
Creo que te estás liando y mucho. Sólo hay dos (tres) formas de "validar" un request:
1) Por autenticación SIP: El request llega desde cualquier IP y el server le solicita autenticación.
2) Por IP origen. El server permite requests desde algunas IP's específicas (insisto: aquellas que figuren en la tabla 'address' y uso de las funciones pertinentes del módulo 'permissions'.
3) Mezcla de 1 y 2. Sólo se permite tráfico desde IP's privilegiadas y además se les exige autenticación (modo paranoia).
Lo de validar por URI no vale NADA, ya que ahora mismo desde China alguien te puede mandar un INVITE conteniendo lo que el chino quiera. Si pone una UrI determinada, ¿tu Kamailio le va a dejar pasar?
Si tienes un Asterisk que envíe llamadas a Kamailio (un Asterisk *dentro* de tun arquitectura de servers, no un server Asterisk de un cliente), lo normal es que permitas que esas llamadas lleguen a Kamailio y no se pida autenticación. Para llamadas o registros desde clientes de IP's arbitratarias siempre exigir autenticación.
Pero sinceramente creo que no tienes muy claro lo que pretendes (de hecho aún no lo has dicho).
Saludos.
El día 6 de octubre de 2010 15:48, César Pinto Magán Cesar.Pinto@a-e.es escribió:
Muy buenas, Me imagino qué es lo que quiere hacer Tincho. Se trataría validar por IP origen y permitir sólo las IP desde que algún cliente se le ha registrado al Kamailio. Desgraciadamente no he visto ninguna solución "sencilla". Yo lo he implementado haciendo la función de manera "manual". Es decir, utilizo la tabla trusted para las WellKnown-IPs (o sea, la de los servers que ya sé que me llamarán) y para el resto me he implementado un sql para que busque en la tabla de contactos registrados algún contacto con la IP origen del request que quiero validar.
http://kamailio.org/docs/modules/1.5.x/registrar.html#id3058785
Saludos.
Gracias, pero no es exactamente eso. No se trata de hallar los contactos de un usuario del que sabemos la URI, si no que en base de la IP origen de la cual viene el request (el $si), independientemente del from o del contact que venga en el SIP, ver si hay algún usuario registrado cuyo contacto contenga esa IP. Ten en cuenta que el from puede ser Anonymous dependiendo del caso y el contact no es la URI del Subscriber. Ahora, si me dices que a esa función, si le metes como uri el contact directamente, te lo encuentra en la tabla entonces me callo. Pero por lo que entiendo buscará el parámetro URI solamente en la columna de users, no en la de contacts, con lo que no sirve al propósito (si me equivoco dímelo. Sería una alegría para mí.).
César Pinto (2439) +34 91 787 23 00 alhambra-eidos.es
-----Mensaje original----- De: sr-users-es-bounces@lists.sip-router.org [mailto:sr-users-es-bounces@lists.sip-router.org] En nombre de Iñaki Baz Castillo Enviado el: miércoles, 06 de octubre de 2010 16:27 Para: Lista de usuarios de SIP Router Asunto: Re: [SR-Users-ES] Seguridad en Kamailio
El día 6 de octubre de 2010 15:48, César Pinto Magán Cesar.Pinto@a-e.es escribió:
Muy buenas, Me imagino qué es lo que quiere hacer Tincho. Se trataría validar por IP origen y permitir sólo las IP desde que algún cliente se le ha registrado al Kamailio. Desgraciadamente no he visto ninguna solución "sencilla". Yo lo he implementado haciendo la función de manera "manual". Es decir, utilizo la tabla trusted para las WellKnown-IPs (o sea, la de los servers que ya sé que me llamarán) y para el resto me he implementado un sql para que busque en la tabla de contactos registrados algún contacto con la IP origen del request que quiero validar.
http://kamailio.org/docs/modules/1.5.x/registrar.html#id3058785
Saludos.
El día 6 de octubre de 2010 17:44, César Pinto Magán Cesar.Pinto@a-e.es escribió:
Gracias, pero no es exactamente eso. No se trata de hallar los contactos de un usuario del que sabemos la URI, si no que en base de la IP origen de la cual viene el request (el $si), independientemente del from o del contact que venga en el SIP, ver si hay algún usuario registrado cuyo contacto contenga esa IP. Ten en cuenta que el from puede ser Anonymous dependiendo del caso y el contact no es la URI del Subscriber. Ahora, si me dices que a esa función, si le metes como uri el contact directamente, te lo encuentra en la tabla entonces me callo. Pero por lo que entiendo buscará el parámetro URI solamente en la columna de users, no en la de contacts, con lo que no sirve al propósito (si me equivoco dímelo. Sería una alegría para mí.).
Te equivocas pero sólo relativamente :)
La función reg_fetch_contacts() obtiene los "contacts" de un AoR, o sea, tienes acceso a la IP que el cliente puso en el Contact de su REGISTER, aunque no sé si permite acceder al parámetro "received" (IP pública real) que añadió Kamailio al guardar el registro (tras detectar que viene tras NAT).
El día 6 de octubre de 2010 18:21, Iñaki Baz Castillo ibc@aliax.net escribió:
El día 6 de octubre de 2010 17:44, César Pinto Magán Cesar.Pinto@a-e.es escribió:
Gracias, pero no es exactamente eso. No se trata de hallar los contactos de un usuario del que sabemos la URI, si no que en base de la IP origen de la cual viene el request (el $si), independientemente del from o del contact que venga en el SIP, ver si hay algún usuario registrado cuyo contacto contenga esa IP. Ten en cuenta que el from puede ser Anonymous dependiendo del caso y el contact no es la URI del Subscriber. Ahora, si me dices que a esa función, si le metes como uri el contact directamente, te lo encuentra en la tabla entonces me callo. Pero por lo que entiendo buscará el parámetro URI solamente en la columna de users, no en la de contacts, con lo que no sirve al propósito (si me equivoco dímelo. Sería una alegría para mí.).
Te equivocas pero sólo relativamente :)
La función reg_fetch_contacts() obtiene los "contacts" de un AoR, o sea, tienes acceso a la IP que el cliente puso en el Contact de su REGISTER, aunque no sé si permite acceder al parámetro "received" (IP pública real) que añadió Kamailio al guardar el registro (tras detectar que viene tras NAT).
O sea, casi mejor lo que tú haces de buscar en la tabla "location" con una query mysql :)
-- Iñaki Baz Castillo ibc@aliax.net
sr-users-es@lists.kamailio.org