BeFree – Evento de Comunicaciones Open Source en Latinoamerica

Como algunos saben, durante varios años vengo trabajando en temas de VoIP que es mi segunda pasión profesional luego del #Hacking y la seguridad , En este tiempo he estado involucrado en varias iniciativas como Elastix y FreePBX inclusive, siendo instructor en su momento del primero en su momento.

Si bien es cierto todo en la vida cambia y aveces bastante rápido, siempre he proclamado y seguido la linea del uso del código abierto para soluciones de VoIP – Telefonía IP, ya que esta provee un punto de inflexión para el crecimiento profesional de los individuos que la utilizamos, personalmente he podido modificar, crear, programar nuevas funcionalidades, modificar código para brindar seguridad a mi gusto, lo cual potencia en y un 1000% de una solución de comunicaciones unificadas.

Es así, que he tenido el honor de ser invitado como speaker/conferencista al BeFreeEvento de Comunicaciones Open Source en Latinoamerica, a desarrollarse este 21 de Junio en la ciudad de México, BeFree es un evento que busca fortalecer la comunidad de Comunicaciones Unificadas Open Source y difundir innovación en tecnologías emergentes, en el marco de estas ideas, se difundirá el ecosistema de Issabel (PBX IP basada en Software Libre y de Código Abierto) que busca en pocas palabras, apunta a ser la propuesta a muy largo plazo ante la desaparición de Elastix, la cual por supuesto ha concitado la atención de la prensa en México, como se muestra a continuación.

BeFree, estará compuesto de exposiciones, conferencias, talleres y un hacktaton, este ultimo es un espacio muy interesante desarrolladores, en donde podrán participar de un maratón de creación software o “Addons” para resolver alguna problemática en concreto.

Por otro lado también estarán presentes personalidades del mundo VoIP/Asterisk como Nicolas Gudiño – Creador de Asternic Call Center , David Duffett – Director, Comunidad Mundial de Asterisk en DIGIUM , Alfio Muñoz Experimentado Instructor de Asterisk , Saul Ibarra – Senior Software Developer en Atlassian “Jitsi”

Finalmente, brindaré una charla denominada @IssabelIP una relación segura” en donde mostrare pasos muy prácticos para fortalecer la plataforma y minimizar riesgos de seguridad en una plataforma IP PBX basada en Asterisk.

Es así que si estas en México, no puedes de dejar de asistir el BeFree y si eres lector de este blog, por favor acércate que sera un inmenso gusto poder platicar de los temas que nos interesan.

Nos vemos en el BeFree!!

 

Vulnerabilidad en A2BILLING ELASTIX 2.5 2.4 thanku-outcall iridium_threed.php

Por experiencia algunas vulnerabilidades toman un tiempo en “madurar” o hacerse masivas, esto ha pasado con está específicamente. En estas ultimas semanas he recibido muchas noticias y comentarios de hackeos a plantas, PBX, Centrales basadas en Elastix 2.4 y 2.5 en donde se crean un contexto llamado thanku-outcall esto por lo general, nombre del contexto puede cambiar evidentemente,  el objetivo es que se crea un contexto que permite sacar llamadas o en algunos casos mas creativos permiten originar llamadas solo para abrir un canal hacia un 0800 por ejemplo.

Como ingresan ? Cual es el punto de acceso?
Pues para variar el punto de acceso es vía Web ( Puerto 80, 443)  se trata de un archivo vulnerable en A2billing específicamente el archivo “iridium_threed.php” el cual permite una inyeccion SQL el cual inserta un registro en el servidor de base de datos de esta forma:

Luego de ello se crea un contexto en el archivo extensions_custom.conf alguna variante puede hasta crear un archivo en el directorio de publicación de apache.

La vulnerabilidad es clasificada como crítica. El punto de acceso es una función desconocida del archivo a2billing/customer/iridium_threed.php del componente Billing es afectada por esta vulnerabilidad. Mediante la manipulación del parámetro transactionID de un input desconocido se causa una vulnerabilidad de tipo sql injection.

La vulnerabilidad fue publicada el 2015-03-07 en exploitdb  la cual pueden verificar en https://www.exploit-db.com/exploits/36305/. La vulnerabilidad es identificada como CVE-2015-1875. La explotación se considera fácil. El ataque se puede efectuar a través de la red. La explotación no necesita ninguna autenticación específica.

Como parcho , Como lo corrijo o mitigo?
Si necesitas A2billing , es migrar a la versión superior, ya que la que trae Elastix es una version bastante antigua,  sin embargo sabemos que en las PBX no necesitas este software, lo recomiendo personalmente  es eliminarlo sacar del directorio de publicación de apache la carpeta A2billing.

Y si no tengo publicado mi Elastix no me interesa ?
Pues si te debería interesar ya que los hackeos no necesariamente vienen desde afuera, ahora con las vulnerabilidades como wanacry no te puedes fiar de tu red interna.

Y si tengo Issabel PBX o FreePBX ?
Pues para tranquilidad Issabel o FreePbx no trae A2billing fue un gran acierto eliminar aplicaciones “extra”

Espero les sirva la info.
Juan Oliva
@jroliva

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

Interconnection Elastix between Gateway Dinstar via PRI E1 (English Version)

Sometimes they asked to perform some implementations a bit unusual. However, it is also a sign of how versatile it can be used software and hardware that comply with open standards in telephony and VoIP.

Thus, that this time we will see how to interconnect a Elastix with gateway E1 ports Dinstar brand model MTG1000

