De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

OpenVPN es un sistema de red privada virtual (VPN) que implementa técnicas para crear conexiones seguras de punto a punto o de sitio a sitio en configuraciones enrutadas o puenteadas e instalaciones de acceso remoto. Implementa aplicaciones tanto de cliente como de servidor .

OpenVPN permite a los compañeros a autentican entre sí utilizando claves secretas pre-compartidas , certificados o nombre de usuario / contraseña . Cuando se utiliza en una configuración de servidor multicliente, permite que el servidor entregue un certificado de autenticación para cada cliente, utilizando firmas y autoridad de certificación .

Utiliza ampliamente la biblioteca de cifrado OpenSSL , así como el protocolo TLS , y contiene muchas funciones de seguridad y control. Utiliza un protocolo de seguridad personalizado [11] que utiliza SSL / TLS para el intercambio de claves. Es capaz de atravesar traductores de direcciones de red (NAT) y cortafuegos .

OpenVPN se ha adaptado e integrado a varios sistemas. Por ejemplo, DD-WRT tiene la función de servidor OpenVPN. SoftEther VPN , un servidor VPN multiprotocolo, también tiene una implementación del protocolo OpenVPN.

Fue escrito por James Yonan y es software libre , publicado bajo los términos de la GNU General Public License versión 2 (GPLv2). [12] Además, se encuentran disponibles licencias comerciales. [13]

Arquitectura [ editar ]

Cifrado [ editar ]

OpenVPN utiliza la biblioteca OpenSSL para proporcionar cifrado tanto de los canales de datos como de control. Permite que OpenSSL haga todo el trabajo de cifrado y autenticación, lo que permite que OpenVPN utilice todos los cifrados disponibles en el paquete OpenSSL. También puede utilizar la función de autenticación de paquetes HMAC para agregar una capa adicional de seguridad a la conexión (denominada "Firewall HMAC" por el creador). También puede utilizar la aceleración de hardware para obtener un mejor rendimiento de cifrado. [14] [15] El soporte para mbed TLS está disponible a partir de la versión 2.3. [dieciséis]

Autenticación [ editar ]

OpenVPN tiene varias formas de autenticar a los pares entre sí. OpenVPN ofrece claves previamente compartidas , basadas en certificados y autenticación basada en nombre de usuario / contraseña. La clave secreta previamente compartida es la más fácil y la basada en certificados es la más sólida y rica en funciones . [ cita requerida ] En la versión 2.0 se pueden habilitar las autenticaciones de nombre de usuario / contraseña, con o sin certificados. Sin embargo, para hacer uso de las autenticaciones de nombre de usuario / contraseña, OpenVPN depende de módulos de terceros. [ cita requerida ]

Redes [ editar ]

OpenVPN puede ejecutarse sobre transportes de Protocolo de datagramas de usuario (UDP) o Protocolo de control de transmisión (TCP), multiplexando túneles SSL creados en un solo puerto TCP / UDP [17] (RFC 3948 para UDP). [18]

A partir de la serie 2.3.x, OpenVPN es totalmente compatible con IPv6 como protocolo de la red virtual dentro de un túnel y las aplicaciones OpenVPN también pueden establecer conexiones a través de IPv6. [19] Tiene la capacidad de funcionar a través de la mayoría de los servidores proxy (incluido HTTP ) y es bueno para trabajar a través de la traducción de direcciones de red (NAT) y salir a través de firewalls. La configuración del servidor tiene la capacidad de "enviar" determinadas opciones de configuración de red a los clientes. Estos incluyen direcciones IP, comandos de enrutamiento y algunas opciones de conexión. OpenVPN ofrece dos tipos de interfaces para redes a través del controlador Universal TUN / TAP . Puede crear un túnel IP basado en capa 3 (TUN) o unTAP Ethernet basado en la capa 2 que puede transportar cualquier tipo de tráfico Ethernet. OpenVPN puede utilizar opcionalmente la biblioteca de compresión LZO para comprimir el flujo de datos. El puerto 1194 es el número de puerto oficial asignado por IANA para OpenVPN. Las versiones más nuevas del programa ahora tienen ese puerto por defecto. Una característica de la versión 2.0 permite que un proceso administre varios túneles simultáneos, a diferencia de la restricción original de "un túnel por proceso" en la serie 1.x.

