openvpn, la opción tls-cipher no funciona, no hay cifrado compartido

openvpn, la opción tls-cipher no funciona, no hay cifrado compartido

Mientras experimentaba con la configuración de openvpn, me topé coneste consejo en un sitio web. dice que puede limitar la lista de cifrados para evitar ataques de degradación. Lo probé en una LAN con 2 computadoras, ambas ejecutando Kubuntu 14.04 con OpenVPN 2.3.2.

en server.conf en el servidor openvpn, inserté esta línea

tls-cipher TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256:TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256:TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256

Al ejecutar openvpn --show-tlsy comparar el resultado, me aseguré de que cada uno de los cifrados en la línea anterior sea conocido por mi versión de openvpn (tanto en el servidor como en el cliente).

pero cuando inicio el servidor openvpn y luego el cliente, el servidor me da el siguiente resultado

Fri Sep 25 12:31:59 2015 "THECLIENTSIP":38749 TLS: Initial packet from [AF_INET]"THECLIENTSIP":38749, sid=d9c33d37 653b2f0e Fri Sep 25 12:32:00 2015 "THECLIENTSIP":38749 TLS_ERROR: BIO read tls_read_plaintext error: error:1408A0C1:SSL routines:SSL3_GET_CLIENT_HELLO:no shared cipher Fri Sep 25 12:32:00 2015 "THECLIENTSIP":38749 TLS Error: TLS object -> incoming plaintext read error Fri Sep 25 12:32:00 2015 "THECLIENTSIP":38749 TLS Error: TLS handshake failed Fri Sep 25 12:32:00 2015 "THECLIENTSIP":38749 SIGUSR1[soft,tls-error] received, client-instance restarting sin esa opción tls-cipher funciona bien.

No entiendo por qué dice "sin cifrado compartido". ¿Es incorrecto enumerar los cifrados separados por dos puntos? o ¿cuál es el problema aquí?

gracias por leer. Espero que alguien pueda ayudarme.

editar Reemplacé la línea en server.conf con tls-cipher TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256 para ver qué sucede. y la salida del servidor openvpn es la misma.

editar 2

Estaba buscando más y encontré este sitio.https://community.openvpn.net/openvpn/wiki/Hardening y ahora entendí que OpenVpn 2.3.2 solo es compatible con conjuntos de cifrado SSLv3/TLSv1.0. pero openvpn --show-tlstambién muestra conjuntos de cifrado TLSv1.2

Limitar a las opciones TLSv1.0 DHE + RSA produce la siguiente lista, adecuada para <=2.3.2 pares. Es mejor evitar las opciones DES, especialmente DES único (conocido como muy débil).

TLS-DHE-RSA-CON-AES-256-CBC-SHA

TLS-DHE-RSA-CON-CAMELIA-256-CBC-SHA

TLS-DHE-RSA-CON-3DES-EDE-CBC-SHA

TLS-DHE-RSA-CON-AES-128-CBC-SHA

TLS-DHE-RSA-CON-SEMILLA-CBC-SHA

TLS-DHE-RSA-CON-CAMELIA-128-CBC-SHA

TLS-DHE-RSA-CON-DES-CBC-SHA

Evite todos los conjuntos de cifrado DES: se sabe que DES es muy débil (3DES-EDE todavía está bien) Evite todos los conjuntos de cifrado RC4: se sabe que RC4 es débil Evite todos los conjuntos de cifrado EXPORT: se especificó que EXPORT era débil hace muchos años

y funciona cuando uso uno de estos cifrados en server.conf, por ejemplo tls-cipher TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA

Lamentablemente, en esa página no está escrito exactamente cómo puedo obtenerlo yo mismo... ¿alguien lo sabe?

dado que TLSv1.0 es SSLv3 y openvpn dice que usa OpenSSL, intenté obtener esa información a través de OpenSSL, filtrando con grep openssl ciphers -v | grep SSLv3 | grep Kx=DH pero el resultado es diferente (por ejemplo, la palabra CON no aparece en esa lista)

Suponiendo que tal vez solo haya una diferencia en la notación, intenté reemplazar parte del texto con openssl ciphers -v | grep SSLv3 | grep Kx=DH | grep DHE-RSA | sed 's/DHE-RSA/TLS-DHE-RSA-WITH/g' | awk '{print $1}' impresiones sed:

TLS-DHE-RSA-WITH-AES256-SHA TLS-DHE-RSA-WITH-CAMELLIA256-SHA TLS-DHE-RSA-WITH-AES128-SHA TLS-DHE-RSA-WITH-SEED-SHA TLS-DHE-RSA-WITH-CAMELLIA128-SHA

pero esto todavía no es lo mismo que la lista en el "Artículo sobre endurecimiento de openvpn" y no estoy seguro de si esa es la forma correcta de todos modos...

en este sitioSe recomienda el uso de DHE-RSA-AES256-SHA. Entonces, supongo que el cifrado tls más seguro que puedo usar con openvpn 2.3.2 es TLS-DHE-RSA-WITH-AES-256-CBC-SHA. pero esa respuesta es de noviembre de 2013. ¿Sigue siendo la mejor opción? De alguna manera, esta es una pregunta diferente ahora. pero se trata de encontrar la opción de cifrado tls más segura.

editar 3 ok, podría extender ese comando openssl-grep-sed

openssl ciphers -v | grep SSLv3 | grep Kx=DH | grep DHE-RSA | sed 's/DHE-RSA/TLS-DHE-RSA-WITH/g' | sed 's/SHA/CBC-SHA/g'| awk '{print $1}'

huellas dactilares:

TLS-DHE-RSA-WITH-AES256-CBC-SHA TLS-DHE-RSA-WITH-CAMELLIA256-CBC-SHA TLS-DHE-RSA-WITH-AES128-CBC-SHA TLS-DHE-RSA-WITH-SEED-CBC-SHA TLS-DHE-RSA-WITH-CAMELLIA128-CBC-SHA

ahora es la misma lista que en ese artículo sin esa entrada DES y 3DES.

Entonces, ¿este es ahora el resultado correcto? porque esta solución solo se basa en la suposición de que solo hay una diferencia en la notación entre la salida del comando openssl -v y el comando openvpn --show-tls.

editar 4 no, lo siento, no era la misma lista que en ese artículo sin esa entrada DES y 3DES... ahora es:

openssl ciphers -v | grep SSLv3 | grep Kx=DH | grep DHE-RSA | sed 's/DHE-RSA/TLS-DHE-RSA-WITH/g' | sed 's/SHA/CBC-SHA/g'| sed 's/AES/AES-/g' | sed 's/CAMELLIA/CAMELLIA-/g' | awk '{print $1}' huellas dactilares:

TLS-DHE-RSA-WITH-AES-256-CBC-SHA TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA TLS-DHE-RSA-WITH-AES-128-CBC-SHA TLS-DHE-RSA-WITH-SEED-CBC-SHA TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA

Pero esto es un error, ¿no? y sólo funciona de esta manera si la lista de nombres de los cifrados no crece.

Lo siento, si la "pregunta" puede resultar confusa... por favor comente, ¡muchas gracias si al menos se tomó el tiempo de leer esto!

Respuesta1

No creo que OpenVPN admita ECDHE todavía: probé OpenVPN 2.3.4 en Debian 8.3 (estable) y 2.3.10 en Debian probando como servidor, y ninguno funciona cuando se especifica tls-cipher con un conjunto de cifrado ECDHE, conectándose desde un Cliente de Windows que ejecuta 2.3.10. Hasta ahora sólo funcionan los DHE.

información relacionada