Asegurando Issabel PBX – “La receta”

Existen ciertas cosas en la vida que valoro mucho y es el esfuerzo y la capacidad para poder trabajar en Equipo, ya que es muy difícil de conseguir, puesto que nuestra naturaleza humana nos lleva siempre a defender nuestros intereses personales, que muchas veces no son del bien común del equipo o en este caso de la comunidad que persigue un objetivo.

En eso puedo resumir de lo que pude apreciar luego de asistir al #BeFree17 en la ciudad de México, un equipo de diferentes países y continentes inclusive, trabajando como una comunidad para un objetivo común, difundiendo conocimiento y tratando de sacar adelante un proyecto.

Por otro lado también considero que el conocimiento debe ser libre, como parte de la constante creación de nuevas cosas e ideas, con todas estas cosas rondando en mi cabeza, es me puse a trabajar en este paper cuya base fue la presentación que realice el miércoles pasado.

Lo titulé : Asegurando Issabel PBX – “La Receta”  El objetivo del documento es guiar de una manera muy sencilla, con una serie de ingredientes bastante prácticos, en la mejora de algunos aspectos relacionados con la seguridad de la plataforma de comunicaciones Issabel PBX, tanto para servidores implementados en la nube, así como en instalaciones locales.

Como saben Issabel es una plataforma de comunicaciones Software Libre y código abierto basada en Asterisk (Digium the Asterisk Company) integra funcionalidades de PBX, correo electrónico, tareas de colaboración, así como vídeo llamadas.

Todas las instrucciones del presente material fueron realizadas con la versión que
corresponde al archivo ISO issabel4-USB-DVD-x86_64-20170621.iso.

El documento lo pueden descargar desde aquí :

Paper_Asegurando_Issabel_PBX-La_Receta

Espero les sirva

Juan Oliva

Install Janus WebRTC Gateway in Debian

janus-logo

Desde hace varios meses vengo trabajando algunas cosas con mi amigo de aventuras tecnológicas Alfredo Pastor @AlfredoPastorL  sobre la plataforma “Janus”  pero qué es? 

Por que no solo de Asterisk vive el hombre, se puede decir que  Janus es auto denominado por la empresa Meetecho como un “WebRTC Gateway” de múltiple propósito, proporciona funcionalidades de comunicación para el uso de WebRTC con un navegador, a través del intercambio mensajes JSON y retransmitir comunicación RTP / RTCP . es posible  desarrollar implementaciones de aplicaciones como pruebas de eco, web conference, grabadoras de medios, pasarelas SIP y similares.

En este caso vamos a ver  como instalarlo correctamente en una plataforma DEBIAN

1.- Instalación de dependencias

#apt-get install aptitude
#aptitude install libmicrohttpd-dev libjansson-dev libnice-dev libssl-dev libsrtp-dev libsofia-sip-ua-dev libglib2.0-dev libopus-dev libogg-dev libcurl4-openssl-dev pkg-config gengetopt libtool automake make git cmake

Luego removemos los paquetes de correspondientes a rtp srtp ya que vamos a instalar nuevas versiones desde fuentes.

#apt-get remove libsrtp0 libsrtp0-dev
#apt-get autoremove libsrtp0 libsrtp0-dev

2.- Instalación de SRTP

#cd /opt/
#wget https://github.com/cisco/libsrtp/archive/v1.5.4.tar.gz
tar xfv v1.5.4.tar.gz
#cd libsrtp-1.5.4
#./configure –prefix=/usr –enable-openssl
#make shared_library && make install

Janus

3.- Instalación de USRSCTP

#cd /opt/
#git clone https://github.com/sctplab/usrsctp
#cd usrsctp
#./bootstrap
#./configure –prefix=/usr/lib64 && make && make install

 

4.- Instalación de LIBWEBSOCKETS

#cd /opt/
#git clone https://github.com/warmcat/libwebsockets.git
#libwebsockets
#mkdir build && cd build/
#cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_C_FLAGS=”-fpic” ..
#make && make install

selection_057

5.- Instalación de DXYGEN y GRAPHVIZ

#aptitude install doxygen graphviz