El uso de OpenVPN de protocolos de red comunes (TCP y UDP) lo convierte en una alternativa deseable a IPsec en situaciones en las que un ISP puede bloquear protocolos VPN específicos para obligar a los usuarios a suscribirse a un nivel de servicio de "grado empresarial" de mayor precio. [ ejemplo necesario ]

Cuando OpenVPN utiliza transportes del Protocolo de control de transmisión (TCP) para establecer un túnel, el rendimiento será aceptable solo siempre que haya suficiente ancho de banda en exceso en el enlace de red no tunelizado para garantizar que los temporizadores TCP tunelizados no caduquen. [20] Si esto no es cierto, el rendimiento cae drásticamente. Esto se conoce como el "problema de fusión de TCP". [21] [22]

Seguridad [ editar ]

OpenVPN ofrece varias funciones de seguridad interna. Tiene un cifrado de hasta 256 bits a través de la biblioteca OpenSSL , aunque algunos proveedores de servicios pueden ofrecer tarifas más bajas, proporcionando efectivamente algunas de las VPN más rápidas disponibles para los consumidores. Se ejecuta en el espacio de usuario en lugar de requerir la operación de pila de IP (por lo tanto, kernel). OpenVPN tiene la capacidad de eliminar los privilegios de root , usar mlockall para evitar el intercambio de datos confidenciales en el disco, ingresar a una cárcel chroot después de la inicialización y aplicar un contexto SELinux después de la inicialización.

OpenVPN ejecuta un protocolo de seguridad personalizado basado en SSL y TLS, [11] en lugar de admitir IKE, IPsec, L2TP o PPTP .

OpenVPN ofrece soporte para tarjetas inteligentes a través de tokens criptográficos basados en PKCS # 11 .

Extensibilidad [ editar ]

OpenVPN se puede ampliar con complementos o scripts de terceros, a los que se puede llamar en puntos de entrada definidos. [23] [24] El propósito de esto es a menudo extender OpenVPN con un registro más avanzado, autenticación mejorada con nombre de usuario y contraseñas, actualizaciones dinámicas de firewall, integración RADIUS , etc. Los complementos son módulos cargables dinámicamente, generalmente escritos en C , mientras que la interfaz de scripts puede ejecutar cualquier script o binario disponible para OpenVPN. En el código fuente de OpenVPN [25] hay algunos ejemplos de dichos complementos, incluido un complemento de autenticación PAM . También existen varios complementos de terceros para autenticarse contra bases de datos LDAP o SQL, comoSQLite y MySQL . [26]

Plataformas [ editar ]

Está disponible en Solaris , Linux , OpenBSD , FreeBSD , NetBSD , QNX , macOS y Windows XP y posteriores . [27] OpenVPN está disponible para sistemas operativos (SO) de teléfonos móviles, incluidos Maemo , [28] Windows Mobile 6.5 y versiones anteriores , [29] dispositivos iOS 3GS +, [30] dispositivos iOS 3.1.2+ con jailbreak , [31] Android 4.0+ dispositivos y dispositivos Android a los que se les ha actualizado el firmware del mercado secundario de Cyanogenmod [32] o tener instalado el módulo de kernel correcto. [33] No es compatible con algunos sistemas operativos de teléfonos móviles, incluido Palm OS . No es una VPN "basada en web" que se muestra como una página web como Citrix o el acceso web de Terminal Services ; el programa se instala de forma independiente y se configura mediante la edición manual de archivos de texto, en lugar de a través de un asistente basado en GUI. OpenVPN no es compatible con clientes VPN que utilizan IPsec sobre protocolos L2TP o PPTP . El paquete completo consta de un binario para las conexiones de cliente y servidor , un archivo de configuración opcionaly uno o más archivos clave según el método de autenticación utilizado.

Implementaciones de firmware [ editar ]

OpenVPN se ha integrado en varios paquetes de firmware de enrutadores que permiten a los usuarios ejecutar OpenVPN en modo cliente o servidor desde sus enrutadores de red. Un enrutador que ejecuta OpenVPN en modo cliente, por ejemplo, permite que cualquier dispositivo en una red acceda a una VPN sin necesidad de la capacidad de instalar OpenVPN.

