# OpenVPN/Marco Teórico
## Open VPN

Nota previa
El presente trabajo se basa fundamentalmente en el excelente libro de Markus Feilner: Building and Integrating Virtual Private Networks – ISBN 1-904811-85X No deje de leerlo para profundizar en este tema.

## Introducción

OpenVPN, es un excelente producto de software creado por James Yonan en el año 2001 y que ha estado siendo mejorado desde entonces.
Ninguna otra solución ofrece una mezcla semejante de seguridad a nivel empresarial, seguridad, usabilidad y riqueza de características.
Es una solución multiplataforma que ha simplificado mucho la configuración de VPN's dejando atrás los tiempos de otras soluciones difíciles de configurar como IPsec y haciéndola más accesible para gente inexperta en este tipo de tecnología.
Supongamos que necesitamos comunicar diferentes sucursales de una organización. A continuación veremos algunas soluciones que se han ofrecido como respuesta a este tipo de necesidades.
En el pasado las comunicaciones se realizaban por correo, teléfono o fax. Hoy en día hay factores que hacen necesaria la implementación de soluciones más sofisticadas de conectividad entre las oficinas de las organizaciones a lo largo del mundo.
Dichos factores son:
* La aceleración de los procesos de negocios y su consecuente aumento en la necesidad de intercambio flexible y rápido de información.
* Muchas organizaciones tienen varias sucursales en diferentes ubicaciones así como también tele trabajadores remotos desde sus casas, quienes necesitan intercambiar información sin ninguna demora, como si estuvieran físicamente juntos.
* La necesidad de las redes de computación de cumplir altos estándares de seguridad que aseguren la autenticidad, integridad y disponibilidad.
Líneas dedicadas Las necesidades antes mencionadas se satisfacían en principio colocando líneas dedicadas entre las diferentes ubicaciones remotas a un costo mucho mayor que el de simple acceso a Internet. Se necesitaban conexiones físicas reales necesitando de un proveedor en cada sitio resultando en una solo línea de comunicación entre dos partes.
Por ejemplo, para una red de 4 nodos en la cual se buscase comunicación de todos con todos, habría que tender 6 línea de comunicación.
Además, para dar conectividad a trabajadores domésticos o viajeros se implementaban servicios RAS1 para aquellos que necesitaban conectarse temporalmente mediante conexiones de módem o líneas ISDN2 donde la organización se comportaba como un proveedor de Internet (ISP).
Acceso mediante Internet y VPNs
Con la llegada de Internet y la baja de costos en conectividad se desarrollaron nuevas tecnologías. Surgió entonces la idea de utilizar a Internet como medio de comunicación entre los diferentes sitios de la organización. Surge así la idea de las VPN's que son “Virtuales” y “Privadas”. Virtuales porque no son redes directas reales entre partes, sino solo conexiones virtuales provistas mediante software sobre la red Internet. Además son privadas porque solo la gente debidamente autorizada puede leer los datos transferidos por este tipo de red logrando la seguridad mediante la utilización de modernos mecanismos de criptografía. Retomando el ejemplo anterior de una organización con cuatro sitios, ahora solo necesitamos cuatro conexiones a Internet en lugar de las seis dedicadas de antes. Además los que se conectan temporalmente, también lo hacen mediante una conexión a Internet, mucho más barata y accesible desde muchos lugares, como por ejemplo de cybers cafés.

## Usos de las VPN's

Las VPN's se usan generalmente para:
* Conexión entre diversos puntos de una organización a través de Internet
* Conexiones de trabajadores domésticos o de campo con IP's dinámicas
* Soluciones extranet para clientes u organizaciones asociadas con los cuales se necesita intercambiar cierta información en forma privada pero no se les debe dar acceso al resto de la red interna.

## Implementación de VPN