6.- Instalación de RABBITMQ

#cd /opt
#git clone https://github.com/alanxz/rabbitmq-c
#cd rabbitmq-c
#git submodule init
#git submodule update
#autoreconf -i
#./configure –prefix=/usr && make && make install

Janus

7.- Instalación de PAHO

#cd /opt
#git clone https://github.com/eclipse/paho.mqtt.c.git
#cd paho.mqtt.c
#make && make install

Janus

8.- Instalación de JANUS

#cd /opt
#git clone https://github.com/meetecho/janus-gateway.git
#cd janus-gateway
#sh autogen.sh
#./configure –prefix=/opt/janus
#make
#make install
#make configs
#./configure –disable-rabbitmq
#./configure –enable-docs

Janus

9.- Instalación del servidor Web

#apt-get install apache2

Ahora copiamos las paginas de ejemplo
#cp -R /opt/janus-gateway/html/ /var/www/
#cd /var/www/html/

10.- Pruebas

Si todo salio bien deberíamos poder levantar Janus de la siguiente forma :

#/opt/janus/bin/janus

JanusEso quiere decir que Janus está en funcionamiento, luego ingresaremos al servidor Web de la siguiente forma :   http://debian/ y veremos los siguiente

janusSi desean ver el manual en video Alfredo realizó todo el proceso incluido como funcionan los demos de Janus

En el siguiente post haremos una guia de como enlazar Janus con Asterisk

Desactivando SIP ALG en Fortinet

SIPALGMencionar que el protocolos de Voz son los mas delicados que existen en el mundo de los servicios de infraestructura no es una novedad, debido primordial mente a que no pueden tener ningún tipo de retardo o falla durante su transmisión y en este caso protocolo SIP en este caso no es la excepción.

Bajo este contexto, algunos equipos perimetrales tipo Router, Firewall, UTM durante estos últimos años vienen implementando lo que llaman “Application Layer Gateway” o ALG evidentemente en favor de la protección ante fallas de seguridad,  ya que lo que hace es interceptar el trafico para administrarlo/gestionarlo antes de dejarlo pasar a su destino final.

SIPALG

Sin embargo este tipo de features no necesariamente surten en favor de uno cuando está desplegando una implementación de VoIP ya que ello va producir problemas durante las llamadas, causando entrecortes o caídas de llamada inesperados inclusive.

En este caso vamos a ver como desactivar SIP ALG de un equipo Fortinet 60D sin embargo puede ser aplicable para cualquier modelo.

1.-Desactivar sip-helper y sip-nat-trace

Ingresamos al CLI console mediante la interfase de administración y desactivamos las opciones de sip-helper y sip-nat-trace de la siguiente forma:

SIPALG

Una vez realizado esto es necesario reiniciar el equipo.

2.-Eliminar SIP dentro de session-helper

Luego ingresamos nuevamente, ahora es necesario identificar el ID del protocolo SIP dentro de la opción session-helper para luego eliminarla, esto se consigue de la siguiente forma:

SIPALGSIPALGComo vemos hemos identificado que el protocolo SIP se encuentra en el ID 13 , ahora procedemos a eliminarlo de la siguiente forma:

SIPALGUna vez que hemos eliminado el ID simplemente cerramos la sesion en la consola.

Espero les sirva.
Saludos
Juan Oliva

 

 

 

Instalación de Kamailio en Centos 7

kamailioEs indudable que Kamailio es uno de los software mas potentes en el mundo de la VoIP , por los diferentes escenarios que puedes construir relativos a seguridad, escalabilidad, redundancia y todo lo que termina en “dad”

Sin embargo mucha gente que comienza a aprender su funcionamiento se choca con la curva de aprendizaje, que es necesario tener para entender este programa, como lo dije en un tweet “si no te gusta la consola, kamailio no es lo tuyo” sin embargo nada es imposible de aprender por su puesto.

kamailioAntes de comenzar definamos rápidamente un par de cosas, Kamailio no es igual ni parecido a Asterisk, formalmente Asterisk es lo que se llamaría un “back to back user agent” o “B2UA” el cual es utilizado tradicionalmente para ser una PBX IP ya que cuenta con un sin numero de aplicaciones para un PLANTA IP como voicemail, IVR, Colas,etc,etc.

