Buenas tardes
Este es mi primer mensaje a la lista, he empezado con kamailio hace poco, aunque ya tengo bastante experiencia con asterisk y la voip en general
He instalado kamailio 3.3 + asterisk 1.8 realtime en una debian. Siguiendo el documento que hay en Asipto.
Para probarlo, contraté una línea voip y la puse como salida y entrada de llamadas en el asterisk. Todo funcionando sin problemas, puedo llamar y recibir llamadas.
Luego registré otro asterisk (B) en otra máquina para que haga uso de la infraestructura arriba mencionada.
La cuestión es que, a ojos del asterisk (A) que trabaja junto a kamailio, todos los usuarios SIP registrados provienen de la misma IP y del mismo puerto (la ip local)
sip*CLI> sip show peers Name/username Host Dyn Forcerport ACL Port Status Realtime 200001/200001 88.99.88.99 D N 5060 OK (50 ms) Cached RT 200002/200002 88.99.88.99 D N 5060 OK (9 ms) Cached RT kamailio 88.99.88.99 N 5060 OK (1 ms) proveedor/vozip 123.123.123.123 5060 OK (1 ms) 4 sip peers [Monitored: 4 online, 0 offline Unmonitored: 0 online, 0 offline]
Si yo en otro sistema asterisk (B) creo un trunk tal que así:
register=200001:password@88.99.88.99
[trunkvoip] disallow=all defaultuser=200001 type=friend sendrpid=yes secret=password qualify=yes insecure=invite,port host=88.99.88.99 dtmfmode=rfc2833 canrenvite=no allow=g729 context=llamadas-entrantes fromuser=200001
funciona bien.
La cuestión es que yo puedo falsear el usuario que llama, simplemente cambiando "fromuser" a otro usuario que sí que exista en la base de datos realtime
simplemente poniendo "fromuser=200002", el asterisk ya se cree que es el usuario 200002 el que genera la llamada, cuando realmente es el usuario 200001
¿Como puedo evitar esta situación?
Muchas gracias
El día 27 de febrero de 2013 19:22, mutoid mutoid@gmail.com escribió: [snip]
simplemente poniendo "fromuser=200002", el asterisk ya se cree que es el usuario 200002 el que genera la llamada, cuando realmente es el usuario 200001
¿Como puedo evitar esta situación?
Así de primeras...
haciendo que el asterisk(B) se registre en el Kamailio y forzando a nivel de Kamailio el valor del From.
El día 28 de febrero de 2013 11:38, Victor Seva linuxmaniac@torreviejawireless.org escribió:
¿Como puedo evitar esta situación?
Así de primeras...
haciendo que el asterisk(B) se registre en el Kamailio y forzando a nivel de Kamailio el valor del From.
Al final creo que lo he resuelto añadiendo esto en la ruta RELAY (en la configuración del documento de asipto)
if (method=="INVITE" && !route(FROMASTERISK)) { if (!proxy_authorize("midominio", "sipfriends")) { xlog("L_NOTICE", "[$Tf] Detected INVITE before authorization $fU -> $tU\n"); proxy_challenge("midominio", "1"); break; } else if (!check_from()) { sl_send_reply("403", "Use From=ID"); exit; } }
Así obligo a que los INVITE que vienen de fuera se vuelvan a autorizar, y los que vienen de asterisk (llamadas entrantes) pasen de largo
Todavía estoy haciendo pruebas, y por ahora no he podido falsear ningun usuario para realizar llamadas, así que parece estar funcionando...
sr-users-es@lists.kamailio.org