We will perform a different configuration, tailored to Elastix works as “operator” and the Gateway client as follows:

DINSTARIn this case the Elastix 1 functions as an “operator” will pri_net ie signaling and manage the clock (parameter 0 span configuration)

The tutorial will be divided into 4 steps:

1. Configuration of Elastix1
2
Configuration Dinstar Gateway
3. Verify that the E1 connection is built in both
4. Configuring the SIP Trunk between Dinstar and Elastix2
5. Creating inbound / outbound routes and testing

Let’s start:

1. Configuration of Elastix 1
In the detector hardware configure the  E1 as follows

DINSTARVerify that we have the timing to “0” because we have the clock.

If we go to “/etc/dahdi/system.conf” we find:
DINSTAR
And in the “/etc/asterisk/dahdi-channels.conf” we have:

DINSTARAs you see in the signaling parameter we have as “pri_net” that simulate be the operator.

2. Configuration of Gateway Dinstar
We will: PSTN Group Config –> E1 / T1 PARAMETER where we define the behavior of E1 if you will be operator (local) or client (remote)

DINSTAR
Then we have to change parameters for the port where we set the PRIMARIO E1 in this case will be the port 0 as follows:

DINSTARNow you need to create the SIP trunk with which the gateway will work, ie the server will send the call, in this case the Elastix 2, we‘ll SIP CONFIG –> SIP TRUNK and create our trunk as follows

DINSTARWhere IP is the IP address 192.168.10.220 our Elastix 2 based on the scheme we are developing

Now let’s PRI CONFIG –> PRI TRUNK to give the final settings as follows.

DINSTARSwitch type Note in what we like “Use Slide” because it works as a client according to our scenario.

3. Verify that the E1 connection is built in both
At this point, after restarting the gateway or Elastix 1 inclusive, Connection E1 is raised

DINSTAR
And
in the gateway E1 we have the following:

DINSTARIn Physis Status” have the correct status.

With this we ensure that both sides have good, ie the Elastix 1 and the gateway configured correctly via E1

4. Configuring the SIP Trunk between Dinstar and Elastix2

Now we will see how to configure the gateway against Elastix 2 by SIP.

Remember that we have created a trunk in the gateway that points to Elastix 2 now we have to create the trunk:

DINSTARIn the details of the peer we have to point to the IP gateway

Then we enter the gateway to the section and see what we have set the trunk as shown below.

DINSTAR

5. Creating inbound / outbound routes and testing

Now in the Elastix 2 we have to create an incoming DID route with a test that will be sent from the Elastix 1

DINSTARDINSTAR

When the Elastix 1 call to 7073890 DID the gateway will meet and send the Elastix 2 and in this way we will see in the CLI of the latter:

The output of CLI Elastix 2

DINSTARDINSTAR

The call operation:

DINSTAR
Thanks to my good friend Pedro Bustamante the BestSol which always has the willingness to lend to test hardware configurations like this.

I hope they serve
Cheers
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

 

 

 

ElastixWorld 2015 – Nos vemos en Colombia!!

elastixComo todos los años este 7 de octubre se realizará uno de los eventos más importantes relacionados con el mundo de la VoIP y comunicaciones basadas en software libre.

ElastixWorld , no solo reunirá durante 2 días a las mejores marcas del mercado de telefonía IP como Openvox, Sangoma, Xmartek , Dinstar, Grandstream, Yealink, entre otras, las cuales mostrarán hardware y harán demos en vivo en los stands, si no también juntará a un conjunto de expositores de nivel mundial, que presentarán charlas sobre estudios, casos de éxito en VoIP relacionado con software Libre, presentando temas como balanceo , escalabilidad, programación con  REST , desarrollo con WebRTC , seguridad, etc.

Pueden ver el detalle de las charlas aquí : http://www.elastixworld.com/2015/conferencistas/

En mi caso, este año, tendré el gusto de participar con la charla “Usando el módulo PIKE en Elastix MT”

elastix
En donde haremos textualmente un “hacking” a Elastix MT, pero está vez no será para buscar vulnerabilidades,  si no “hacking” para entender como funciona por dentro, esta relación asombrosa que han conseguido entre kamailio y Asterisk  para luego ingresar al área de la seguridad y ataques, en donde mostraré la configuración y  funcionamiento en vivo del modulo PIKE en está plataforma la cual  es muy interesante, sobre todo para operadores de telefonía o empresas que desean hacer virtual PBX entre otras cosas.

Este año como novedad existirá un stand donde estarán todos los instructores oficiales de Elastix denominado “Elastix Guru” para los asistentes que deseen hacer consultas o dudas de este campo, espero tener el gusto de conocer en ese espacio, a mas de uno que visita este blog.

elastix
Otra actividad que tiene mucha expectativa es el lanzamiento oficial de Elastix 4 a cargo del su creado Edgar Landivar, en donde la mayor feature es que estará basada en Centos 7 lo cual representa una salto muy importante en está rama de la distribución.

elastix

Es así que si estas en Colombia, es un evento al cual no puedes dejar de asistir y si no lo estás,  aún tienes tiempo para comprar tu pasaje y estar presente, realmente lo recomiendo ya que se nutrirán de mucho conocimiento, no solo de VoIP , si no también de soluciones basadas en software libre enfocadas a las comunicaciones IP.

Entonces … nos vemos en Colombia!!

Saludos
Juan Oliva
@jroliva