miércoles, 24 de junio de 2015

Configurando Asterisk TLS + SRTP

- RedHat 6.3
- certified-asterisk-11.6-cert9

PASO 1

El protocolo XMPP permite conexiones seguras entre cliente y servidor utilizando el protocolo TLS; para ese efecto se instala, antes de IKSEMEL, las respectivas librerías:

yum install gnutls gnutls-devel gnutls-utils

se continua con IKSEMEL:

cd /usr/src
wget http://iksemel.googlecode.com/files/iksemel-1.4.tar.gz
tar -xf iksemel-1.4.tar.gz
cd iksemel-1.4
./configure --prefix=/usr
make

Antes de la instalación se ejecuta un test para averiguar que la compilación haya tenido éxito:

make check
PASS: tst-ikstack
PASS: tst-iks
PASS: tst-sax
PASS: tst-dom
PASS: tst-sha
PASS: tst-md5
PASS: tst-filter
PASS: tst-jid
==================
All 8 tests passed
==================

Ya que todo está bien, se puede instalar:

make install

Por último la librería LIBSRTP que permite implementar el cifrado del flujo media en Asterisk a través del protocolo SRTP (RFC3711):

cd /usr/src
wget http://downloads.sourceforge.net/project/srtp/srtp/1.4.4/srtp-1.4.4.tgz
tar -xf srtp-1.4.4.tgz
cd srtp
./configure --prefix=/usr CFLAGS=-fPIC
make

Antes de lanzar el make runtest, para que tenga éxito, hay que modificar una línea en el archivo que ejecuta el test:

vim test/rtpw_test.sh

Cambiar esta línea:

RTPW=rtpw

Para que quede:

RTPW=./rtpw

Se continúa con el test:

make runtest
make install

Nota: En la instalación de Asterisk incluir res_srtp.

PASO 2

Se verá como configurar una conexión SIP entre un Asterisk y un Usuario SIP utilizando el protocolo TLS para la señalización SIP y el cifrado media con el protocolo SRTP.

Primero hay que crear los certificados de nuestro servidor. Esto se hace con una utilidad presente en las fuentes de Asterisk. Desde el servidor:

mkdir /etc/asterisk/keys

Primero se crea el certificado CA y el certificado para el servidor:

cd /usr/src/certified-asterisk-11.6-cert9/
cd contrib/scripts

./ast_tls_cert -C 192.168.1.40 –O "pbx-asterisk" -d /etc/asterisk/keys/

-    La opción “C” se utiliza para definir nuestro host.
-    La opción " -O " define el nombre de nuestra organización.
-    La opción " -d " es el directorio de salida de las llaves.
-    Se le pedirá que introduzca una frase de acceso /etc/asterisk/keys/ca.key, ésta frase tendrá que recordarla. Se creará el archivo/etc/asterisk/keys/ca.crt
-    Se le pedirá que introduzca la frase de nuevo, y entonces se creará el archivo /etc/asterisk/keys/asterisk.key
-    El archivo /etc/asterisk/keys/asterisk.crt se generará automáticamente.
-    Se le pedirá que introduzca la frase de paso por tercera vez, y se creará el /etc/asterisk/keys/asterisk.pem, una combinación de los archivos asterisk.key y asterisk.crt.

Segundo creamos la clave del teléfono utilizando la misma autoridad de certificación.

./ast_tls_cert -m client -c /etc/asterisk/keys/ca.crt -k /etc/asterisk/keys/ca.key -C 192.168.1.100 -O "pbx-asterisk" -d /etc/asterisk/keys -o TEL-YEALINK-100

-        Con  la opción -m se indica el tipo de certificado. En este caso un certificado cliente
-        Con la opción -c se indica la ruta del certificado de la autoridad de certificación
-        Con la opción -k se indica la ruta de la clave del certificado de la autoridad de certificación.
-        Con -C se indica el nombre de dominio o la IP de donde se conectará el teléfono.
-        Con la opción -O se indica el nombre de la empresa o de la institución
-        Con la opción -d se indica la ruta donde se guardarán los certificados
-        Con la opción –o indicamos el nombre de generación de los archivos.

PASO 3

Configuramos el sip.conf agregando las siguientes líneas.

tlsenable=yes
tlsbindaddr=0.0.0.0
tlscertfile=/etc/asterisk/keys/asterisk.pem
tlscafile=/etc/asterisk/keys/ca.crt
tlscapath=/etc/asterisk/keys
tlsdontverifyserver=yes

Configuramos nuestro usuario SIP.

[1000]
type=friend
accountcode=1000
language=es
secret=12345
qualify=yes
mailbox=1000@default
host=dynamic
dtmfmode=rfc2833
context=test-srtp
directmedia=no
callerid=Anexo 1000 <1000>
callgroup=1
pickupgroup=1
disallow=all
allow=ulaw
allow=alaw
allow=g729
allow=h263
cc_agent_policy=generic
cc_monitor_policy=generic
transport=tls
encryption=yes

Hay que trasferir los certificados y copiarlos en algún directorio de nuestra PC.


ca.crt

CONFIGURANDO TLS-SRTP EN TELEFONOS YEALINK

Configuramos nuestro Teléfono Yealink Como sigue:



Nota: El puerto del SIP Server es el 5061


En Avanzado seleccionamos en Encripción RTP (SRTP) -> Compulsory



Luego vamos a la pestaña Seguridad -> Certificados Confiados
Cargamos nuestro ca.crt -> Upload -> Confirmar.




Verificamos que el anexo este registrado.


CONFIGURANDO TLS-SRTP EN TELEFONOS SNOM

Creamos siguiendo los mismos pasos que en Yealink.

./ast_tls_cert -m client -c /etc/asterisk/keys/ca.crt -k /etc/asterisk/keys/ca.key -C 192.168.1.110 -O "pbx-asterisk" -d /etc/asterisk/keys -o TEL-SNOM-110

Configuramos nuestro teléfono Snom como sigue.




Nos vamos a la pestaña SIP

SIP -> Support broken Registrar: on
Apply


Seguidamente vamos a la pestaña RTP

RTP -> RTP Encryption: on
RTP -> SRTP Auth-tag: AES-32
RTP -> Media Transport Offer: UDP
Apply



Cargamos nuestro Certificado en:

Cerficates:



Nota: Si al subir el certificado (ca.crt) nos sale el siguiente mensaje:




Le damos Add Exception y verificamos en Server Certificates:

Verificamos que se ha registrado el Anexo con éxito.

Fuente de apoyo: https://www.voztovoice.org/