Enviado por admin el
En un precedente articulo hemos visto como realizar la captura del cifrado de la señalización SIP en Kamailio apoyándonos en el modulo SIPTRACE y utilizando SNGREP. En este articulo veremos como realizar la misma operación en OpenSIPs utilizando los módulos PROTO_HEP y SIPTRACE; esto con el objetivo de ver la captura en SNGREP. Este tipo de configuración nos ayudará a realizar DEBUG de la señalización cifrada en OpenSIPs a través de SNGREP. Mano a la obra.
Empezamos con el modulo PROTO_HEP. Para que funcione correctamente hay que indicar un socket nuevo de escucha que en nuestro caso será:
socket=hep_udp:127.0.0.1:6060
Luego en la parte donde se configuran los módulos añadimos:
#### PROTO_HEP Module
loadmodule "proto_hep.so"
modparam("proto_hep", "hep_id", "[sngrep] 127.0.0.1:9060; transport=udp; version=3")
modparam("proto_hep", "homer5_on", 1)
modparam("proto_hep", "hep_capture_id", 12345)
El significado de cada linea presente en el bloque:
-
Una descripción
-
se carga el modulo
-
se indica el nombre del ID ([sngrep]) que luego se utilizará en el modulo TRACER. 127.0.0.1:9060 son la IP y el puerto donde se enviará la captura realizada a nivel de OpenSIPs. Además se utilizar el protocolo de transporte UDP y la versión HEP numero 3
-
Se indica que se utilizará el método de encapsulamiento de la versión 5 de Homer (texto plano) que es lo que necesitamos para una correcta visualización en SNGREP
-
Se indica un numero que identifique de manera univoca el nodo (PERSONALIZAR CON UN NUMERO ENTERO DE SU GUSTO)
Una vez terminada la configuración del modulo PROTO_HEP, podemos pasar a la configuración del modulo TRACER:
#### TRACER Module
loadmodule "tracer.so"
modparam("tracer", "trace_on", 1)
modparam("tracer", "trace_id", "[traceid]uri=hep:sngrep")
El significado de las distintas lineas presentes en el bloque:
-
Una descripción
-
se carga el modulo
-
se activa la funcionalidad de captura del modulo
-
se configura un trace_id que luego se utilizará, a través de la función activada por el modulo, en el script de enrutamiento de OpenSIPs. Después del nombre ([traceid]) se indica que la uri es de tipo hep y que el hombre de la uri es sngrep (el parametro hep_id configurado en el modulo PROTO_HEP).
Ahora pasamos a la función trace, activada por el modulo TRACER, que se utilizará en el script de enrutamiento de OpenSIPs; su sintaxis es:
trace(trace_id, [scope, [type, [trace_attrs]]])
-
trace_id es el nombre del trace_id configurado como parámetro del modulo. En nuestro caso el nombre es traceid
-
scope es el tipo de captura que se va a realizar; las distintas opciones:
-
m o M capturar los mensajes SIP. La unica opción que se puede utilizar en un escenario donde OpenSIPs está configurado en modo Stateless
-
t o T se capturarán las transacciones
-
d o D se capturarán los dialogos
-
-
type representa el tipo de mensaje que se van a capturar:
-
sip mensajes SIP
-
xlog mensajes de LOG generados por OpenSIPs
-
rest captura de mensajes de tipo REST
-
-
trace_attrs un valor o una pseudo variable que luego se puede almacenar en los paquetes capturados.
En nuestro caso, como queremos capturar todas las transacciones que pasen por OpenSIPs, después de esta linea:
route{
que abre el script de enrutamiento de OpenSIPs, añadimos:
trace("traceid","T","sip");
Guardamos los cambios y reiniciamos OpenSIPs:
systemctl restart opensips
Ahora pasamos a SNGREP, donde para realizar la captura utilizaremos el siguiente comando:
sngrep -l 4000 -R -d lo -Ludp:127.0.0.1:9060
El modulo TRACER activa una serie de comando que se pueden utilizar a través de la consola opensips-cli:
opensips-cli -x mi trace
se utiliza para ver el estado de todos los traceid configurados (ya que se puede configurar más de uno);
opensips-cli -x mi trace mode=off
opensips-cli -x mi trace mode=on
opensips-cli -x mi trace mode=off id=traceid
Que se utilizan para apagar la captura, encender la captura, apagar la captura solamente de un determinado traceid respectivamente.
Un ejemplo de captura de registro TLS:
Tengo que darle las gracias a la lista de distribución de OpenSIPs y a esta entrada de Blog que me ha ayudado mucho con la configuración.
Comentarios recientes