kamailio

En cambio Kamailio es un SIP PROXY en todos los sentidos, como su nombre lo dice, este tipo de software solo conversa SIP y nada mas, el cual puede trabajar como proxy proiamente, location server, registrar server, servidor de presencia, call routing (LCR) los cuales son algunos de los roles en los que puede trabajar.

kamailioAhora la pregunta sería, para los nativos Asterisk, puedo usar Kamailio como lo uso con Asterisk ?
Pues la respuesta sería que no, ya que si bien es cierto ambos trabajar para brindar servicios de SIP VoIP tienen diferentes usos.

Entonces para que uso Kamailio?
Se puede usar para extender funcionalidades que de pronto Asterisk queda limitado, como por ejemplo, escalar usuarios, ya que Kamailio solo trabaja con SIP su consumo de procesamiento es mucho menor al de Asterisk y puede trabajar como servidor de registro, tambien puedo usarlo para balancear carga hacia un conjunto de servidores Asterisk, o para que sea mi servidor de proteccion hacia internet, solo por citar algunos ejemplos.

kamailioEntonces puedo integrar Asterisk con Kamailio ?
Si, puedo integrarlo de muchas maneras en realidad, algunas muy sencillas otras mas complicadas pero si se puede, de hecho hay varios proyectos y/o productos que han integrado con gran exito Kamalio-Asterisk como Elastix MT SIP WISE

Una vez que hemos revisado un poco para que podemos usar Kamailio, vamos a comenzar con este primer post sobre como instalar Kamailio sobre Centos 7 en una instalación mínima.

1.- Configurar el sistema base
Luego de instalar Centos 7 al mínimo es necesario “arreglar” un par de cosas

Instalar editor, ifconfig , EPEL
yum install net-tools vim
yum -y install epel-release

Desactivar SELINUX
vi /etc/selinux/config
SELINUX=disabled

Desactivar Firewall
systemctl disable firewalld
systemctl status firewalld

2.- Instalar Kamailio
Ahora vamos a instalar desde los repositorios.

Agregar un repositorio
vi /etc/yum.repos.d/kamailio.repo

[kamailio]
name=RPMs for Kamailio on CentOS 7
type=rpm-md
baseurl=http://rpm.kamailio.org/stable/CentOS_7/
gpgcheck=1
gpgkey=http://rpm.kamailio.org/stable/CentOS_7/repodata/repomd.xml.key
enabled=1

Instalar Kamailio básico
yum install kamailio kamailio-utils kamailio-debuginfo

3.- Crear un archivo de configuración básico

vim /etc/kamailio/kamailio.cfg

##### Inicio
debug=2
log_stderror=yes
fork=yes
mpath=”/usr/lib64/kamailio/modules”
loadmodule “pv.so”
loadmodule “xlog.so”

route {
xlog(“L_INFO”,”Requerimiento entrante: $rm de $si a $ru \n”);
forward();
}

onreply_route {
xlog(“L_INFO”,”Respuesta entrante: $rm $rr – de $si a $ru \n”);
}
##### Fin

4.- Levantar el servicio y revisar LOG

Levantamos el servicio y si todo está bien veremos esto
kamailio
También es necesario, sobre todo si salen errores verificar los logs

tail -f /var/log/messages
kamailio

Algunos Links que deberías ver si te interesa saber un poco mas de Kamailio :

Kamailio :: A Quick Introduction
http://es.slideshare.net/oej/kamailio-a-quick-introduction

Kamailio – The Story for Asterisk
http://es.slideshare.net/miconda/kamailiothestory

Usando el módulo PIKE en Elastix MT
http://es.slideshare.net/elastixorg/usando-el-mdulo-pike-en-elastix-mt?qid=db7c2bb7-5d61-4190-a76d-89dd0f97565a&v=&b=&from_search=24

 

En otros post veremos un poco mas kamailio y algunas aplicaciones practicas.

 

Espero les sirva.
Saludos
Juan Oliva

 

 

 

 

Trunking SIP entre Elastix MT y Gateway E1 Dinstar