Supongamos que se tienen dos sitios de una organización conectados a Internet. En ambos se contará con un equipo de conexión a la red de redes que cumplirá la función de ruteo hacia y desde Internet así como firewall para protegerse de accesos no autorizados. El software VPN debe estar instalado en ese firewall o algún dispositivo protegido por él. Una de los sitios será el “servidor” y será el sitio que contiene la información y sistemas que queremos compartir, mientras que al otro lo llamaremos “cliente”. El servidor será entonces configurado para aceptar conexiones desde el cliente (y viceversa). Llegado este punto habremos logrado tener dos sitios comunicados como en una red directa real pero aun no es una VPN dado que falta implementar la “privacidad”, pues cualquier nodo intermedio de Internet puede leer la información que viaja sin protección. Lo que se debe hacer seguidamente es establecer mecanismos de encriptación que mediante uso de claves aseguren que solo equipos o personas dueños de esas claves puedan acceder a los datos enviados por la VPN. Todos los datos enviados del punto A al B deberán ser encriptados antes de ser enviados y desencriptados en el otro extremo para posteriormente ser entregados normalmente a su destinatario final. Uno de los factores que diferencian a una implementación de VPN de otra, son los mecanismos que utilicen para encriptar y distribuir claves a todos los integrantes de dicha red.

## Protocolos

Las soluciones de VPN pueden ser implementadas a diferentes niveles del modelo OSI de red.
Implementaciones de capa 2 - Enlace
El encapsulamiento a este nivel ofrece ciertas ventajas ya que permite transferencias sobre protocolos no-IP, como por ejemplo IPX4 de Netware Systems. Teóricamente, las tecnologías implementadas en capa 2 pueden tunelizar cualquier tipo de paquetes y en la mayoría de los casos lo que se hace es establecer un dispositivo virtual PPP5 con el cual se establece la conexión con el otro lado del túnel.
Algunos ejemplos de estas tecnologías:
* PPTP: Point to Point Tunneling Protocol. Desarrollado por Microsoft, es una extensión de PPP.
Su principal desventaja es que solo puede establecer un túnel por vez entre pares.
* L2F: Layer 2 Forwarding. Desarrollado por la empresa Cisco principalmente, ofrece mejores posiblidades que PPTP principalmente en el uso de conexiones simultáneas.
* L2TP: Layer 2 Tunneling Protocol. Usado por Cisco y otras fabricantes, se ha convertido en estándar de la industria y combina las ventajas de PPTP y L2F y además eliminando las desventajas.
Dado que esta solución no ofrece mecanismos de seguridad, para su uso deberá ser combinada con otros mecanismos generalmente implementados en capa 3 del modelo OSI.
* L2Sec: Layer 2 Security Protocol. Desarrollado para proveer una solución con seguridad, utiliza para ellos SSL/TLS aunque impone una sobrecarga bastante grande en la comunicación para lograrlo.
Implementaciones de capa 3 - Red
IPsec es la tecnología más aceptada en este punto y fue desarrollada como un estándar de seguridad de Internet en capa 3. IPsec se puede utilizar para encapsular cualquier tráfico de capa 3 pero no el tráfico de capas inferiores, por lo que no se podrá utilizar para protocolos no-IP como IPX o mensajes de broadcast. Su principal ventaja es que puede ser usado prácticamente en cualquier plataforma existiendo una gran variedad de soluciones tanto de software como de hardware.
Existen dos métodos principales usados por IPsec:
* Modo Tunnel. Todos los paquetes IP son encapsulados en un nuevo paquete y enviados a través del túnel siendo desempaquetados en el otro extremo y posteriormente dirigidos a su destinatario final. En este modo, se protegen las direcciones IP de emisor y receptor así como el resto de los metadatos de los paquetes.
* Modo Transporte. Solo la carga útil (payload) de la sección de datos es encriptada y encapsulada. La sobrecarga entonces, es sensiblemente menor que en el caso anterior, pero se exponen los metadatos a posibles atacantes que podrán ver quien se está comunicando con quien.
Implementaciones de capa 4 - Transporte
También es posible establecer túneles en la capa de aplicación y de hecho son ampliamente utilizados hoy en día siendo algunas aproximaciones soluciones como SSL6 y TLS7. El usuario accede a la VPN de la organización a través de un browser iniciando la conexión en un sitio web seguro (HTTPS-Secured website).
Además, existen otros productos como SSL-Explorer y otros que ofrecen una combinación de gran flexibilidad, seguridad fuerte y facilidad de configuración. La seguridad es lograda mediante encriptamiento del tráfico usando mecanismos SSL/TLS, los cuales han probado ser muy seguros y están siendo constantemente sometidos a mejoras y testeos.
Implementación OpenVPN
OpenVPN es una excelente nueva solución para VPN que implementa conexiones de capa 2 o 3, usa los estándares de la industria SSL/TLS para encriptar y combina todos las características mencionadas anteriormente en las otras soluciones VPN. Su principal desventaja por el momento es que hay muy pocos fabricantes de hardware que lo integren en sus soluciones. De todos modos no hay que preocuparse siempre que contemos con un Linux en el cual podremos implementarlo sin ningún problema mediante software.