Los paquetes de firmware notables con integración OpenVPN incluyen:

OpenVPN también se ha implementado en algunos firmware de enrutadores de fabricantes.

Implementaciones de software [ editar ]

OpenVPN se ha integrado en SoftEther VPN , un servidor VPN multiprotocolo de código abierto, para permitir a los usuarios conectarse al servidor VPN desde clientes OpenVPN existentes.

OpenVPN también está integrado en Vyos , un sistema operativo de enrutamiento de código abierto bifurcado desde el enrutador de software Vyatta .

Licencias [ editar ]

OpenVPN está disponible en dos versiones:

  • OpenVPN Community Edition, que es una versión gratuita y de código abierto
  • OpenVPN Access Server (OpenVPN-AS) se basa en Community Edition, pero proporciona características adicionales pagadas y patentadas como integración LDAP, servidor SMB, administración de interfaz de usuario web y proporciona un conjunto de herramientas de instalación y configuración que, según se informa, simplifican la implementación rápida de una solución de acceso remoto VPN. [40] [41] La edición de Access Server se basa en gran medida en iptables para el equilibrio de carga y nunca ha estado disponible en Windows por esta razón. Esta versión también puede crear de forma dinámica instaladores de clientes ("OpenVPN Connect"), que incluyen un perfil de cliente para conectarse a una instancia de Access Server en particular. [42]Sin embargo, el usuario no necesita tener un cliente de Access Server para conectarse a la instancia de Access Server; se puede utilizar el cliente de OpenVPN Community Edition. [43]

Ver también [ editar ]

  • OpenConnect
  • OpenSSH
  • Protocolo de túnel de socket seguro
  • aturdir
  • Tunnelblick
  • Perforación de orificios UDP
  • WireGuard

