SERVIDOR OPENVPN IMPLEMENTADO EN OPENWRT
EDUIN YESID RODRIGUEZ GARZON ID. 263306 RICARDO MAHECHA CARRANZA ID. 263465
CORPORACION UNIVERSITARIA MINUTO DE DIOS SEDE GIRARDOT INGENIERIA DE SISTEMAS APULO CUNDINAMARCA, 2014
i
RESUMEN Una red privada virtual o VPN concede una extensión segura de la red local (LAN), sobre una red pública o no controlada como Internet, permitiendo que la computadora envíe y reciba datos sobre redes compartidas o públicas como si fuera una red privada con toda la funcionalidad, seguridad y políticas de gestión de una red privada. VPN establece un túnel virtual entre ambas partes (Cliente – Servidor), los cuales negocian esquemas de encriptación y autentificación que asegura la confidencialidad e integridad de los datos transmitidos por medio de una red pública o Internet. Se define Túnel Virtual al enlace lógico punto a punto o canal de comunicación usado entre el origen y el destino de la conexión, este enlace es cifrado, ya que el paquete original de red es encapsulado dentro de uno nuevo, de esta manera solo se muestra el origen y destino del paquete, quedando de manera segura el paquete enviado dentro del nuevo. OpenVPN es una solución de conectividad basada en software libre, que utiliza el mismo concepto de las VPN’s con esto las mismas opciones de seguridad para el
cliente como para el servidor. El presente trabajo demostrara la implementación del servidor OpenVPN en el firmware firmware OpenWrt como una alternativa alternativa de seguridad en él transporte de datos a través de certificados de seguridad.
ii
RESUMEN Una red privada virtual o VPN concede una extensión segura de la red local (LAN), sobre una red pública o no controlada como Internet, permitiendo que la computadora envíe y reciba datos sobre redes compartidas o públicas como si fuera una red privada con toda la funcionalidad, seguridad y políticas de gestión de una red privada. VPN establece un túnel virtual entre ambas partes (Cliente – Servidor), los cuales negocian esquemas de encriptación y autentificación que asegura la confidencialidad e integridad de los datos transmitidos por medio de una red pública o Internet. Se define Túnel Virtual al enlace lógico punto a punto o canal de comunicación usado entre el origen y el destino de la conexión, este enlace es cifrado, ya que el paquete original de red es encapsulado dentro de uno nuevo, de esta manera solo se muestra el origen y destino del paquete, quedando de manera segura el paquete enviado dentro del nuevo. OpenVPN es una solución de conectividad basada en software libre, que utiliza el mismo concepto de las VPN’s con esto las mismas opciones de seguridad para el
cliente como para el servidor. El presente trabajo demostrara la implementación del servidor OpenVPN en el firmware firmware OpenWrt como una alternativa alternativa de seguridad en él transporte de datos a través de certificados de seguridad.
ii
ABSTRACT A virtual private p rivate network or VPN provides a secure extension of the local network (LAN), on a public or uncontrolled network such as the Internet, allowing the computer to send and receive data over networks shared or public as if it were a private network with all the functionality, safety and a private network management policies. VPN establishes a virtual tunnel between the two parties (client - server), which negotiate schemes of encryption and authentication which ensures the confidentiality and integrity of the data transmitted by means of a public network or the Internet. Defined Virtual tunnel to the logical point-to-point link or channel of communication used between the source and destination of the connection, this link is encrypted, since the original network packet is encapsulated within a new one, thus only shows the origin and destination of the packet, and safely shipped within the new package. OpenVPN is a connectivity solution based on free software, which uses the same concept of VPN's with this same security options for the server and the client. This work demonstrate the implementation of OpenVPN server on the OpenWrt firmware as an alternative of safety in the transport of data via security certificates.
iii
INDICE RESUMEN ............................................................................................................... ii ABSTRACT ............................................................................................................. iii INTRODUCCION .....................................................................................................5 MARCO TEORICO ..................................................................................................6 RED PRIVADA VIRTUAL .....................................................................................6 OPENVPN ............................................................................................................6 CARACTERISTICAS DE OPENVPN....................................................................7 FUNCIONAMIENTO DE OPENVPN.....................................................................8 IMPLEMENTACIÓN OPENVPN ......................................................................... 10 CARACTERTISCAS DE LOS EQUIPOS Y DISPOSITIVOS UTILIZADOS ...........12 PUERTO UTILIZADO .........................................................................................12 INTERFAZ DE RED VIRTUAL MANEJADA .......................................................12 MÉTODOS DE AUTENTICACIÓN DE OPENVPN .............................................13 CONFIGURACION DEL SERVIDOR OpenVPN en OpenWRT..........................14 Configuración de Certificados .............................................................................14 Generación certificados ......................................................................................15 Creación clave del cliente ...................................................................................18 Crear configuración de OpenVPN ......................................................................22 Instalación programa OpenVPN en Cliente. .......................................................26 CONCLUSIONES ..................................................................................................29 REFERENCIAS .....................................................................................................30 ANEXOS ................................................................................................................31 Anexo 1. Significado de los parámetros de configuración del servidor OpenVPN. ...........................................................................................................................31
4
INTRODUCCION Esta monografía tiene como objetivo la implementación de un servidor OPENVPN a través de OpenWrt, con el fin de lograr un alto grado de seguridad y estabilidad en la transferencia de paquetes a través de la red. OpenVPN es una solución libre para la implementación de Redes Privadas Virtuales basadas en SSL (capa de conexión segura), bajo la Licencia Pública General GPL, incluye características que permiten configuraciones simples para túneles Punto a Punto, Acceso Remoto, VPNs sitio-a-sitio, seguridad para redes Inalámbricas, además incluye funcionalidades de nivel empresarial para proveer balanceo de cargas, failover , y controles de acceso refinados. OpenVPN ofrece una alternativa ligera y económica a otras tecnologías VPN. OpenVPN combina la seguridad con la facilidad de uso. La seguridad de las redes virtuales privadas libres es basada en el protocolo SSL, el cual es el estándar de la industria para comunicaciones seguras vía el Internet. También implementa las extensiones 2 o 3 del modelo OSI. Soporta métodos flexibles de autenticación para los clientes basados en certificados y autenticación de doble factor, y permite políticas de control de acceso para usuarios o grupos.
5
MARCO TEORICO RED PRIVADA VIRTUAL Una red privada virtual es una red segura que se construye sobre otra red que es insegura, por ejemplo, internet. La red segura usa criptografía para brindar seguridad, tanto para verificar que la persona que se conecta es quien dice ser, como para codificar la información de manera que no pueda ser entendida por extraños.
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
OPENVPN Es un software de red privada virtual de código abierto, que utiliza estándares abiertos SSL/TLS, que se basan en claves privadas y públicas.
Claves Privadas y Públicas La infraestructura de claves públicas es un sistema muy ingenioso para asegurar que las claves que se usan para codificar y decodificar estén separadas, y nunca se transmita una clave que sirva para decodificar. En el proceso de generación de las claves, la clave privada y la pública se generan al mismo tiempo. La clave pública está contenida en un certificado, que 6
dice quién es el dueño de la clave, la empresa a la que pertenece, y su dirección de e-mail. Este certificado está firmado por la autoridad de certificación. Esa firma se puede calcular con la clave pública de la autoridad, que todos los clientes conocen, y así verificar la validez del certificado.
CARACTERISTICAS DE OPENVPN OpenVPN ofrece las siguientes características:
Solución VPN de clase empresarial basada en Software libre y GNU/Linux
Creación de túneles VPN para conexiones Punto a Punto, Sitio a Sitio y usuarios móviles (Road Warriors)
Utiliza como medio de transporte los protocolos TCP ó UDP
Permite múltiples conexiones a una misma instancia sobre un único puerto TCP ó UDP
Los túneles VPN funcionan sobre conexiones NAT (Network Address Translation) y direcciones IP dinámicas
Usa cualquier cifrado, tamaño de llave, o digest HMAC (para el chequeo de la integridad de los datagramas) soportados por la biblioteca OpenSSL.
Cifrado flexible permitiendo elegir entre:
Cifrado convencional basado en llaves estáticas pre compartidas
Cifrado asimétrico usando llaves públicas basada en certificados x509
Permite usar llaves estáticas, pre compartidas o llaves dinámicas basadas en TLS para el intercambio de llaves
Soporte nativo de cliente para los siguientes sistemas operativos:
7
GNU/Linux
Solaris
OpenBSD
NetBSD
FreeBSD
MS Windows XP, Vista y 7
Mac OSX.
FUNCIONAMIENTO DE OPENVPN El host se comunica con una conexión llamada "TUN", que envía los datos recibidos a una aplicación, en este caso, el OpenVPN. Este se encarga de codificar los datos y transmitirlos a través de internet. Del otro lado, otro programa OpenVPN recibe los datos, los decodifica, y los transmite a otra conexión TUN. De esa conexión es de donde los servidores finalmente recogen los datos y envían sus respuestas. Como se puede apreciar en la Figura 1 y Figura 2. El cliente sabe que tiene que mandar sus datos a través de la conexión "10.10.0.10", y la aplicación del servidor recibe de la conexión "10.10.0.1". Todo lo demás es manejado por el sistema operativo y por la aplicación OpenVPN.
8
Figura N°. 1 Funcionamiento de OpenVPN. Sitio oficial de Agustin Viilafane
Figura N°. 2 Encapsulamiento de datos. http://openmaniak.com/openvpn.php
El sistema OpenVPN no requiere un certificado de una autoridad de certificación "oficial", basta con crear una autoridad propia y copiar el certificado a todos los
9
clientes que confiarán en esa autoridad. Cada computadora cliente tiene instalado el certificado de la autoridad de certificación, que se usó para firmar los certificados. La confianza se asegura por el secreto de la clave de la autoridad de certificación, y por el hecho de que los certificados de cada cliente y de servidor son examinados para ver si cuentan con la firma de la autoridad de certificación.
IMPLEMENTACIÓN OPENVPN OpenVPN es una excelente solución para redes virtuales privadas que implementan conexiones de capa 2 o 3, usa los estándares de la industria SSL/TLS para encriptar. 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 de qué preocuparse siempre que se cuente como en este caso con un router con OpenWrt en el cual se puede implementar.
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. Ejemplos de esta tecnología:
PPTP: Point to Point Tunneling Protocol. Desarrollado por Microsoft, es una extensión de PPP.
10
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 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 web site). 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
11
usando mecanismos SSL/TLS, los cuales han probado ser muy seguros y están siendo constantemente sometidos a mejoras y testeos.
PROTOCOLO UTILIZADO OpenVPN utiliza para el servidor y para el cliente el protocolo UDP (User Datagram Protocol), el cual es un protocolo del nivel de transporte basado en el intercambio de datagramas. Permite el envío de datagramas a través de la red sin que se haya establecido previamente una conexión, ya que el propio datagrama incorpora suficiente información de direccionamiento en su cabecera.
CARACTERTISCAS DE LOS EQUIPOS Y DISPOSITIVOS UTILIZADOS
Router TPLINK modelo No. WR842ND con firmware OpenWrt para instalación del servidor OpenVPN.
Portátil Lenovo G410 con sistema operativo Windows para configuración del Cliente a través de OpenVPN GUI.
Equipo de mesa con sistema operativo Windows para realizar la configuración del servidor a través de puTTY en la interfaz UCI.
PUERTO UTILIZADO El puerto utilizado es el 1194, en donde se escucharan las peticiones del servicio.
INTERFAZ DE RED VIRTUAL MANEJADA OpenVPN utiliza dos tipos de interfaz de red virtuales como:
TUN: Esta interfaz simula que es un dispositivo Ethernet que trabaja sobre la capa 3 del modelo OSI, esta interfaz es ocupada cuando hacemos un ruteo dentro de la red de la VPN.
12
TAP: Esta interfaz simula que es un dispositivo Ethernet que trabaja sobre la capa 2 del modelo OSI, esta interfaz es ocupada cuando queremos utilizar redes en modo puente.
MÉTODOS DE AUTENTICACIÓN DE OPENVPN OpenVPN
soporta
diferentes
métodos
de
autenticación
desde
cifrado
convencional usando llaves secretas pre-compartidas (Static Key mode) o métodos de autenticación basada en llaves públicas (SSL/TLS mode).
RSA En criptografía, RSA (Rivest, Shamir y Adleman) es un sistema criptográfico de clave pública desarrollado en 1977. Es el primer y más utilizado algoritmo de este tipo y es válido tanto para cifrar como para firmar digitalmente. La seguridad de este algoritmo radica en el problema de la factorización de números enteros. Los mensajes enviados se representan mediante números, y el funcionamiento se basa en el producto, conocido, de dos números primos grandes elegidos al azar y mantenidos en secreto.
OpenSSL OpenSSL es un proyecto de software libre basado en SSLeay, desarrollado por Eric Young y Tim Hudson. Consiste en un robusto paquete de herramientas de administración y bibliotecas relacionadas con la criptografía, que suministran funciones criptográficas a otros paquetes como OpenSSH y navegadores web (para acceso seguro a sitios HTTPS).
13
CONFIGURACION DEL SERVIDOR OpenVPN en OpenWRT Se ingresa al router OpenWrt a través del cliente de acceso remoto PuTTY y a continuación se realiza la actualización e instalación de paquetes.
Figura Nº 3. Instalación de OpenVPN, paquetes y complementos. # opkg update # opkg install openvpnopenvpn-easy-rsa
Configuración de Certificados
Figura Nº 4. Edición fichero vars a través del editor vi.
14
Figura Nº 5. Edición fichero vars. Se ingresan los datos esenciales.
Generación certificados
Figura Nº 6. Ingreso directorio keys. Para llevar a cabo la generación de los certificados
15
Figura Nº 7. Construir certificados build-ca. Se crea el certificado de autenticación para el servicio.
Figura Nº 8. Construir certificados build-dh. Se crea la clave diffie-hellman.
16
Clave del servidor
Figura Nº 9. Creación clave del servidor. Se utiliza el comando build-key-server server.
Figura Nº 10. Confirmación fecha de expiración del certificado. Parámetro establecido en vars.
17
Figura Nº 11. Confirmación del certificado del servidor. Certificado ingresado a la base de datos.
Creación clave del cliente
Clave del cliente
Figura Nº 12. Asignación clave del cliente. Se ingresa el comando build-key client.
18
Figura Nº 13.Expiracion del certificado del cliente. Parámetro establecido en vars.
Figura Nº 14. Generación del certificado del cliente. Certificado ingresado a la base de datos.
19
Figura Nº 15. Formato PKCS12. Combina el certificado de clave y ca en un solo archivo.
Figura Nº 16. Copia los archivos importantes. Comando cp ca.crt ca.key dh1024.pem server.crt
server.key/etc/openvpn/
20
Figura Nº 17. Verificación de la copia de los archivos.
Figura Nº 18. Instalación openssh-stfp-server. Con el fin de transferir archivos desde el router a la computadora.
21
Crear configuración de OpenVPN
Figura Nº 19. Edición archivo de configuración OpenVPN. Ruta: etc/config/vi openvpn
Figura Nº 20. Edición archivo de configuración OpenVPN. Ruta: etc/config/vi openvpn
22
Figura Nº 21. Edición archivo de configuración OpenVPN. Ruta: etc/config/vi openvpn
Figura Nº 22. Edición archivo de configuración OpenVPN. Ruta: etc/config/vi openvpn
23
Figura Nº 23. Edición archivo de configuración OpenVPN. Ruta: etc/config/vi openvpn
Figura Nº 24. Archivo de configuración OpenVPN.
24
Figura Nº 25. Archivo de configuración OpenVPN.
Figura Nº 26. Habilitar el servicio OpenVPN en el servidor. Se ingresa el comando openvpn start para iniciar el servicio y open enable para habilitarlo.
25
Instalación programa OpenVPN en Cliente.
Figura Nº 27. Ventana de instalación OpenVPN cliente. Una vez instalado se ingresa a la carpeta config ubicada dentro de la carpeta de instalación de OpenVPN y se introducen los certificados creados en el servidor utilizando la herramienta WinSCP en este caso.
26
Figura N° 28. Transferencia de archivos a través de WinSCP. Dentro de la carpeta config ubicada en el directorio de instalación de OpenVPN se edita el archivo de configuración client de la siguiente manera.
IP del servidor
Figura N° 29. Edición del archivo de configuración client.
27
Se ejecuta la aplicación OpenVPN y se añade un pequeño icono al lado del reloj.
Figura N° 30. Icono de la aplicación OpenVPN. Se oprime click derecho sobre el icono y se selecciona conectar para iniciar la conexión con el servidor OpenVPN ya configurado.
Figura Nº 31. Conexión entre el servidor y el cliente.
28
CONCLUSIONES OpenVPN es un software que permite la conexión de equipos de cómputo y dispositivos a través de la autenticación y autorización, lo cual conlleva entrega segura de la información. OpenVPN es una herramienta completamente gratuita instalable en equipos (routers) de bajo costo que ofrece una gran variedad de servicios para el uso personal o empresarial. OpenVPN no presenta problemas de incompatibilidad, ya que se puede instalar en cualquier tipo de sistema operativo.
29
REFERENCIAS James Yonan's en el Linux Fest Northwest 2004 -- Understanding the User-Space VPN: History, Conceptual Foundations, and Practical Usage. Disponible:https://community.openvpn.net/openvpn/wiki/OverviewOfOpenvpn. [Acceso: Agosto 13, 2014]. Openredes.com.Disponible:http://www.openredes.com/2011/06/30/configurar-uncliente-openvpn-en-windows-con-openvpn-gui-para-conectar-a-una-vpn-ra-envyatta/. [Acceso: Agosto 13, 2014]. Openredes.com.Disponible:http://www.openredes.com/2011/06/29/significado-delos-parametros-de-configuracion-del-archivo-ovpn-en-un-cliente-remoto-deopenvpn/. [Acceso: Agosto 13, 2014]. Hertel Guillermo, Uzin José, Ibarra Gustavo, 2012, UADER-GUGLER. Disponible: http://sgd.gugler.com.ar/data/GNU_Linux_2/howtovpnfinal.pdf.[Acceso: Agosto 13, 2014]. Memorial de ingenieros N°89. Ministerio de Defensa Gobierno de España. Diciembre 2012. Disponible: http://publicaciones.defensa.gob.es/pprevistas/88e68d6b-fb63-65ab-9bddff0000451707/index.html#/72/. [Acceso: Agosto 15, 2014]. Debian Handbook info. 2011-2014 Freexian SARL. Disponible:http://debianhandbook.info/browse/es-ES/stable/sect.virtual-private-network.html. [Acceso: Agosto 15, 2014]. Factor Evolución S.A. Disponible:http://www.linuxparatodos.net/web/comunidad/base-de-conocimiento//wiki/Base+de+Conocimiento/Servidor+Virtual+Private+Network+%28VPN%29#se ction-Servidor+Virtual+Private+Network+(VPN)-Servicio+OpenVPN. [Acceso: Agosto 15, 2014]. Agustine Villafine. Disponible:http://strellis.com.ar/articulos/openvpn/. [Acceso: Agosto 15, 2014].
30
ANEXOS Anexo 1. Significado de los parámetros de configuración del servidor OpenVPN. client/server: especifica el tipo de nodo que queremos configurar. dev tap/tun: tipo de interfaz a usar, hay que elegir la misma tanto en la parte del cliente como en la del servidor. La opción "tun" es la opción por defecto y la recomendada. La diferencia entre ambas es que la interfaz "tun" es una interfaz enrutada y la interfaz "tap" es para crear un bridge ethernet (capa 2), necesario en caso de usar protocolos no IP como IPX.
proto tcp/udp: protocolo de transporte a usar, la opción por defecto y lo normal es "udp". Hay que elegir lo mismo en los dos extremos.
remote IP-servidor/cliente puerto : en esta línea se pone la IP publica en la que está el extremo opuesto y el puerto en el que se espera la conexión. El puerto por defecto es el 1194.
resolv-retry infinite/n: opción de cliente, trata de resolver infinitas o n veces la conexión con el servidor.
nobind: opción de cliente, si se configura especifica que no es necesario usar siempre el mismo puerto local de origen para iniciar la conexión con el servidor.
mute-replay-warnings: los warnings de paquetes duplicados no se muestran. persist-key: trata de preservar la key usada ante reinicio para no tener que releerla.
persist-tun: trata de mantener la interfaz TUN/TAP levantada ante reinicio de la VPN.
31