## Seguridad en VPN

Para encriptar datos se usan Passwords o claves de encriptación.
OpenVPN tiene dos modos considerados seguros, uno basado en claves estáticas pre-compartidas y otro en SSL/TLS usando certificados y claves RSA.
Cuando ambos lados usan la misma clave para encriptar y desencriptar los datos, estamos usando el mecanismo conocido como “clave simétrica” y dicha clave debe ser instalada en todas las máquinas que tomarán parte en la conexión VPN.
Si bien SSL/TLS + claves RSA es por lejos la opción más segura, las claves estáticas cuentan con la ventaja de la simplicidad.
Veremos a continuación ese método y otros que aporta mayor seguridad y facilidad de distribución.
Encriptación simétrica y claves pre-compartidas
Cualquiera que posea la clave podrá desencriptar el tráfico, por lo que si un atacante la obtuviese comprometería el tráfico completo de la organización ya que tomaría parte como un integrante más de la VPN.
Es por ello que mecanismos como IPsec cambian las claves cada cierto período de tiempo asociando a las mismas ciertos período de tiempo de validez llamados “tiempo de vida” o “lifetime”. Una buena combinación de tiempo de vida y largo de la clave asegurarán que un atacante no pueda desencriptar la clave a tiempo, haciendo que cuando finalmente la obtenga (porque lo hará), ya no le sirva por estar fuera de vigencia. IPSec utiliza su propio protocolo para intercambiar claves llamado IKE9 que ha sido desarrollado desde mediados de los noventa y aun no ha sido terminado.
Encriptación asimétrica con SSL/TLS
SSL/TLS usa una de las mejores tecnologías de encriptación para asegurar la identidad de los integrantes de la VPN.
Cada integrante tiene dos claves, una pública y otra privada.
La pública es distribuida y usada por cualquiera para encriptar los datos que serán enviados a la contraparte quien conoce la clave privada que es la única que sirve para desencriptar los datos. El par de clave pública/privada es generado a partir de algoritmos matemáticos que aseguran que solo con la clave privada es posible leer los datos originales. El día que alguien encuentre algún defecto a ese algoritmos, todos aquellos contecados a Internet estarán comprometidos en forma instantánea.
Es de destacar que la clave privada debe permanecer secreta mientras que la clave pública debe ser intercambiada para que nos puedan enviar mensajes.
Seguridad SSL/TLS
Las bibliotecas SSL/TLS son parte del sofware OpenSSL que vienen instaladas en cualquier sistema moderno e implementan mecanismos de encriptación y autenticación basadas en certificados. Los certificados generalmente son emitidos por entidades de reconocida confiabilidad aunque también podemos emitirlos nosotros mismos y usarlos en nuestra propia VPN. Con un certificado firmado, el dueño del mismo es capás de probar su identidad a todos aquellos que confíen en la autoridad certificadora que lo emitió.

## Ventajas y Desventajas de OpenVPN

