Configuración de la suite de cifrado SSL del servidor web "óptimo"

74

Durante los últimos años, se han producido una serie de cambios en lo que se consideraría una configuración óptima de la suite de cifrado SSL (por ejemplo, los ataques BEAST y CRIME, las debilidades de RC4)

Mi pregunta es, ¿qué se consideraría actualmente un conjunto óptimo de conjuntos de cifrado SSL que se habrían habilitado con los siguientes objetivos?

  • Proporcione la conexión más segura posible, incluyendo, cuando sea posible, Perfect Forward Security y evitando las debilidades conocidas.
  • Proporcione compatibilidad con una amplia gama de clientes implementados comúnmente, incluidos los dispositivos móviles (por ejemplo, Android, iOS, Windows Phone) y el sistema operativo de escritorio (incluido Windows XP / IE6)
pregunta Rоry McCune 17.02.2014 - 10:39
fuente

4 respuestas

49

La configuración más segura no depende solo de los cifrados, sino también de la versión tls utilizada. Para openssl, se prefiere tls 1.1 / 1.2. BEAST y CRIME son ataques contra el cliente y generalmente se mitigan del lado del cliente, pero también hay mitigaciones del lado del servidor:

  • CRIMEN: simplemente deshabilita la compresión ssl; eso es todo
  • BEAST / Lucky13: solo usa TLS 1.1, no SSLv3 y no RC4, consulta es BESTIA sigue siendo una amenaza? (Ivan Ristic)
  • BREACH: solo funciona, si se cumplen algunas condiciones, consulte breachattack.com ; Una mitigación fácil y siempre en funcionamiento sería deshacer la compresión http (gzip)

Para una configuración perfecta: SSL siempre afecta el rendimiento en un nivel alto, RC4 y otras suites de cifrado rápidas aún pueden estar bien para contenido estático, esp. cuando se sirve desde su propio cdn.

Una buena guía para comprender OpenSSL es OpenSSL Cookbook con explicaciones detalladas también en PFS , cipher-suites, tls-version, etc. pp. hay 2 entradas de blog que explican PFS y configuración práctica:

Cipher-Suite-Sugerencias para habilitar PFS también en clientes más antiguos:

# apache
SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 \
EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 \
EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS"

# nginx

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 \
EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 \
EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS";

Para obtener un manual detallado de nginx / ssl, quisiera dirigirlo a este Guía de Nginx + SSL + SPDY .

    
respondido por el that guy from over there 17.02.2014 - 20:34
fuente
27

En el año transcurrido desde que se escribió esta respuesta, la guía de Mozilla se ha actualizado periódicamente. Todas mis reservas a continuación se han tenido en cuenta, y recomiendo la guía de todo corazón.

Le recomiendo que lea la guía TLS del lado del servidor de Mozilla . Es exhaustivo, y son especialmente cuidadosos con la compatibilidad con clientes antiguos, a veces en detrimento de la seguridad. (Después de todo, los usuarios de IE 6 merecen poder descargar Firefox). Me gustaría enfatizar varias cosas:

  • Compatibilidad con Windows XP / IE 6 no es optimo Te sugiero que lo dejes si es posible. Requiere SSL 3.0, lo que deja a los clientes decentes abiertos a los ataques de degradación. Editar: los informes de contraseñas débiles en los comentarios anteriores que IE 6 puede admitir TLS 1.0. Sin embargo, no tengo idea de qué porcentaje de clientes de IE 6 lo admiten o lo tienen habilitado.

  • Compatibilidad con XP / IE 8 no es malo. Admite TLS 1.0, aunque su mejor conjunto de cifrado es DES-CBC3-SHA y no admite el secreto hacia adelante perfecto o SNI. (Sus segundas mejores suites de cifrado son RC4-SHA y RC4-MD5 . 3DES es muy lento, pero RC4 tiene problemas de seguridad. Evítelo si es posible).

  • Los parámetros Diffie-Hellman de 2048 bits son mejores desde un punto de vista de seguridad, pero Java 6 solo admite parámetros de 1024 bits. Los parámetros de 1024 bits también son seguros, a menos que sus adversarios incluyan supercomputadoras décadas en el futuro. Es posible que necesite usarlos en su lugar. (Java 7 es compatible con ECDHE, evitando todo el problema del tamaño del parámetro DHE).

La lista de la suite de cifrado principal de Mozilla incluye RC4. Como se mencionó anteriormente, recomiendo la lista de la sección debilidades de RC4 que usa 3DES en su lugar.

