Blog

Seguridad en Android – Parte III – VPN (I)

El estudio que  se está realizando de la seguridad en Android se está enfocando hacía el desarrollo de una política de seguridad en entornos empresariales. Es por eso, que en este punto se va a explicar la implementación de una VPN a la cual conectar nuestro dispositivo Android.

En este post se va a realizar un estudio de las distintas implementaciones de VPN. A su vez, se elegirá una implementación y se argumentará la elección de dicha implementación.

En primer lugar, debemos tener claro qué es una VPN:

Una VPN es el uso de varias tecnologías para proveer una red de recursos e información privada sobre cualquier red pública, incluyendo Internet.

Sin título

 

A la hora de implementar una VPN, hay distintos tipos que utilizan diferentes protocolos:

  • IPSec. Es un estándar de la IETF que provee confidencialidad, integridad, autenticidad y protección, utilizando los protocolos Authentification Protocol (AH) y Encapsulated Security Payload (ESP). Actualmente hay varias implementaciones para Linux que utilizan este estándar como FreeS/Wan.
  • SSL/TLS. Permite la definición de canales seguros sobre TCP. El protocolo SSL está compuesto por dos capas: la primera capa (SSL Record Protocol) encapsula los protocolos de nivel más alto y la segunda capa (SSL HandShake Protocol) gestiona la negociación de los algoritmos de cifrado y la autentificación entre el cliente y el servidor. Una vez realizada la autentificación, se establece el túnel y se pasa el control a la capa de aplicación. Una solución basada en este protocolo es OpenVPN que es la que usaremos para implementar nuestra VPN.
  • L2TP. El Layer-2 Tunneling Protocol es un protocolo utilizado para encapsular paquetes PPP a través de UDP. Este protocolo se encarga de la confidencialidad, autenticidad e integridad entre los extremos del túnel.
  • PPTP.  Point to Point Tunneling Protocol originalmente desarrollado por 3com, Microsoft y US Robotics entre otros, nos permite encapsular cualquier protocolo de red en datagramas IP, basándose en el protocolo Generic Routing Encapsulation (GRE). Para la autentificación tenemos tres opciones: CHAP (intercambia una clave que debe coincidir en ambos extremos), MS-CHAP (Extensión de Microsoft al protocolo CHAP) y PAP (envío de contraseñas sin cifrar). PPTP utiliza RC4 de RSA para el cifrado con una clave de 40 bits. Este protocolo no es muy seguro.
  • VPND. Virtual Private Network Daemon crea un dispositivo serie virtual y usa Blowfish.

Para nuestra implementación de una VPN vamos a utilizar OpenVPN. Mientras que otras soluciones de VPN utilizan mecanismos propietarios o que no son estándar, OpenVPN tiene un concepto modular para la seguridad de capa y de red. OpenVPN utiliza el mecanismo SSL/TLS para la autentificación y el cifrado, y no sufre de la complejidad que caracteriza a otras implementaciones como IPSec. Además, ofrece otras posibilidades que van detrás del objetivo de cualquier implementación VPN:

  • Capa 2 y 3 VPN. Ofrece dos modos básicos, los cuales corren en la capa 2 o en la capa 3. Los túneles de OpenVPN también pueden transportar paquetes Ethernet OPX y paquetes Windows Network Browsing (NETBIOS), los cuales dan problemas en otras soluciones de VPN.
  • Protección de campo con un firewall interno. Un trabajador conectado a la central de su compañía mediante VPN puede cambiar  la configuración de red en su ordenador,  de tal forma que toda su información sea mandada a través del túnel VPN. Una vez que OpenVPN ha establecido un túnel, el firewall central de la compañía puede proteger el ordenador, aunque no sea una máquina local. Únicamente un puerto de red debe ser abierto a la red local por el trabajador. Por lo tanto, el trabajador siempre está protegido mediante el firewall de la compañía.
  • Las conexiones OpenVPN pueden ser tunelizadas a través de casi todos los firewalls. Si tienes acceso a Internet y puedes acceder a sitios web mediante HTTPS, OpenVPN funciona sin problemas.
  • Soporte  de proxy. OpenVPN tiene soporte de proxy y puede ser configurado para correr como un servicio TCP o UDP, y como cliente o servidor. Como servidor, OpenVPN solamente espera hasta que un cliente solicita una conexión. Como cliente, intenta establecer una conexión acorde a su configuración.
  • Únicamente un puerto debe ser habilitado para permitir conexiones. Desde OpenVPN 2.0, el modo servidor especial permite conexiones de entrada múltiples en el mismo puerto TCP o UDP, mientras que se usan multiples configuraciones diferentes para cada conexión.
  • La interfaz virtual permite especificar reglas especiales para cada red y firewall. Todas las reglas, restricciones y demás mecanismos pueden usarse con túneles de OpenVPN.
  • Alta flexibilidad con muchas posibilidades de scripting. Ofrece numerosos puntos durante las conexione para iniciar scripts individuales. Estos scripts pueden ser utilizados para una gran variedad de propósitos como la autentificación.
  • Gran rendimiento para IPs dinámicas. Con OpenVPN no hay necesidad de usar IPs estáticas en cada lado del túnel. Ambos extremos pueden tener un  acceso DSL más barato con IPs dinámicas y el usuario rara vez se enterará de un cambio de IP.
  • OpenVPN funciona sin problema con NAT. Tanto los clientes como los servidores  pueden formar parte de una red privada con direcciones IP. Cada firewall puede ser usado para mandar el tráfico al otro extremo del túnel.
  • Instalación sencilla en cualquier plataforma. Tanto la instalación como el uso de OpenVPN es extremadamente simple. Especialmente, si has intentado establecer conexiones mediante IPSec.
  • Diseño modular. Posee un diseño modular con gran simplicidad. Ninguna otra implementación de VPN puede ofrecer las mismas opciones con el mismo nivel de seguridad.

En el siguiente post realizaremos la implementación de una VPN mediante OpenVPN e intentaremos conectarnos a ella mediante un dispositivo Android.

Autor:  Borja Simancas (@borjasr92)

Leave a Reply

*

    No Twitter Messages