jueves, 6 de marzo de 2014

Configurar un túnel OpenVPN y cliente SIP en Android

Nota: Ésta es la vista de impresión del Manual de referencia completo en una sola página. Si lo prefiere puede encontrar la versión original aquí.
Es una opción libre y cómoda para que los usuarios móviles puedan utilizar redes públicas, y por lo tanto no muy seguras, para conectarse a la centralita IP de la empresa. Nosotros lo utilizamos para conectarnos a Asterisk.

1. Introducción

En este mini-manual vamos a explicar como hemos configurar nuestro teléfono Android para acceder a una red corporativa a través de un tunel VPN gestionado con de OpenVPN.

Para aquellos que no conozcan OpenVPN, simplemente decir que es una solución robusta y versátil para montar una VPN corporativa. Tiene clientes para todas aquellas plataformas que vayamos a utilizar, y entre sus características principales está el que puede estar escuchando el puerto HTTPS (TCP 443). Esto es muy importante, porque es un puerto que vamos a encontrar abierto casi desde cualquier sitio en el que nos den una conexión, bien sea un hotel, un bar, etc.
La pega que se pone a este tipo de conexión gratuita es que puede haber alguien "escuchando" el tráfico que pasa por la red, con lo que podemos poner en riesgo nuestras credenciales al utilizar este tipo de conexiones.

La solución que nosotros planteamos aquí es la de utilizar este tipo de redes abiertas y gratuitas para abrir un túnel seguro y cifrado hasta nuestro servidor OpenVPN, el cual puede estar ubicado en la empresa o en nuestra propia casa. El software se encargará de enrutar a través del túnel todo el tráfico cuyo destino sea la red corporativa, con todas las posibilidades que esto ofrece (p.ej. abrir un cliente VNC para gestionar un servidor corporativo, etc)
Si con el cliente SIP queremos acceder a una centralita ubicada en la red corporativa, ya estaría todo solucionado. Si queremos acceder a un servidor SIP que está en Internet, podemos aprovechar que tenemos un túnel abierto hacia una zona que consideramos segura (nuestra red corporativa), para hacer que el tráfico hacia el servidor SIP vaya cifrado hasta la empresa, y salga desde allí sin cifrar hasta el servidor SIP.
Todo el tráfico que generemos en nuestro teléfono android viaja cifrado, con lo cual evitamos que alguien esnife el tráfico y obtenga nuestras credenciales.

2. El montaje ...

El escenario que planteamos es el siguiente:
  • En nuestra organización tenemos una centralita de telefonía IP basada en Asterisk, y podremos elegir conectarnos directamente a este servidor a través de SIP, o bien conectaros a cualquier otro tipo de servidor que soporte SIP.
  • Tenemos además gestión de túneles a través de OpenVPN. En este caso tenemos un cliente configurado con Ubuntu del cual cogeremos la configuración OpenVPN. No cabe duda de que también podríamos crear una configuración partiendo de cero, pero no es el objetivo de este manual.


Instalando un cliente SIP en el smartphone

Existen distintos programas para utilizar VoIP en android. Nosotros utilizamos Sipdroid y estamos a gusto con él. Da la opción de configurar dos cuentas distintas, y la configuración es sencilla. Basta con introducir el usuario, contraseña y servidor para ponerlo en marcha.
SipDroid configuración

Instalando el cliente OpenVPN en el smartphone

Aquí también hay distintas opciones. Desde utilizar la propia configuración nativa de android para configurar el cliente VPN, hasta instalar un programa de los que hay en el Play Store. Nosotros hemos optado por la segunda tras varios intentos infructuosos con la primera. El programa que hemos utilizado es OpenVPN para Android de Arne Schwabe.
Cliente OpenVPN para android

La configuración es sencilla. Una vez finalizada la instalación se abre la aplicación y se procede a añadir un nuevo Perfil VPN.
Cliente OpenVPN para android, perfiles
En la siguiente ventana, se pulsa sobre el icono de carpeta que nos da la opción a elegir un fichero de configuración previo.
Cliente OpenVPN para android (III)
En este punto, cargaremos el fichero de configuración que previamente hemos exportado desde nuestro equipo con Ubuntu, ya que tenemos los parámetros ya configurados y sabemos que nos va a funcionar. No lo hemos probado, pero tiene que ser lo mismo si tienes instalado tu cliente en Windows o MAC.
Cliente OpenVPN para android (IV)
Un detalle. En el fichero .conf que hemos exportado, podemos observar que los certificados estaban en un path concreto, un path de nuestro equipo Ubuntu. Si estáis utilizando Windows o Mac, el path será relativo a vuestro sistema, pero en todo caso, no es un path que se corresponda con la estructura de ficheros de Android. Hay que tener en cuenta que en la configuración Android, ese path variará en función del sitio en el que hayamos dejado los certificados en el teléfono.

En mi caso he creado en la memoria interna del teléfono una carpeta llamada openvpn en el path: /mnt/sdcard/openvpn , y es en esta carpeta donde he copiado los certificados a los que se hace referencia en el fichero .conf.

Cliente OpenVPN para android (VI)
Con esta información, he modificado los paths en el fichero .conf para que apunten a la carpeta correcta
Cliente OpenVPN para android (V)
Ya está, con esto ya tenemos el cliente VPN instalado y configurado. En este punto conviene probar la conexión y comprobar que podemos acceder a recursos privados de la red corporativa a la que nos hemos conectado: haciendo un ping a un servidor interno, accediendo vía web a algún servicio privado, etc.

Enrutando todo el tráfico del teléfono a través de túnel

Tal y como hemos comentado al principio, por túnel se enrutará solamente el tráfico cuyo destino sea la red privada que está al final del túnel, típicamente la red privada corporativa. En nuestro caso, a veces nos puede interesar que el tráfico hacia otros recursos de Internet vaya también cifrado a través del túnel, evitando así que quien nos da la conectividad wifi gratuita pueda vigilar nuestro tráfico y comprometer nuestras cuentas.
Esto lo haríamos a través de la opción Enrutamiento del perfil OpenVPN que acabamos de crear en el teléfono
Cliente OpenVPN para android (VII)

Ejemplo de uso de lo aprendido

Este tipo de configuración es muy útil cuando alguien de la empresa viaja al extranjero. En estas situaciones, el coste de las llamadas telefónicas suele ser elevado ya que se trata de llamadas internacionales.
Con lo que hemos visto, el usuario que está en el extranjero puede conectarse a través del túnel VPN a la red corporativa, conectarse con el cliente SIP a la centralita corporativa a través del túnel, y realizar/recibir llamadas con su extensión local como si estuviera en la misma empresa. Tanto las llamadas entrantes como salientes se enrutarían a través del túnel, con lo que el coste internacional desaparecería y se aplicarían las tarifas corporativas que se aplican a las líneas de la centralita corporativa.
El único coste sería el de la conexión a Internet del usuario móvil en el extranjero, y como hemos comentado anteriormente puede ser la conexión gratuita que obtenemos en el hotel o en un bar.

3. Créditos y licencia

Autor: Pedro Arreitunandia
Fecha: 28 de febrero del 2013
Cualquier duda o comentario acerca de este manual, la puedes hacer respondiendo a este post en nuestro blog

No hay comentarios:

Publicar un comentario