Los ejemplos de configuración de Mozilla habilitan SSL 3.0. Como dije, desalentaría eso.

Los ejemplos de configuración de Mozilla recomiendan principalmente los parámetros DH de 2048 bits, pero también ofrecen 1024 como opción.

    
respondido por el Matt Nordhoff 18.02.2014 - 03:47
fuente
22

Por supuesto, el primer paso es mantener OpenSSL (o la biblioteca que usa) al día.

Pero a medida que se descubren nuevas vulnerabilidades y se actualicen los navegadores, las respuestas aquí pueden (serán) obsoletas. Le sugiero que confíe en el Mozilla SSL Configuration Generator para comprobar qué configuración debe utilizar.

    
respondido por el Gaia 02.02.2015 - 19:29
fuente
4

El cifrado SSL 'óptimo' que configura en su servidor web dependerá de los requisitos de sus clientes. En muchos casos, eso sería un factor en la elección del protocolo y las suites de cifrado. No estoy seguro de si ese es el caso para ti.

Puede configurar la mejor seguridad posible: solo admite el protocolo TLS 1.2, solo cifrados con Perfect Forward Security (PFS) y solo AES 256. Dentro de PFS, puede admitir solo la variante de curva elíptica ECDHE. Puede elegir los cifrados GCM seguros más nuevos que proporcionan cifrado autenticado y un rendimiento muy bueno (con instrucción AES-NI). Pero si su cliente más importante utiliza IE8 en Windows 7 y no puede convencerlos de que actualicen el navegador, no podrán usar su servicio y perderá un cliente.

ssllabs.com proporciona un servicio web para escanear su sitio y proporcionar calificaciones como A +, A, B, etc. La clasificación se basa en puntajes numéricos (máximo 100) recibidos para 4 parámetros --- Certificado, Soporte de protocolo, Intercambio de claves y la fuerza de cifrado. Otorgan calificaciones más altas si se respalda el secreto hacia adelante perfecto (PFS), la seguridad de transporte estricta (HSTS), por nombrar algunos,

Tenga en cuenta que la puntuación puede cambiar durante un período de tiempo a medida que se corrigen parches en los navegadores y servidores, surgen nuevas debilidades, se descubren nuevas vulnerabilidades, etc. Anteriormente, ssllabs otorgó una calificación más baja a los sitios que no implementaron mitigaciones del lado del servidor para el BEAST ataca, pero tienen dejaron de hacerlo como consideran que está mitigado en el lado del cliente (excepto para el Apple retrasado), pero más aún porque la mitigación involucró la aplicación de RC4 (para protocolos TLS 1.0 o inferior) y resulta que RC4 es mucho más débil de lo que se pensaba anteriormente.

Puede ir al sitio ssl labs , ingresar su url y obtener la puntuación.

El informe de laboratorios de SSL incluye una sección en la simulación de Apretón de manos donde muestra un grupo de clientes (navegadores, Java, openssl) y qué protocolos, conjuntos de cifrado, tamaños de clave se negociarán con su servidor. Si la negociación no es posible, mostrará "Desajuste de protocolo o conjunto de cifrado" en rojo. Puede consultar la simulación de Handshake para la configuración utilizada por sus clientes importantes. Por ejemplo, puede ver la entrada

IE 8-10/Win7, TLS 1.0, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, FS 256

Pero digamos que ajustas la configuración de SSL de tu servidor para que sea compatible solo con TLS 1.2, entonces esta fila se leerá

IE 8-10/Win7, Protocol or cipher suite mismatch, Fail

Pero, a medida que sus clientes migran / actualicen / actualicen, puede reforzar la seguridad solo con el objetivo de TLS 1.2, solo PFS y solo 256 bits

Otra información importante que proporciona el informe es si los conjuntos de cifrado están en el orden preferido del servidor o no. En el primer caso, se respetará el orden de los cifrados enumerados en la configuración del servidor, por lo que debe colocar primero los conjuntos de cifrado preferidos. Se elegirá el primer cifrado en la lista que pueden usar tanto el servidor como el cliente. Si usa Apache, puede habilitarlo con la directiva "SSLHonorCipherOrder on". Para nginx, la directiva es "ssl_prefer_server_ciphers on;"

    
respondido por el Babu Srinivasan 07.03.2014 - 19:19
fuente

Lea otras preguntas en las etiquetas