CORPORACION UNIVERSITARIA MINUTO DE DIOS SEDE GIRARDOT INGENIERIA DE SISTEMAS APULO CUNDINAMARCA, 2014
ii
RESUMEN
Una red privada virtual o VPN concede una extensin segura de la red local (LAN), sobre una red pblica o no controlada como Internet, permitiendo que la computadora enve y reciba datos sobre redes compartidas o pblicas como si fuera una red privada con toda la funcionalidad, seguridad y polticas de gestin de una red privada. VPN establece un tnel virtual entre ambas partes (Cliente Servidor), los cuales negocian esquemas de encriptacin y autentificacin que asegura la confidencialidad e integridad de los datos transmitidos por medio de una red pblica o Internet. Se define Tnel Virtual al enlace lgico punto a punto o canal de comunicacin usado entre el origen y el destino de la conexin, 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 solucin de conectividad basada en software libre, que utiliza el mismo concepto de las VPNs con esto las mismas opciones de seguridad para el cliente como para el servidor. El presente trabajo demostrara la implementacin del servidor OpenVPN en el firmware OpenWrt como una alternativa de seguridad en l transporte de datos a travs de certificados de seguridad.
iii
ABSTRACT
A virtual private 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.
4
INDICE
RESUMEN ............................................................................................................... ii ABSTRACT ............................................................................................................. iii INTRODUCCION ..................................................................................................... 5 MARCO TEORICO .................................................................................................. 6 RED PRIVADA VIRTUAL ..................................................................................... 6 OPENVPN ............................................................................................................ 6 CARACTERISTICAS DE OPENVPN.................................................................... 7 FUNCIONAMIENTO DE OPENVPN..................................................................... 8 IMPLEMENTACIN OPENVPN ......................................................................... 10 CARACTERTISCAS DE LOS EQUIPOS Y DISPOSITIVOS UTILIZADOS ........... 12 PUERTO UTILIZADO ......................................................................................... 12 INTERFAZ DE RED VIRTUAL MANEJADA ....................................................... 12 MTODOS DE AUTENTICACIN DE OPENVPN ............................................. 13 CONFIGURACION DEL SERVIDOR OpenVPN en OpenWRT .......................... 14 Configuracin de Certificados ............................................................................. 14 Generacin certificados ...................................................................................... 15 Creacin clave del cliente ................................................................................... 18 Crear configuracin de OpenVPN ...................................................................... 22 Instalacin programa OpenVPN en Cliente. ....................................................... 26 CONCLUSIONES .................................................................................................. 29 REFERENCIAS ..................................................................................................... 30 ANEXOS ................................................................................................................ 31 Anexo 1. Significado de los parmetros de configuracin del servidor OpenVPN. ........................................................................................................................... 31
5
INTRODUCCION
Esta monografa tiene como objetivo la implementacin de un servidor OPENVPN a travs de OpenWrt, con el fin de lograr un alto grado de seguridad y estabilidad en la transferencia de paquetes a travs de la red. OpenVPN es una solucin libre para la implementacin de Redes Privadas Virtuales basadas en SSL (capa de conexin segura), bajo la Licencia Pblica General GPL, incluye caractersticas que permiten configuraciones simples para tneles Punto a Punto, Acceso Remoto, VPNs sitio-a-sitio, seguridad para redes Inalmbricas, adems incluye funcionalidades de nivel empresarial para proveer balanceo de cargas, failover, y controles de acceso refinados. OpenVPN ofrece una alternativa ligera y econmica a otras tecnologas 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 estndar de la industria para comunicaciones seguras va el Internet. Tambin implementa las extensiones 2 o 3 del modelo OSI. Soporta mtodos flexibles de autenticacin para los clientes basados en certificados y autenticacin de doble factor, y permite polticas de control de acceso para usuarios o grupos.
6
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 criptografa para brindar seguridad, tanto para verificar que la persona que se conecta es quien dice ser, como para codificar la informacin de manera que no pueda ser entendida por extraos. USOS DE LAS VPNs Las VPN's se usan generalmente para: Conexin entre diversos puntos de una organizacin a travs de Internet. Conexiones de trabajadores domsticos o de campo con IP's dinmicas. Soluciones extranet para clientes u organizaciones asociadas con los cuales se necesita intercambiar cierta informacin 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 cdigo abierto, que utiliza estndares abiertos SSL/TLS, que se basan en claves privadas y pblicas. Claves Privadas y Pblicas La infraestructura de claves pblicas es un sistema muy ingenioso para asegurar que las claves que se usan para codificar y decodificar estn separadas, y nunca se transmita una clave que sirva para decodificar. En el proceso de generacin de las claves, la clave privada y la pblica se generan al mismo tiempo. La clave pblica est contenida en un certificado, que
7
dice quin es el dueo de la clave, la empresa a la que pertenece, y su direccin de e-mail. Este certificado est firmado por la autoridad de certificacin. Esa firma se puede calcular con la clave pblica de la autoridad, que todos los clientes conocen, y as verificar la validez del certificado. CARACTERISTICAS DE OPENVPN
OpenVPN ofrece las siguientes caractersticas: Solucin VPN de clase empresarial basada en Software libre y GNU/Linux Creacin de tneles VPN para conexiones Punto a Punto, Sitio a Sitio y usuarios mviles (Road Warriors) Utiliza como medio de transporte los protocolos TCP UDP Permite mltiples conexiones a una misma instancia sobre un nico puerto TCP UDP Los tneles VPN funcionan sobre conexiones NAT (Network Address Translation) y direcciones IP dinmicas Usa cualquier cifrado, tamao 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 estticas pre compartidas Cifrado asimtrico usando llaves pblicas basada en certificados x509 Permite usar llaves estticas, pre compartidas o llaves dinmicas basadas en TLS para el intercambio de llaves Soporte nativo de cliente para los siguientes sistemas operativos:
8
GNU/Linux Solaris OpenBSD NetBSD FreeBSD MS Windows XP, Vista y 7 Mac OSX. FUNCIONAMIENTO DE OPENVPN
El host se comunica con una conexin llamada "TUN", que enva los datos recibidos a una aplicacin, en este caso, el OpenVPN. Este se encarga de codificar los datos y transmitirlos a travs de internet. Del otro lado, otro programa OpenVPN recibe los datos, los decodifica, y los transmite a otra conexin TUN. De esa conexin es de donde los servidores finalmente recogen los datos y envan sus respuestas. Como se puede apreciar en la Figura 1 y Figura 2. El cliente sabe que tiene que mandar sus datos a travs de la conexin "10.10.0.10", y la aplicacin del servidor recibe de la conexin "10.10.0.1". Todo lo dems es manejado por el sistema operativo y por la aplicacin OpenVPN.
9
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 certificacin "oficial", basta con crear una autoridad propia y copiar el certificado a todos los
10
clientes que confiarn en esa autoridad. Cada computadora cliente tiene instalado el certificado de la autoridad de certificacin, que se us para firmar los certificados. La confianza se asegura por el secreto de la clave de la autoridad de certificacin, 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 certificacin. IMPLEMENTACIN OPENVPN
OpenVPN es una excelente solucin para redes virtuales privadas que implementan conexiones de capa 2 o 3, usa los estndares 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. Tericamente, las tecnologas implementadas en capa 2 pueden tunelizar cualquier tipo de paquetes y en la mayora de los casos lo que se hace es establecer un dispositivo virtual PPP5 con el cual se establece la conexin con el otro lado del tnel. Ejemplos de esta tecnologa: PPTP: Point to Point Tunneling Protocol. Desarrollado por Microsoft, es una extensin de PPP.
11
Implementaciones de capa 3 - Red IPsec es la tecnologa ms aceptada en este punto y fue desarrollada como un estndar de seguridad de Internet en capa 3. IPsec se puede utilizar para encapsular cualquier trfico de capa 3 pero no el trfico 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 prcticamente en cualquier plataforma existiendo una gran variedad de soluciones tanto de software como de hardware. Existen dos mtodos principales usados por IPsec: Modo Tunnel. Todos los paquetes IP son encapsulados en un nuevo paquete y enviados a travs del tnel 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 seccin 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 podrn ver quien se est comunicando con quien. Implementaciones de capa 4 - Transporte Tambin es posible establecer tneles en la capa de aplicacin y de hecho son ampliamente utilizados como SSL6 y TLS7. El usuario accede a la VPN de la organizacin a travs de un browser iniciando la conexin en un sitio web seguro (HTTPS-Secured web site). Adems, existen otros productos como SSL-Explorer y otros que ofrecen una combinacin de gran flexibilidad, seguridad fuerte y facilidad de configuracin. La seguridad es lograda mediante encriptamiento del trfico
12
usando mecanismos SSL/TLS, los cuales han probado ser muy seguros y estn 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 envo de datagramas a travs de la red sin que se haya establecido previamente una conexin, ya que el propio datagrama incorpora suficiente informacin de direccionamiento en su cabecera. CARACTERTISCAS DE LOS EQUIPOS Y DISPOSITIVOS UTILIZADOS
Router TPLINK modelo No. WR842ND con firmware OpenWrt para instalacin del servidor OpenVPN. Porttil Lenovo G410 con sistema operativo Windows para configuracin del Cliente a travs de OpenVPN GUI. Equipo de mesa con sistema operativo Windows para realizar la configuracin del servidor a travs 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.
13
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. MTODOS DE AUTENTICACIN DE OPENVPN
OpenVPN soporta diferentes mtodos de autenticacin desde cifrado convencional usando llaves secretas pre-compartidas (Static Key mode) o mtodos de autenticacin basada en llaves pblicas (SSL/TLS mode). RSA En criptografa, RSA (Rivest, Shamir y Adleman) es un sistema criptogrfico de clave pblica desarrollado en 1977. Es el primer y ms utilizado algoritmo de este tipo y es vlido tanto para cifrar como para firmar digitalmente. La seguridad de este algoritmo radica en el problema de la factorizacin de nmeros enteros. Los mensajes enviados se representan mediante nmeros, y el funcionamiento se basa en el producto, conocido, de dos nmeros 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 administracin y bibliotecas relacionadas con la criptografa, que suministran funciones criptogrficas a otros paquetes como OpenSSH y navegadores web (para acceso seguro a sitios HTTPS).
14
CONFIGURACION DEL SERVIDOR OpenVPN en OpenWRT
Se ingresa al router OpenWrt a travs del cliente de acceso remoto PuTTY y a continuacin se realiza la actualizacin e instalacin de paquetes.
Figura N 3. Instalacin de OpenVPN, paquetes y complementos. # opkg update # opkg install openvpnopenvpn-easy-rsa
Configuracin de Certificados
Figura N 4. Edicin fichero vars a travs del editor vi.
15
Figura N 5. Edicin fichero vars. Se ingresan los datos esenciales. Generacin certificados
Figura N 6. Ingreso directorio keys. Para llevar a cabo la generacin de los certificados
16
Figura N 7. Construir certificados build-ca. Se crea el certificado de autenticacin para el servicio.
Figura N 8. Construir certificados build-dh. Se crea la clave diffie-hellman.
17
Figura N 9. Creacin clave del servidor. Se utiliza el comando build-key-server server.
Figura N 10. Confirmacin fecha de expiracin del certificado. Parmetro establecido en vars. Clave del servidor
Clave del servidor
Clave del servidor
18
Figura N 11. Confirmacin del certificado del servidor. Certificado ingresado a la base de datos. Creacin clave del cliente
Figura N 12. Asignacin clave del cliente. Se ingresa el comando build-key client. Clave del cliente
19
Figura N 13.Expiracion del certificado del cliente. Parmetro establecido en vars.
Figura N 14. Generacin del certificado del cliente. Certificado ingresado a la base de datos.
20
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/
21
Figura N 17. Verificacin de la copia de los archivos.
Figura N 18. Instalacin openssh-stfp-server. Con el fin de transferir archivos desde el router a la computadora.
22
Crear configuracin de OpenVPN
Figura N 19. Edicin archivo de configuracin OpenVPN. Ruta: etc/config/vi openvpn
Figura N 20. Edicin archivo de configuracin OpenVPN. Ruta: etc/config/vi openvpn
23
Figura N 21. Edicin archivo de configuracin OpenVPN. Ruta: etc/config/vi openvpn
Figura N 22. Edicin archivo de configuracin OpenVPN. Ruta: etc/config/vi openvpn
24
Figura N 23. Edicin archivo de configuracin OpenVPN. Ruta: etc/config/vi openvpn
Figura N 24. Archivo de configuracin OpenVPN.
25
Figura N 25. Archivo de configuracin 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.
26
Instalacin programa OpenVPN en Cliente.
Figura N 27. Ventana de instalacin OpenVPN cliente. Una vez instalado se ingresa a la carpeta config ubicada dentro de la carpeta de instalacin de OpenVPN y se introducen los certificados creados en el servidor utilizando la herramienta WinSCP en este caso.
27
Figura N 28. Transferencia de archivos a travs de WinSCP. Dentro de la carpeta config ubicada en el directorio de instalacin de OpenVPN se edita el archivo de configuracin client de la siguiente manera.
Figura N 29. Edicin del archivo de configuracin client. IP del servidor
28
Se ejecuta la aplicacin OpenVPN y se aade un pequeo icono al lado del reloj.
Figura N 30. Icono de la aplicacin OpenVPN. Se oprime click derecho sobre el icono y se selecciona conectar para iniciar la conexin con el servidor OpenVPN ya configurado.
Figura N 31. Conexin entre el servidor y el cliente.
29
CONCLUSIONES
OpenVPN es un software que permite la conexin de equipos de cmputo y dispositivos a travs de la autenticacin y autorizacin, lo cual conlleva entrega segura de la informacin. 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.
30
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-un- cliente-openvpn-en-windows-con-openvpn-gui-para-conectar-a-una-vpn-ra-en- vyatta/. [Acceso: Agosto 13, 2014]. Openredes.com.Disponible:http://www.openredes.com/2011/06/29/significado-de- los-parametros-de-configuracion-del-archivo-ovpn-en-un-cliente-remoto-de- openvpn/. [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 N89. Ministerio de Defensa Gobierno de Espaa. Diciembre 2012. Disponible: http://publicaciones.defensa.gob.es/pprevistas/88e68d6b-fb63-65ab-9bdd- ff0000451707/index.html#/72/. [Acceso: Agosto 15, 2014]. Debian Handbook info. 2011-2014 Freexian SARL. Disponible:http://debian- handbook.info/browse/es-ES/stable/sect.virtual-private-network.html. [Acceso: Agosto 15, 2014]. Factor Evolucin 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].
31
ANEXOS
Anexo 1. Significado de los parmetros de configuracin 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 opcin "tun" es la opcin 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 opcin por defecto y lo normal es "udp". Hay que elegir lo mismo en los dos extremos. remote IP-servidor/cliente puerto: en esta lnea se pone la IP publica en la que est el extremo opuesto y el puerto en el que se espera la conexin. El puerto por defecto es el 1194. resolv-retry infinite/n: opcin de cliente, trata de resolver infinitas o n veces la conexin con el servidor. nobind: opcin de cliente, si se configura especifica que no es necesario usar siempre el mismo puerto local de origen para iniciar la conexin 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.
32
ca ca.crt: Certificados SSL/TLS. Poner nombre correcto. Se recomienda usar uno diferente para cada cliente. cert client.crt: Certificados SSL/TLS. Poner nombre correcto. Se recomienda usar uno diferente para cada cliente. key client.key: Certificados SSL/TLS. Poner nombre correcto. Se recomienda usar uno diferente para cada cliente. ns-cert-type server: opcin de cliente, ordena comprobar el certificado del servidor verificando que tiene el campo nsCertType configurado con el valor "server". comp-lzo: habilita la compresin en el enlace VPN, es necesario que este configurado en ambos extremos. verb n: indica el nivel de informacin de logs. El nivel por defecto es 1, a mayor nmero ms informacin a la salida de logs. mute 20: ordena silenciar mensajes de logs repetidos. explicit-exit-notify 2: opcin de cliente, obliga a indicar al servidor cuando se cierra la sesin para que cierre el enlace. auth-user-pass: opcin de cliente, indica al programa que la conexin necesita ser verificada con contrasea y usuario.