OpenVPN

Software de red privada virtual gratuito y de código abierto

OpenVPN
Autor(es) original(es)James Yonan
Desarrollador(es)Proyecto OpenVPN / OpenVPN Inc.
Lanzamiento inicial13 de mayo de 2001 ; hace 23 años [1] ( 13 de mayo de 2001 )
Versión estable2.6.12 [2] (18 de julio de 2024 ; hace 3 meses ) [±] ( 18-07-2024 )
Repositorio
  • github.com/OpenVPN
Escrito endo
Plataforma
TipoVPN
LicenciaLicencia Pública General de GNU versión 2 [10]
Sitio webopenvpn.net 

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

OpenVPN permite que los pares se autentiquen entre sí mediante claves secretas compartidas previamente , certificados o nombre de usuario y contraseña . Cuando se utiliza en una configuración multicliente-servidor, permite que el servidor emita un certificado de autenticación para cada cliente, mediante 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 . [ cita requerida ]

OpenVPN se ha portado e incorporado 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. [12]

Fue escrito por James Yonan y es software libre , publicado bajo los términos de la Licencia Pública General GNU versión 2 (GPLv2). [13] Además, hay licencias comerciales disponibles. [14]

Arquitectura

Encriptación

OpenVPN utiliza la biblioteca OpenSSL para proporcionar cifrado tanto de los canales de datos como de control. Permite que OpenSSL realice 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. [15] [16] El soporte para mbed TLS está disponible a partir de la versión 2.3. [17]

Autenticación

OpenVPN tiene varias formas de autenticar a los pares entre sí. OpenVPN ofrece autenticación con claves precompartidas , basada en certificados y basada en nombre de usuario y contraseña. La clave secreta precompartida es la más sencilla, 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 con nombre de usuario y contraseña, tanto con certificados como sin ellos. Sin embargo, para utilizar las autenticaciones con nombre de usuario y contraseña, OpenVPN depende de módulos de terceros. [ cita requerida ]

Redes

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 único puerto TCP/UDP [18] (RFC 3948 para UDP). [19]

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. [20] 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" ciertas opciones de configuración de red a los clientes. Estas 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 un TAP Ethernet basado en 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 usan ese puerto de forma predeterminada. 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 protocolos de red comunes (TCP y UDP) por parte de OpenVPN 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 "nivel empresarial" de mayor precio. Por ejemplo, Comcast declaró anteriormente que su producto @Home estaba, y siempre había estado, designado como un servicio residencial y no permitía el uso de aplicaciones comerciales. Su argumento era que realizar trabajo remoto a través de una VPN puede afectar negativamente el rendimiento de la red de sus suscriptores residenciales habituales. Ofrecieron una alternativa, @Home Professional, que costaría más que el producto @Home. Por lo tanto, cualquiera que desee utilizar VPN tendría que suscribirse a un nivel de servicio de nivel empresarial de mayor precio. [21]

Cuando OpenVPN utiliza transportes de Protocolo de Control de Transmisión (TCP) para establecer un túnel, el rendimiento será aceptable solo mientras haya suficiente ancho de banda excedente en el enlace de red no tunelizado para garantizar que los temporizadores TCP tunelizados no expiren. [22] Si esto no es así, el rendimiento cae drásticamente debido al problema de colapso de TCP . [23] [24]

Seguridad

OpenVPN ofrece varias funciones de seguridad internas. Tiene un cifrado de hasta 256 bits a través de la biblioteca OpenSSL , aunque algunos proveedores de servicios pueden ofrecer tasas más bajas, lo que proporciona efectivamente algunas de las VPN más rápidas disponibles para los consumidores. OpenVPN también admite Perfect Forward Secrecy (PFS), que regenera las claves de cifrado a intervalos establecidos, lo que garantiza que incluso si una clave se ve comprometida, los datos anteriores y futuros permanecen seguros. Además, OpenVPN se puede configurar con varios cifrados, como ChaCha20 y AES-256. [25] Se ejecuta en el espacio de usuario en lugar de requerir la operación de la pila IP (por lo tanto, el kernel). OpenVPN tiene la capacidad de eliminar los privilegios de root , usar mlockall para evitar el intercambio de datos confidenciales al 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

OpenVPN se puede ampliar con complementos o scripts de terceros , que se pueden llamar en puntos de entrada definidos. [26] [27] El propósito de esto es a menudo ampliar OpenVPN con un registro más avanzado, una 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 [28] hay algunos ejemplos de dichos complementos, incluido un complemento de autenticación PAM . También existen varios complementos de terceros para autenticar contra bases de datos LDAP o SQL como SQLite y MySQL . [29]