Ventajas OpenVPN provee seguridad, estabilidad y comprobados mecanismos de encriptación sin sufrir la complejidad de otras soluciones VPN como las de IPsec.
Además ofrece ventajas que van más allá que cualquier otra solución como ser:
* Posibilidad de implementar dos modos básicos en capa 2 o capa 3 con lo que se logran túneles capaces de enviar información en otros procolos no-IP como IPX o broadcast (NETBIOS).
* Protección de los usuarios remotos. Una vez que OpenVPN ha establecido un túnel el firewall de la organización protegerá el laptop remoto aun cuando no es un equipo de la red local. Por otra parte, solo un puerto de red podrá ser abierto hacia la red local por el remoto asegurando protección en ambos sentidos.
* Conexiones OpenVPN pueden ser realizadas a través de casi cualquier firewall. Si se posee acceso a Internet y se puede acceder a sitios HTTPS, entonces un túnel OpenVPN deberia funcionar sin ningún problema.
* Soporte para proxy. Funciona a través de proxy y puede ser configurado para ejecutar como un servicio TCP o UDP y además como servidor (simplemente esperando conexiones entrantes) o como cliente (iniciando conexiones).
* Solo un puerto en el firewall debe ser abierto para permitir conexiones, dado que desde OpenVPN 2.0 se permiten múltiples conexiones en el mismo puerto TCP o UDP.
* Las interfaces virtuales (tun0, tun1, etc.) permiten la implementación de reglas de firewall muy específicas.
* Todas las conceptos de reglas, restricciones, reenvío y NAT10 pueden ser usados en túneles OpenVPN.
* Alta flexibilidad y posibilidades de extensión mediante scripting. OpenVPN ofrece numerosos puntos para ejecutar scripts individuales durante su arranque.
* Soporte transparente para IPs dinámicas. Se elimina la necesidad de usar direcciones IP estáticas en ambos lados del túnel.
* Ningún problema con NAT. Tanto los clientes como el servidor pueden estar en la red usando solamente IPs privadas.
* Instalación sencilla en cualquier plataforma. Tanto la instalación como su uso son increíblemente simples.
Diseño modular. Se basa en un excelente diseño modular con un alto grado de simplicidad tanto en seguridad como red.
Desventajas No es IPsec-compatible siendo que justamente IPsec es el estándar actual para soluciones VPN. Falta de masa crítica. Todavía existe poca gente que conoce como usar OpenVPN. Aun no posee interfaz gráfica. Aunque esto para algunos pueda significar en realidad una “ventaja”. Al día de hoy solo se puede conectar a otras computadores. Pero esto está cambiando, dado que ya existe compañías desarrollando dispositivos con clientes OpenVPN integrados.

## Comparación entre OpenVPN e IPsec VPN

| IPsec | OpenVPN |
| Estándar de la tecnología VPN | Aun desconocida y no compatible con IPsec |
| Plataformas de hardware (dispositivos, aparatos) | Solo en computadoras, pero en todos los sistemas operativos disponbiles |
| Tecnología conocida y probada | Tecnología nueva y aun en crecimiento |
| Muchas interfaces gráficas disponibles | Sin interfaces gráficas profesionales, aunque ya existen algunos proyectos prometedores |
| Modificación compleja del stack IP | Tecnología sencilla |
| Necesidad de modificaciones críticas al kernel | Interfaces de red y paquetes estandarizados |
| Necesidad de permisos de administrador | Ejecuta en el espacio del usuario y puede ser chroot-ed |
| Diferentes implementaciones de distintos proveedores pueden ser incompatibles entre si | Tecnologías de encriptamiento estandarizadas |
| Configuración compleja y tecnología compleja | Facilidad, buena estructuración, tecnología modular y facilidad de configuración |
| Curva de aprendizaje muy pronunciada | Fácil de aprender y éxito rápido para principiantes |
| Necesidad de uso de muchos puertos y protocolos en el firewall | Utiliza solo un puerto del firewall |
| Problemas con direcciones dinámicas en ambas puntas | Trabaja con servidores de nombres dinámicos como DynDNS o No-IP con reconecciones rápidas y transparentes |
| Problemas de seguridad de las tecnologías IPsec | SSL/TLS como estándar de criptografía |
| | Control de tráfico (Traffic shaping) |
| | Velocidad (más de 20 Mbps en máquinas de 1Ghz) |
| | Compatibilidad con firewall y proxies |
| | Ningún problema con NAT (ambos lados puede ser rede NATeadas) |
| | Posibilidades para hackers y road warriors |

## Bibliografía

* OpenVPN: Building and Integrating Virtual Private Networks – Markus Feilner – ISBN 1-904811-85
* Sito web de OpenVPN. http://openvpn.net/howto.htm
* Sitio web de Ubuntu. http://www.ubuntu-es.org/node/5290
En Linux:
* /usr/share/doc/openvpn
* man openvpn