Desde la aparición de ElastixMT muchos han tenido dificultades para realizar integración sobre todo de proveedores, en muchos casos por problemas de compresión de Kamilio , sin embargo en otros como el escenario que vamos a desarrollar, la integración es prácticamente transparente, por supuesto sabiendo como es que funcionan las cosas evidentemente.

El escenario que vamos a desarrollar es el siguiente :

ElastixMT

En este caso vamos a tener ElastixMT troncalizado via SIP con un Gateway de la marca Dinstar que a su vez está configurado para conversar con un E1 PRI de algún proveedor.

En este caso no me voy a central mucho en la configuración del E1 en el gateway , para ello pueden revisar el post anterior donde hay mucho detalle de ello.

Vamos concentrarnos en la troncal SIP entre el ElastixMT y el gateway.

1.- Crear la troncal SIP en el Gateway

Dentro del equipo vamos a SIP Config -> SIP Tunk  y luego creamos nuestra troncal de la siguiente forma.

ElastixMT

Como vemos estamos apuntando a la IP 192.168.10.200 que pertenece a ElastixMT en el puerto 5060

2.- Crear la troncal SIP en ElastixMT

Sección General

ElastixMTSección Peer

ElastixMTDonde la IP 192.168.10.111 es la del Gateway

3.- Verificar el estado del Trunk

En el caso del Gateway vamos a Status & Statistics -> IP Trunk Status y veremos en el campo Link Status que se encuentra establecido.

DINSTRARLuego vamos al CLI de asterisk en  ElastixMT  y veremos

ELASTIXMTEn este caso ya tenemos reconocida la dirección IP del Gateway en el SIP TRUNK.

4.- Declarar y asignar DID en ElastixMT
Primero vamos a declarar el DID en PBX / PBX / DID / New DID

ElastixMT

Luego vamos a asignar asignarle el DID creado a la organización SILCOM en Manager / Organizaction / Organization/ Add DID  y quedaría de la siguiente forma:

ElastixMT

5.- Crear rutas entrantes

Vamos a PBX / PBX / Inbound Routes y creamos la ruta de la siguiente forma :

 

ElastixMTEn este caso estamos declarando que cuando exista una llamada al DID la en rute a la extensión 101 de la organización.


6.- Pruebas de llamadas
Una vez que tenemos todo configurado realizamos llamadas desde lal DID desde PSTN  que en rutará hacia nuestro ElastixMT y a la extensión 101.

ElastixMTComo vemos ingresa la llamada , ahora algunas capturas de lo que muestra el CLI

ElastixMTVemos que ingresa el DID

ElastixMTLuego vamos que se establece la ruta del canal hacia la extensión 101 definida previamente.

7.- Conclusiones

  • En este escenario especifico no es necesario modificar de alguna forma el comportamiento de Kamailio.
  • Para estas pruebas no se realizaron mayores configuraciones a bajo nivel mas que las mostradas en el tutorial.
  • La configuración del Trunk SIP solo fue probada en un equipo Dinstar MTG1000 , sin embargo no se descarta que pueda funcionar para otro tipo de gateways.

También se recomienda leer los post previos para una mejor comprensión del funcionamiento de ElastixMT:

Espero les sirva
Saludos
Juan Oliva

 

 

 

 

 

 

 

 

 

 

 

Interconexión entre Elastix y Gateway Dinstar vía PRI E1

De ves en cuento me piden realizar algunas configuraciones un poco fuera de lo común, sin embargo también es una muestra de lo versatil que puede ser usar software y hardware que cumplen con los estándares abiertos en telefonía y VoIP.

Es así, que en esta oportunidad vamos a ver como interconectar un Elastix contra un gateway con puertos E1 de la marca DINSTAR modelo MTG1000

Vamos a realizar una configuración diferente, haremos que Elastix trabaje como “operador”  y el Gateway como cliente de la siguiente forma:

DINSTAREn este caso el Elastix 1 trabajara como “operador” es decir tendrá señalización pri_net y manejará el clock (parámetro 0 de la configuración de span)

El tutorial lo vamos a dividir en 4 pasos