Formato del encabezado de OpenVPN
CompensacionesOcteto0123
OctetoPoco012345678910111213141516171819202122232425262728293031
00Código de operaciónIdentificación de claveID de sesión
432ID de sesión
864ID de sesiónHMAC
1296HMAC
24192
28224HMACIdentificación del paquete
32256Identificación del paqueteTiempo neto
36288Tiempo netoLongitud de la matriz de mensajesID del paquete de mensaje n.°

Plataformas

Está disponible en Solaris , Linux , OpenBSD , FreeBSD , NetBSD , QNX , macOS y Windows XP y posteriores . [30] OpenVPN está disponible para sistemas operativos móviles , incluidos Maemo , [31] Windows Mobile 6.5 y anteriores, [32] dispositivos iOS 3GS+, [33] dispositivos iOS 3.1.2+ con jailbreak , [34] dispositivos Android 4.0+ y dispositivos Android que han tenido el firmware posventa de Cyanogenmod flasheado [35] o tienen el módulo de kernel correcto instalado. [36] 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 Terminal Services Web access ; el programa se instala de forma independiente y se configura editando archivos de texto manualmente, en lugar de a través de un asistente basado en GUI. OpenVPN no es compatible con clientes VPN que usan 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 opcional y uno o más archivos de clave según el método de autenticación utilizado.

Implementaciones de firmware

OpenVPN se ha integrado en varios paquetes de firmware de enrutadores , lo que permite 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 de una red acceda a una VPN sin necesidad de tener la capacidad de instalar OpenVPN.

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

Paquetes de firmware destacados con integración OpenVPN
Paquete de firmwareCostoReveladorReferencias
DD-WRTGratisNewMedia-NET GmbH[37]
GárgolaGratisObispo Eric[38]
Wrt abiertoGratisDesarrollo impulsado por la comunidad[39]
OPNsenseGratisDeciso BV[40]
pfSenseGratisRubicon Communications, LLC (Netgate)
TomateGratisKeith Moyer[41] [42]

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

Implementaciones de software

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

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

Licencias

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 la Community Edition, pero proporciona funciones adicionales pagas y propietarias como la 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. [43] [44] La edición Access Server depende en gran medida de iptables para equilibrar la carga y, por este motivo, nunca ha estado disponible en Windows. Esta versión también puede crear dinámicamente instaladores de cliente ("OpenVPN Connect"), que incluyen un perfil de cliente para conectarse a una instancia particular de Access Server. [45] 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. [46]

Véase también

