Después de dos años y medio desde la publicación de la versión 2.5, se ha preparado el lanzamiento de OpenVPN 2.6.0, un paquete para crear redes privadas virtuales que permite establecer una conexión cifrada entre dos máquinas cliente o configurar un servidor VPN centralizado que funcione para varios clientes simultáneamente. El código de OpenVPN se distribuye bajo la licencia GPLv2, y se generan paquetes binarios para Debian, Ubuntu, CentOS, RHEL y Windows.
Novedades principales:
- Se garantiza el soporte para un número ilimitado de conexiones.
- Se incluye el módulo del núcleo ovpn-dco, que permite acelerar considerablemente el rendimiento. VPN. La aceleración se logra trasladando todas las operaciones de cifrado, el procesamiento de paquetes y la gestión del canal de comunicación al núcleo de Linux, lo cual elimina los costes asociados con el cambio de contexto, optimiza el rendimiento al acceder directamente a las API internas del núcleo y evita la lenta transmisión de datos entre el núcleo y el espacio del usuario (el cifrado, la descifrado y el enrutamiento se realizan mediante el módulo sin enviar tráfico al controlador en el espacio del usuario).
En las pruebas realizadas, en comparación con la configuración basada en la interfaz tun, utilizar el módulo en el lado del cliente y del servidor con el cifrado AES-256-GCM permitió lograr un aumento en el ancho de banda de 8 veces (de 370 Mbit/s a 2950 Mbit/s). Al utilizar el módulo solo en el lado del cliente, el ancho de banda aumentó tres veces para el tráfico saliente y no cambió para el tráfico entrante. Al aplicar el módulo solo en el lado del servidor, el ancho de banda aumentó 4 veces para el tráfico entrante y un 35% para el tráfico saliente.
- Se ha proporcionado la posibilidad de usar el modo TLS con certificados autofirmados (al usar la opción "--peer-fingerprint" se pueden omitir los parámetros "--ca" y "--capath" y funcionar sin iniciar un servidor PKI basado en Easy-RSA u otro software similar).
- En el servidor UDP se ha implementado un modo de negociación de conexión basado en cookies, donde se utiliza una cookie basada en HMAC como identificador de sesión, lo que permite al servidor realizar la verificación sin mantener estado.
- Se agregó soporte para la compilación con la biblioteca OpenSSL 3.0. Se añadió el parámetro "--tls-cert-profile insecure" para seleccionar el nivel mínimo de seguridad de OpenSSL.
- Se han añadido nuevos comandos de gestión remote-entry-count y remote-entry-get para contar el número de conexiones externas y mostrar su lista.
- En el proceso de acuerdo de claves, el método más prioritario para obtener material para la generación de claves ahora es el mecanismo EKM (Exported Keying Material, RFC 5705), en lugar del mecanismo específico de OpenVPN PRF. Para aplicar EKM, se requiere la biblioteca OpenSSL o mbed TLS 2.18+.
- Se ha asegurado la compatibilidad con OpenSSL en modo FIPS, lo que permite utilizar OpenVPN en sistemas que cumplen con los requisitos de seguridad FIPS 140-2.
- En mlock se ha implementado una verificación de la reserva de un tamaño suficiente de memoria. En caso de menos de 100 MB de RAM disponible, se realiza una llamada a setrlimit() para aumentar el límite.
- Se ha añadido la opción «—peer-fingerprint» para verificar la validez o vincular el certificado por su huella digital basada en el hash SHA256, sin aplicar tls-verify.
- Para los scripts, se ha proporcionado la posibilidad de autenticación diferida, implementada a través de la opción «—auth-user-pass-verify». En los scripts y plugins se ha añadido soporte para informar al cliente sobre la autenticación en espera (pending) al aplicar la autenticación diferida.
- Se ha añadido un modo de compatibilidad (—compat-mode) que permite conectarse a servidores antiguos que utilizan OpenVPN 2.3.x o versiones anteriores.
- En la lista transmitida a través del parámetro «—data-ciphers», se permite el uso del prefijo «?» para especificar cifrados opcionales que solo se utilizarán si hay soporte en SSL-la biblioteca.
- Se ha añadido la opción «—session-timeout» mediante la cual se puede limitar el tiempo máximo de sesión.
- En el archivo de configuración se permite especificar el nombre y la contraseña mediante la etiqueta <auth-user-pass><\/auth-user-pass>.
- Se ha proporcionado la posibilidad de configuración dinámica del MTU del cliente, basada en los datos de MTU enviados por el servidor. Para cambiar el tamaño máximo de MTU, se ha añadido la opción «—tun-mtu-max» (por defecto 1600).
- Se ha añadido el parámetro «—max-packet-size» para definir el tamaño máximo de los paquetes de control.
- Se ha eliminado el soporte para el modo de inicio de OpenVPN a través de inetd. Se ha eliminado la opción ncp-disable. Las opciones verify-hash y el modo de claves estáticas se han declarado obsoletas (solo se mantiene TLS). Los protocolos TLS 1.0 y 1.1 se consideran obsoletos (el parámetro tls-version-min se establece por defecto en 1.2). Se ha eliminado la implementación integrada del generador de números aleatorios (—prng), se debe utilizar la implementación PRNG de las bibliotecas criptográficas mbed TLS o OpenSSL. Se ha dejado de soportar el filtrado de paquetes PF (Packet Filtering). Por defecto, la compresión está desactivada (—allow-compression=no).
- Se ha añadido CHACHA20-POLY1305 a la lista de cifrados por defecto.
Fuente: opennet.ru
