Deshabilitar SSLv3 en Dovecot - Falló la comunicación TLS: ¿no hay cifrado compartido?

12
  • Ubuntu 12.04
  • OpenSSL 1.0.1-4ubuntu5.20 14 de marzo de 2012
  • Dovecot 2.0.19

La situación es que estoy intentando deshabilitar SSLv3 en Dovecot agregando !SSLv3 a ssl_cipher_list :

ssl_cipher_list = EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:!SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA

reinicie el Dovecot, luego revise el registro, obtuve:

  

29 de octubre 05:00:46 mail dovecot: imap-login: Desconectado (sin intentos de autenticación): rip = 118.71.13.x, labio = 107.170.105.y, protocolo de enlace de TLS: SSL_accept () fallido: error:   1408A0C1: Rutinas SSL: SSL3_GET_CLIENT_HELLO: sin cifrado compartido

lo que no entiendo es: la lista de cifrado anterior es compatible con algunos TLSv1.2:

openssl ciphers -v 'EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:!SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA' | grep -i tls
DHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=DH       Au=RSA  Enc=AESGCM(256) Mac=AEAD
DHE-RSA-AES256-SHA256   TLSv1.2 Kx=DH       Au=RSA  Enc=AES(256)  Mac=SHA256
ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AESGCM(256) Mac=AEAD
ECDHE-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AES(256)  Mac=SHA384
DHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=DH       Au=RSA  Enc=AESGCM(128) Mac=AEAD
DHE-RSA-AES128-SHA256   TLSv1.2 Kx=DH       Au=RSA  Enc=AES(128)  Mac=SHA256
ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AESGCM(128) Mac=AEAD
ECDHE-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AES(128)  Mac=SHA256

Ejecutando tcpdump mientras utiliza Thunderbird para conectarse a Dovecot:

Secure Sockets Layer
    SSL Record Layer: Handshake Protocol: Client Hello
        Content Type: Handshake (22)
        Version: TLS 1.0 (0x0301)
        Length: 177
        Handshake Protocol: Client Hello
            Handshake Type: Client Hello (1)
            Length: 173
            Version: TLS 1.2 (0x0303)
            Random
                GMT Unix Time: May  4, 2099 21:21:49.000000000 ICT
                Random Bytes: db3c676892cb86a10350aae7fa67868ed4935862593455bc...
            Session ID Length: 0
            Cipher Suites Length: 46
            Cipher Suites (23 suites)
                Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b)
                Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f)

Puede ver que al menos tanto el cliente como el servidor son compatibles con ECDHE-RSA-AES128-GCM-SHA256 , ¿por qué se produjo un error de negociación?

Secure Sockets Layer
    TLSv1.2 Record Layer: Alert (Level: Fatal, Description: Handshake Failure)
        Content Type: Alert (21)
        Version: TLS 1.2 (0x0303)
        Length: 2
        Alert Message
            Level: Fatal (2)
            Description: Handshake Failure (40)
    
pregunta quanta 29.10.2014 - 08:02
fuente

2 respuestas

11
  

La situación es que estoy intentando deshabilitar SSLv3 en Dovecot agregando! SSLv3 a la lista ssl_cipher:

Esta es una mala idea porque no hay cifrados específicos para TLS1.0 y TLS1.1, es decir, utilizan los mismos cifrados que SSL 3.0. Sólo TLS1.2 definió algunos nuevos cifrados. Esto significa que, si deshabilita los cifrados SSLv3, no se pueden conectar clientes SSLv3, pero tampoco hay clientes TLS1.0 o TLS1.1. Probablemente esto no sea lo que pretendías hacer.

La forma real no es deshabilitar los cifrados SSLv3, sino deshabilitar el protocolo SSLv3, pero no puedo ver una opción para ello en Dovecot 2.0. Según enlace , hay una configuración de ssl_protocols en Dovecot 2.1+, pero la misma página también recomienda erróneamente desactivar los cifrados SSLv3 en Dovecot 2, que está mal.

    
respondido por el Steffen Ullrich 29.10.2014 - 08:19
fuente
7

iirc ssl_ciphers no es el lugar correcto para deshabilitar un protocolo, intente:

# dovecot
ssl_protocols = !SSlv2 !SSLv3

después de esto, sugeriría probar su servidor con el script de testssl.sh

    
respondido por el that guy from over there 29.10.2014 - 08:27
fuente

Lea otras preguntas en las etiquetas