Referencias [ editar ]

  1. ^ Registro de cambios de OpenVPN - Notas de la versión de OpenVPN
  2. ^ "Lanzamientos - OpenVPN / openvpn" . Consultado el 27 de abril de 2021 , a través de GitHub .
  3. ^ "Descargas" . openvpn.net . Consultado el 2 de febrero de 2016 .
  4. ^ "VPN de túnel privado - Aplicaciones de Android en Google Play" .
  5. ^ "VPN de túnel privado" . Tienda de aplicaciones . 23 de octubre de 2014.
  6. ^ "Cómo conectarse al servidor de acceso desde una computadora Linux" .
  7. ^ "Búsqueda de puertos FreeBSD" .
  8. ^ "Puertos OpenBSD" .
  9. ^ "La colección de paquetes NetBSD: net / openvpn" .
  10. ^ "openvpn_COPYING en el maestro · OpenVPN_openvpn" . 30 de julio de 2019. Archivado desde el original el 31 de julio de 2019 . Consultado el 30 de julio de 2019 .
  11. ^ a b "Descripción general de seguridad de OpenVPN" . Consultado el 28 de septiembre de 2011 .
  12. ^ LinuxSecurity.com - OpenVPN: Introducción y entrevista con el fundador, James Yonan
  13. openvpn.net: Pricing , consultado el 12 de diciembre de 2018
  14. ^ Andrew Lockhart (2006). Hacks de seguridad de red: consejos y herramientas para proteger su privacidad . "O'Reilly Media, Inc.". pag. 339. ISBN 978-0-596-55143-8.
  15. ^ 6net (2008). Guía de implementación de IPv6 . Javvin Technologies Inc. p. 109. ISBN 978-1-60267-005-1.
  16. ^ Descripción general de los cambios en OpenVPN v2.3 - ChangesInOpenvpn23 - Comunidad OpenVPN
  17. ^ Página de manual de OpenVPN, sección "Opciones del modo TLS"
  18. ^ Petros Daras; Oscar Mayora (2013). Medios de comunicación centrados en el usuario: Primera conferencia internacional, UCMedia 2009, Venecia, Italia, 9-11 de diciembre de 2009, artículos seleccionados revisados . Springer Science & Business Media. pag. 239. ISBN 978-3-642-12629-1.
  19. ^ Wiki de la comunidad OpenVPN , IPv6 en OpenVPN - consultado el 8 de diciembre de 2013
  20. ^ Murray, Mike (20 de marzo de 2021). "OPENVPN MTU: ENCONTRAR LA CONFIGURACIÓN CORRECTA" . The Geek Pub .
  21. ^ Titz, Olaf (23 de abril de 2001). "Por qué TCP sobre TCP es una mala idea" . Consultado el 17 de octubre de 2015 .
  22. ^ Honda, Osamu; Ohsaki, Hiroyuki; Imase, Makoto; Ishizuka, Mika; Murayama, Junichi (octubre de 2005). "Comprensión de TCP sobre TCP: efectos de la tunelización de TCP en el rendimiento y la latencia de un extremo a otro". En Atiquzzaman, Mohammed; Balandin, Sergey I (eds.). Rendimiento, calidad de servicio y control de las redes de sensores y comunicaciones de próxima generación III . 6011 . Código Bibliográfico : 2005SPIE.6011..138H . CiteSeerX 10.1.1.78.5815 . doi : 10.1117 / 12.630496 . S2CID 8945952 .  
  23. ^ "Puntos de entrada del script OpenVPN" . Openvpn.net . Consultado el 30 de julio de 2012 .
  24. ^ OpenVPN plug-in puntos de entrada para los módulos de base C .
  25. ^ "Ejemplos de complementos de OpenVPN" . Openvpn.git.sourceforge.net . Consultado el 30 de julio de 2012 .
  26. ^ Wiki de la comunidad OpenVPN - Proyectos relacionados
  27. ^ "Descargas" . openvpn.net . OpenVPN . Consultado el 6 de agosto de 2015 .
  28. ^ "Paquete OpenVPN Maemo" . Maemo.org . Consultado el 30 de julio de 2012 .
  29. ^ "OpenVPN para PocketPC" . Ovpnppc.ziggurat29.com. 1 de abril de 2007 . Consultado el 30 de julio de 2012 .
  30. ^ "Conexión OpenVPN" . Tecnologías OpenVPN. 16 de enero de 2013 . Consultado el 16 de enero de 2013 .
  31. ^ "GuizmOVPN - GUI de OpenVPN para iPhone / iPad" . guizmovpn.com. 30 de septiembre de 2007 . Consultado el 30 de septiembre de 2012 .
  32. ^ "CHANGELOG en eclair de android_vendor_cyanogen de CyanogenMod" . GitHub . cianogeno. 7 de julio de 2010 . Consultado el 28 de octubre de 2010 . Registro de cambios de Nexus One Cyanogenmod
  33. ^ "Cómo instalar y configurar OpenVPN en un dispositivo rooteado con Android | El blog de VPN es información real sobre VPN" . Vpnblog.info . Consultado el 30 de julio de 2012 .
  34. ^ dd-wrt.com - OpenVPN
  35. ^ Wiki de gárgolas - OpenVPN
  36. ^ "OpenVPN (Configuración del servidor) - OpenWrt Wiki" . openwrt.org . Consultado el 11 de junio de 2018 .
  37. ^ "opnsense.org - Anuncio de lanzamiento de OPNsense 17.1" .
  38. ^ "TomatoVPN" . Tomatovpn.keithmoyer.com . Consultado el 30 de julio de 2012 .
  39. ^ LinksysInfo.org: compilación de VPN con GUI web
  40. ^ "Comparación de productos OpenVPN" . Consultado el 15 de enero de 2017 .
  41. ^ "¿Qué es el servidor de acceso OpenVPN (OpenVPN-AS)?" . Consultado el 15 de enero de 2017 .
  42. ^ "Con respecto al repositorio de chocolatey.org · Número 2 · wget / chocolatey_package_openvpn" . 16 de enero de 2017 . Consultado el 16 de enero de 2017 .
  43. ^ "¿Puedo usar un cliente OpenVPN de la comunidad para conectarme al servidor de acceso?" . Consultado el 16 de enero de 2017 .

Enlaces externos [ editar ]

  • Página web oficial
  • Sitio web de la comunidad
  • Bridgett, Adrian (2 de febrero de 2008). "Presentación y demostración de OpenVPN" . Archivar . Grupo de usuarios de Hampshire Linux. Charlas tecnológicas