-
Entendiendo las opciones de cifrado del servidor OpenVPN de PFSense
La idea es explicar en perfecto castellano, las opciones de configuración de este hack donde explico como crear un servidor OpenVPN con las opciones más seguras posibles. Tanto para la seguridad de los datos transmitidos, como para la fiabilidad de la conexión.
Modo de servidor «Acceso remoto (SSL/TLS + Autenticación de usuario)»: Requiere SSL/TLS y autenticación de usuario para conectarse. Esta es la opción más segura disponible. No solo aprovecha los beneficios de otras configuraciones SSL/TLS, sino que también exige un nombre de usuario y una contraseña por parte del cliente al conectarse. El acceso del cliente puede revocarse no solo anulando el certificado, sino también cambiando la contraseña. Además, si una clave comprometida no se detecta de inmediato, el riesgo se reduce, ya que es poco probable que el atacante tenga tanto las claves como la contraseña. El asistente de OpenVPN utiliza este modo cuando configura una VPN de acceso remoto.
Protocolo TCP sólo en IPv4 o IPv6: El uso de TCP para una VPN es más lento y puede generar más problemas. En algunos casos excepcionales, TCP puede superar limitaciones del entorno del cliente, como eludir cortafuegos al ejecutar un servidor OpenVPN en el puerto TCP 443. TCP es orientado a la conexión con entrega garantizada, lo que significa que cualquier paquete perdido se retransmite. Esto puede parecer una buena idea en principio, pero las retransmisiones de TCP provocan una degradación significativa del rendimiento en conexiones a Internet con alta carga o con pérdidas constantes de paquetes. El tráfico TCP a menudo existe dentro de túneles, y no es deseable retransmitir paquetes perdidos del tráfico VPN encapsulado. En casos donde TCP se encapsula dentro de TCP, como un túnel VPN que usa TCP como protocolo de transporte, si se pierde un paquete, tanto los paquetes TCP externos como los internos se retransmitirán. Aunque esto pueda pasar desapercibido ocasionalmente, una pérdida recurrente generará un rendimiento significativamente inferior al de UDP. Si el tráfico dentro del túnel requiere entrega confiable, usará un protocolo como TCP, que garantiza dicha confiabilidad y gestionará sus propias retransmisiones. Este modo se vincula a una única interfaz y limita a OpenVPN a aceptar exclusivamente IPv4 o IPv6, pero no ambos al mismo tiempo.
Clave TLS: Una clave TLS mejora la seguridad de una conexión OpenVPN al requerir que ambas partes tengan una clave común antes de que un par pueda realizar un handshake TLS. Esta capa de autenticación HMAC permite descartar los paquetes del canal de control que no posean la clave adecuada, protegiendo a los pares de ataques o conexiones no autorizadas. La clave TLS no tiene ningún efecto sobre los datos del túnel. Una clave TLS también protege contra algunos ataques basados en SSL, como Heartbleed, que de otro modo podrían comprometer la VPN a través del canal de control.
Intercambio de claves mediante curva ECDH: Configura una curva elíptica específica para su uso en intercambios de claves Elliptic Curve Diffie-Hellman (ECDH). Esto se aplica únicamente a la encriptación TLS con ECDH. Por defecto, OpenVPN utiliza la curva especificada en el certificado del servidor cuando está configurado con un certificado ECDSA. De lo contrario, OpenVPN utiliza secp384r1 como alternativa predeterminada.
Algoritmo de cifrado: Es la lista de algoritmos de cifrado de datos que OpenVPN puede usar para esta VPN, en orden de preferencia. La selección predeterminada incluye AES-GCM en versiones de 256 y 128 bits, así como ChaCha20-Poly135. La mejor práctica es utilizar cifrados AEAD (Authenticated Encryption with Associated Data) como AES-GCM y ChaCha20-Poly135. Estos cifrados combinan cifrado y autenticación, por lo que no requieren un algoritmo de hash separado. Además de ofrecer una seguridad robusta, suelen ser significativamente más rápidos que otros cifrados. Esta funcionalidad sólo es compatible con el modo cliente/servidor, lo que significa que únicamente funciona con modos SSL/TLS en los que la red del túnel es lo suficientemente grande para múltiples clientes (por ejemplo, más grande que una /30). En modo de clave compartida o al usar una red de túnel /30, OpenVPN utiliza únicamente el valor del algoritmo de cifrado de datos de reserva (Fallback Data Encryption Algorithm). Si hay compatibilidad AES-NI en el hardware del servidor o de los clientes, AES-256-GCM va muy bien. Si no la hay, CHACHA20-POLY1305 ofrece mejor rendimiento. Hay que tener en cuenta que el único algoritmo compatible con OpenVPN Data Channel Offload (DCO) es AES-256-GCM. Si se activa DCO, estas opciones se ocultan para evitar selecciones no válidas.
Algoritmo de cifrado de reserva: El algoritmo de cifrado de datos que OpenVPN utilizará cuando no pueda negociar un algoritmo automáticamente. OpenVPN emplea este valor para túneles de clave compartida y para configuraciones SSL/TLS que solo puedan admitir un único cliente (red de túnel /30). OpenVPN también utiliza este algoritmo para clientes heredados más antiguos que no solo no pueden negociar un algoritmo de cifrado de datos, sino que también han sido compilados para un «tamaño reducido», como dispositivos integrados.
Algoritmo de Digestión de Autenticación: Selecciona el algoritmo de digestión de mensajes que OpenVPN utiliza para la autenticación HMAC de los paquetes entrantes. Este algoritmo se usa en el canal de datos y también en el canal de control cuando el túnel utiliza una clave TLS. El valor predeterminado en la interfaz gráfica es SHA256, que ofrece un buen equilibrio entre seguridad y velocidad. Cuando se usan cifrados AEAD, como AES-GCM, OpenVPN ignora este valor para el canal de datos, ya que los cifrados AEAD ya realizan la autenticación. Sin embargo, incluso al usar un cifrado AEAD, OpenVPN sigue empleando este algoritmo para autenticar el canal de control si el túnel utiliza una clave TLS. OpenVPN utiliza SHA1 de forma predeterminada si esta opción no se especifica en su configuración. A menos que ambos lados estén configurados con un valor conocido, se recomienda usar SHA1 aquí.
Profundidad del Certificado: Esta opción limita la longitud válida de una cadena de certificados. El valor predeterminado restringe la cadena a uno (Cliente + Servidor). Con este valor, si una Autoridad de Certificación (CA) intermedia no autorizada firma un certificado, los certificados firmados por esa CA intermedia no autorizada fallarán en la validación. En casos donde la estructura del certificado requiera encadenamiento con CAs intermedias, aumente este límite para permitir la cadena más larga requerida.
Coincidencia estricta entre Usuario y CN: Controla si el firewall aplicará una coincidencia estricta entre el nombre de usuario proporcionado por el usuario y el Common Name (CN) de su certificado al autenticarlo. Cuando está habilitado, la autenticación falla si estos dos valores no coinciden. Esto evita que los usuarios utilicen sus propias credenciales con el certificado de otro usuario y viceversa.
Validación de Uso de Clave en Certificados de Cliente: Cuando está habilitada, el proceso de autenticación verifica que el certificado proporcionado por un cliente contenga las propiedades adecuadas para actuar como cliente. Esto significa que el certificado debe incluir el atributo de uso de clave extendido para «Autenticación de Cliente TLS Web». Esto evita que se utilicen certificados diseñados para otros propósitos, como la firma de correos electrónicos o certificados destinados únicamente a actuar como servidor, como certificados de cliente VPN.
Search
Archives
- noviembre 2024
- octubre 2024
- septiembre 2024
- junio 2024
- mayo 2024
- abril 2024
- marzo 2024
- octubre 2023
- agosto 2023
- junio 2023
- mayo 2023
- abril 2023
- marzo 2023
- febrero 2023
- enero 2023
- diciembre 2022
- noviembre 2022
- octubre 2022
- septiembre 2022
- agosto 2022
- julio 2022
- junio 2022
- mayo 2022
- abril 2022
- febrero 2022
- enero 2022
- diciembre 2021
- noviembre 2021
- octubre 2021
- septiembre 2021
- julio 2021
- junio 2021
- mayo 2021
- abril 2021
- marzo 2021
- febrero 2021
- enero 2021
- diciembre 2020
- noviembre 2020
- octubre 2020
- septiembre 2020
- junio 2020
- mayo 2020
- abril 2020
- marzo 2020
- noviembre 2019
- septiembre 2019
- agosto 2019
- julio 2019
- junio 2019
- mayo 2019
- enero 2019
- noviembre 2018
- septiembre 2018
- agosto 2018
- junio 2018
- mayo 2018
- marzo 2018
- febrero 2018
- diciembre 2017
- octubre 2017
- septiembre 2017
- agosto 2017
- julio 2017
- junio 2017
- mayo 2017
- abril 2017
- marzo 2017
- febrero 2017
- diciembre 2016
- noviembre 2016
- octubre 2016
- septiembre 2016
- agosto 2016
- julio 2016
- mayo 2016
- abril 2016
- marzo 2016
- febrero 2016
- noviembre 2015
- octubre 2015
- agosto 2015
- julio 2015
- junio 2015
- mayo 2015
- abril 2015
- marzo 2015
- febrero 2015
- enero 2015
- diciembre 2014
- noviembre 2014
- octubre 2014
- septiembre 2014
- agosto 2014
- julio 2014
- junio 2014
- mayo 2014
- abril 2014
- marzo 2014
- febrero 2014
- enero 2014
- diciembre 2013
- noviembre 2013
- septiembre 2013
- julio 2013
- mayo 2013
- marzo 2013
- febrero 2013
- enero 2013
- diciembre 2012
- noviembre 2012
- agosto 2012
- julio 2012
- junio 2012
- mayo 2012
- abril 2012
- marzo 2012
- enero 2012
- noviembre 2011
- julio 2011
- junio 2011
- mayo 2011
- abril 2011
- marzo 2011
- enero 2011
- diciembre 2010
- septiembre 2010
- agosto 2010
- julio 2010
- febrero 2010
- enero 2010