Referencias

  1. ^ Registro de cambios de OpenVPN - Notas de la versión de OpenVPN
  2. ^ "Descargas de la comunidad". openvpn.net . Consultado el 20 de junio de 2024 .
  3. ^ "Descargas". openvpn.net . Consultado el 27 de enero de 2023 .
  4. ^ "Private Tunnel VPN - Aplicaciones de Android en Google Play".
  5. ^ "VPN de túnel privado". App Store . 23 de octubre de 2014.
  6. ^ "Cómo conectarse al servidor de acceso desde una computadora Linux".
  7. ^ "Búsqueda de puertos de FreeBSD".
  8. ^ "Puertos OpenBSD".
  9. ^ "La colección de paquetes NetBSD: net/openvpn".
  10. ^ "openvpn_COPYING at master · OpenVPN_openvpn". GitHub . 30 de julio de 2019. Archivado desde el original el 31 de julio de 2019 . Consultado el 30 de julio de 2019 .
  11. ^ ab "OpenVPN Security Overview" (Descripción general de la seguridad de OpenVPN) . Consultado el 28 de septiembre de 2011 .
  12. ^ Bischoff, Paul (31 de agosto de 2018). «6 herramientas de código abierto para crear tu propia VPN». Opensource.com . Archivado desde el original el 31 de agosto de 2018. Consultado el 30 de julio de 2019 .
  13. ^ LinuxSecurity.com - OpenVPN: Introducción y entrevista con el fundador, James Yonan
  14. ^ openvpn.net: Precios, consultado el 12 de diciembre de 2018
  15. ^ Andrew Lockhart (2006). Trucos de seguridad en red: consejos y herramientas para proteger su privacidad. "O'Reilly Media, Inc.", pág. 339. ISBN 978-0-596-55143-8.
  16. ^ 6net (2008). Guía de implementación de IPv6. Javvin Technologies Inc. pág. 109. ISBN 978-1-60267-005-1.{{cite book}}: CS1 maint: numeric names: authors list (link)
  17. ^ Descripción general de los cambios en OpenVPN v2.3 - ChangesInOpenvpn23 - Comunidad OpenVPN
  18. ^ Página de manual de OpenVPN, sección "Opciones del modo TLS"
  19. ^ Petros Daras; Oscar Mayora (2013). User Centric Media: First International Conference, UCMedia 2009, Venecia, Italia, 9-11 de diciembre de 2009, Documentos revisados ​​y seleccionados. Springer Science & Business Media. pág. 239. ISBN 978-3-642-12629-1.
  20. ^ Wiki de la comunidad OpenVPN, IPv6 en OpenVPN - consultado el 8 de diciembre de 2013
  21. ^ "Protocolo VPN OpenVPN". privacyhq.com . Consultado el 24 de junio de 2021 .
  22. ^ Murray, Mike (20 de marzo de 2021). «OPENVPN MTU: cómo encontrar la configuración correcta». The Geek Pub . Archivado desde el original el 20 de marzo de 2021. Consultado el 20 de julio de 2022 .
  23. ^ Titz, Olaf (23 de abril de 2001). "Why TCP Over TCP Is A Bad Idea" (Por qué TCP sobre TCP es una mala idea) . Consultado el 17 de octubre de 2015 .
  24. ^ Honda, Osamu; Ohsaki, Hiroyuki; Imase, Makoto; Ishizuka, Mika; Murayama, Junichi (octubre de 2005). "Comprensión de TCP sobre TCP: efectos de la tunelización TCP en el rendimiento y la latencia de extremo a extremo". 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 . Vol. 6011. Código Bibliográfico :2005SPIE.6011..138H. CiteSeerX 10.1.1.78.5815 . doi :10.1117/12.630496. S2CID  8945952. 
  25. ^ "OpenVPN explicado: definición, funcionamiento y seguridad | NordVPN". nordvpn.com (en alemán). 29 de noviembre de 2023. Consultado el 10 de septiembre de 2024 .
  26. ^ "Puntos de entrada de scripts de OpenVPN". Openvpn.net . Consultado el 30 de julio de 2012 .
  27. ^ Puntos de entrada del complemento OpenVPN para módulos basados ​​en C.
  28. ^ "Ejemplos de complementos de OpenVPN". Openvpn.git.sourceforge.net . Consultado el 30 de julio de 2012 .
  29. ^ Wiki de la comunidad OpenVPN - Proyectos relacionados
  30. ^ "Descargas". openvpn.net . OpenVPN . Consultado el 6 de agosto de 2015 .
  31. ^ "Paquete OpenVPN Maemo". Maemo.org . Consultado el 30 de julio de 2012 .
  32. ^ "OpenVPN para PocketPC". Ovpnppc.ziggurat29.com. 1 de abril de 2007. Consultado el 30 de julio de 2012 .
  33. ^ "OpenVPN Connect". OpenVPN Technologies. 16 de enero de 2013. Consultado el 16 de enero de 2013 .
  34. ^ "GuizmOVPN - Interfaz gráfica de usuario de OpenVPN para iPhone/iPad". guizmovpn.com. 30 de septiembre de 2007. Consultado el 30 de septiembre de 2012 .
  35. ^ "REGISTRO DE CAMBIOS en eclair de android_vendor_cyanogen de CyanogenMod". GitHub . cyanogen. 7 de julio de 2010 . Consultado el 28 de octubre de 2010 .Registro de cambios de Nexus One Cyanogenmod
  36. ^ "Cómo instalar y configurar OpenVPN en un dispositivo Android rooteado | El blog VPN contiene información real sobre VPN". Vpnblog.info . Archivado desde el original el 26 de mayo de 2011.
  37. ^ dd-wrt.com - OpenVPN
  38. ^ Wiki de Gargoyle - OpenVPN
  39. ^ "OpenVPN - Wiki de OpenWrt". openwrt.org . Consultado el 11 de junio de 2018 .
  40. ^ "opnsense.org - Anuncio de lanzamiento de OPNsense 17.1".
  41. ^ "TomatoVPN". Tomatovpn.keithmoyer.com . Consultado el 30 de julio de 2012 .
  42. ^ LinksysInfo.org – Creación de VPN con interfaz gráfica de usuario web
  43. ^ "Comparación de productos OpenVPN" . Consultado el 15 de enero de 2017 .
  44. ^ "¿Qué es OpenVPN Access Server (OpenVPN-AS)?" . Consultado el 15 de enero de 2017 .
  45. ^ "Respecto al repositorio chocolatey.org · Issue #2 · wget/chocolatey_package_openvpn". GitHub . 16 de enero de 2017 . Consultado el 16 de enero de 2017 .
  46. ^ "¿Puedo utilizar un cliente OpenVPN comunitario para conectarme al servidor de acceso?" . Consultado el 16 de enero de 2017 .
  • Sitio web oficial
  • Sitio web de la comunidad
  • Bridgett, Adrian (2 de febrero de 2008). "Presentación y demostración de OpenVPN". Archivo . Hampshire Linux User Group.Charlas técnicas
Retrieved from "https://en.wikipedia.org/w/index.php?title=OpenVPN&oldid=1251128651"