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]
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]
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 ]
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]
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 .
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]
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.
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:
OpenVPN también se ha implementado en el firmware de enrutadores de algunos fabricantes.
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 .
OpenVPN está disponible en dos versiones:
{{cite book}}
: CS1 maint: numeric names: authors list (link)