1.- Configuración de Elastix1
2.- Configuracion de Gateway Dinstar
3.- Verificar que la conexión E1 esté levantada en ambos
4.- Configuración del Trunk SIP entre el Dinstar y el Elastix2
5.- Creación de rutas entrantes /salientes  y pruebas

Comencemos:

1.- Configuración de Elastix1

En el detector de hardware configuramos el E1 de esta forma

DINSTARVerificar que tenemos el timing en “0” por que nosotros tendremos el clock.

Si entramos a “/etc/dahdi/system.conf” tendremos lo siguiente :

DINSTAR
Y en el “/etc/asterisk/dahdi-channels.conf” tendremos :

DINSTARComo ven en el parametro signalling lo tenemos como “pri_net” por que emularemos ser el operador.

 

2.- Configuración de Gateway Dinstar

Vamos a :   PSTN Group Config -> E1/T1 PARAMETER en donde definimos el comportamiento del E1 si va ser operador(local) o cliente(remote)

DINSTAR
Luego tendremos que modificar los parametros para el puerto donde tendremos configurado el PRIMARIO E1 en este caso será el port 0 de la siguiente forma :

DINSTAR

Ahora es necesario crear la troncal SIP con la cual trabajará el gateway es decir al servidor que le enviará las llamadas, en este caso el Elastix 2 , vamos a SIP CONFIG -> SIP TRUNK y creamos nuestra troncal de la siguiente forma

DINSTAR
Donde la dirección IP 192.168.10.220 será la IP de nuestro Elastix 2 basado en el esquema que estamos desarrollando

Ahora vamos a PRI CONFIG -> PRI TRUNK para darle las configuraciones finales de la siguiente forma.

DINSTARNote se en Switch type lo tenemos como  “User Slide” porque trabaja como CLIENTE según nuestro escenario.

3.- Verificar que la conexión E1 esté levantada en ambos

Hasta este punto, luego de reiniciar el gateway o el Elastix 1 inclusive ya tendremos levantado el E1 en el Elastix 1

DINSTAR
Y en el E1 tendremos lo siguiente :

DINSTAREn “Physis Status” tenemos el estado correcto.

Con esto nos aseguramos que tenemos ambos lados bien, es decir el Elastix 1 y el gateway configurados correctamente vía E1


4.- Configuración del Trunk SIP entre el Dinstar y el Elastix2

Ahora veremos como configurar el gateway contra el Elastix 2 mediante SIP.

Recordar que ya tenemos creada una troncal en el gateway que apunta al Elastix 2 , ahora tendremos que crear la troncal :

DINSTAREn los detalles del peer tendremos que apuntar a la IP del gateway

Luego ingresamos al gateway a la sección y veremos que tenemos establecido la troncal como se muestra a continuación.

DINSTAR

5.- Creación de rutas entrantes/salientes  y pruebas

Ahora en el Elastix 2 tendremos que crear una ruta entrante con un DID de prueba que será enviado desde el Elastix 1

DINSTARDINSTAR

Cuando llamemos desde el Elastix 1 al DID 7073890 el gateway lo recibirá y lo enviará al Elastix 2 y de esta forma lo veremos en el CLI de este ultimo:

La salida del CLI del Elastix 2

DINSTARDINSTAR

La llamada en funcionamiento :

DINSTAR

Agradecimiento a mi buen amigo Pedro Bustamante de BestSol que siempre tiene la buena disposición de prestarnos hardware para probar configuraciones como esta.

Espero les sirva
Saludos
Juan Oliva

 

 

 

Configurando seguridad en Elastix MT

ElastixMT

Configuración y dinámica de mi charla realizada en el ElastixWorld de Colombia para lograr configurar el módulo PIKE en Elastix MT

1.- Activar la variable en las definiciones globales
ElastixMT
2.- Verificar la carga del módulo

ElastixMT
3.- Configurar el módulo PIKE a gusto 😀

ElastixMT
4.- Evaluar en la lógica de enrutamiento

ElastixMT

Descargar archivo de configuración
http://www.silcom.com.co/configuration/kamailio.cfg

Vídeo de demostración

Espero les sirva
Saludos
@jroliva