Retomando este tema , me surgen un par de dudas con la implementación
de la autenticación de los invites.
Ya he conseguido probar que no haya un número superior de AOR,
utilizando 2 máquinas virtuales.
Ahora mis dudas van en lo siguiente :
1º Se tratar que no me pueda llamar yo mismo y según lo que pienso yo
habría que tratarlo dentro del INVITE, si tener en cuenta la
autenticación.
2º Tras comprobar que no me llamo a mi mismo tengo que comprobar que
esta autenticado
Con esto debería valer
proxy_authorize verifica las credenciales enviadas
if (!proxy_authorize("", "subscriber)) {
xlog("Hay que autenticarse para $rm");
proxy_challenge("", "0");
xlog("El usuario esta autenticado");
exit;
}
o me falta algo
Lo que no entiendo en el method REGISTER del openser.cfg por que
realiza lo siguiente
if(!check_to())
{
}
if(!save(location))
{
}
un saludo y gracias
--
=====================================================
Legolas_Bilbao[ID2006][GKR]
Dios creo un equipo Perfecto a los demas los lleno de extranjeros
http://www.forosindicedonkey.com
http://usuarios.lycos.es/ligaforo/
=====================================================
---------- Forwarded message ----------
From: Saúl Ibarra <saghul(a)gmail.com>
Date: 23-ago-2007 11:38
Subject: Re: [OpenSER-Users-ES] Re: [Users-es] Mensajes que requieren
autenticación
To: Lista de usuarios de OpenSER <users-es(a)openser.org>
OK, entendido, pero lo del hastotag en realidad lo tengo asi:
if (loose_route()) {
xlog("L_INFO","*** Estamos en loose_route() ***\n");
## Con el has_totag sabemos si son "in-dialog"
if ((method=="INVITE" || method=="REFER") &&
!has_totag()) {
sl_send_reply("403", "Forbidden");
xlog("L_INFO","$Crx ** INVITE o REFER sin TO
tag ** $Cxx\n");
exit;
}
if (method=="INVITE") {
## Es un re-INVITE
route(7);
}
route(1);
exit;
}
Ahora voy a añadir la comprobación para el auth del REFER...
Thnx Iñaki!!
El 23/08/07, Iñaki Baz Castillo <ibc(a)aliax.net> escribió:
El 23/08/07, Saúl Ibarra <saghul(a)gmail.com>
escribió:
He estado "limpiando" un poco el
código, metiendo el auth, el alias y
el location en distintos routes, y ahora me queda más "legible" xD
Lo que no me ha quedado muy claro es la utenticación del REFER. Yo
actualmente hago esto:
## Con el has_totag sabemos si son "in-dialog"
Humm, creo que no exactamente. Para saber si es en dialog es la función:
if (loose_route())
http://4z.com/people/emin-gabrielyan/public/070412-SIP-record-route/
El tema del "has_totag" se debe a que, una vez dentro de un diálogo
establecido, los mensajes in-dialog deben necesariamente tener un
parámetro "tag" dentro del campo "To". Es una medida de seguridad
aunque reconozco que tengo pendiente comprobar cómo de seguro es esto,
es decir, si yo genero a propósito un mensaje nuevo con un "tag" en el
"To" y le añado la cabecera "Route" para que pase por
"loose_route"
(in-dialog) ¿significa eso que OpenSer me permite el paso de es
mensaje "trampa" que en realidad no pertenece a ningún diálogo
establecido? Aquí hay que recordar que OpenSer no recuerda el estado
de diálogos, sólo de transacciones.
if ((method=="INVITE"
|| method=="REFER") && !has_totag()) {
sl_send_reply("403", "Forbidden");
xlog("L_INFO","$Crx ** INVITE o REFER sin TO tag
** $Cxx\n");
exit;
}
Así vale? O debería añadir a continuación algo como:
if (method=="REFER") {
route(22);
route(1);
}
Donde route 22 es:
# -----------------------------------------------------------------
# Auth check
# -----------------------------------------------------------------
route[22]
{
## Es necesario autenticarse
if (!proxy_authorize("","subscriber")) {
xlog("L_INFO","$CbxSe necesita autenticacion para $rm
$Cxx\n");
proxy_challenge("","0");
exit;
}
## Tienen que coincidir el nombre de usuario con el de la cabecera FROM
else if (!check_from()) {
xlog("L_INFO","$Crx*** check_from() = NO!!
***$Cxx\n");
sl_send_reply("403", "Use From=ID");
exit;
}
xlog("L_INFO","$Cbx*** Autenticacion Correcta para $rm
***$Cxx\n");
consume_credentials();
}
??
Sí, en efecto, es necesario ese Auth para REFER. Piensa en el caso de
que llames desde un PAP2 (por ejemplo) a un número SIP
"ajeno"/exterior. Una vez en el diálogo, si no pides auth para el
REFER la otra parte podría enviarte un REFER para que tu teléfono haga
una llamada al número que sea, lo que podría ocasionar llamada vía
PSTN con el coste económino asociado (y es una llamada que ha hecho tu
PAP2).
Pongo el ejemplo del PAP2 porque, que o sepa, ningún deskphone pide
confirmación al usuario cuando recibe un REFER. En cambio, con Twinkle
al recibir un REFER te saca un pop-up preguntando al usuario si desea
aceptar el REFER a la URI que sea. Ah, y todo esto yo he leído en
algún RFC que es lo correcto por obvia seguridad, en cambio parece
como si la mayoría de dispositivos SIP delegasen en su proxy SIP la
seguridad del REFER.
Saludos.
--
Iñaki Baz Castillo
<ibc(a)aliax.net>
_______________________________________________
Users-es mailing list
Users-es(a)openser.org
http://openser.org/cgi-bin/mailman/listinfo/users-es
--
Saúl -- "Some people say why, other just say, why not."
----------------------------------------------------------------
http://www.saghul.net/
_______________________________________________
Users-es mailing list
Users-es(a)openser.org
http://openser.org/cgi-bin/mailman/listinfo/users-es
--
=====================================================
Legolas_Bilbao[ID2006][GKR]
Dios creo un equipo Perfecto a los demas los lleno de extranjeros
http://www.forosindicedonkey.com
http://usuarios.lycos.es/ligaforo/
=====================================================