Disabilita SSLv3 in Dovecot - TLS handshaking fallito: nessun cifrario condiviso?

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

La situazione è che sto cercando di disabilitare SSLv3 in Dovecot aggiungendo !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

riavvia il Dovecot, quindi controlla il registro, ho ottenuto:

Oct 29 05:00:46 mail dovecot: imap-login: Disconnected (no auth attempts): rip=118.71.13.x, lip=107.170.105.y, TLS handshaking: SSL_accept() failed: error: 1408A0C1:SSL routines:SSL3_GET_CLIENT_HELLO:no shared cipher

ciò che non capisco è: la lista di cifratura sopra supporta alcuni 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

Esecuzione di tcpdump durante l'utilizzo di Thunderbird per la connessione 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)

Puoi vedere che almeno il supporto per client e server ECDHE-RSA-AES128-GCM-SHA256 , perché l'errore di handshake?

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)
    
posta quanta 29.10.2014 - 08:02
fonte

2 risposte

11

The situation is I'm trying to disable SSLv3 in Dovecot by adding !SSLv3 to the ssl_cipher_list:

Questa è una cattiva idea perché non ci sono cifrari specifici per TLS1.0 e TLS1.1, cioè usano gli stessi codici di SSL 3.0. Solo TLS1.2 ha definito alcuni nuovi codici. Ciò significa che se si disabilitano i cifrari SSLv3 non è possibile connettersi ai client SSLv3, ma anche ai client TLS1.0 o TLS1.1. Questo probabilmente non è ciò che intendevi fare.

Il vero modo non è disabilitare i cifrari SSLv3, ma disabilitare il protocollo SSLv3, ma non posso vederne un'opzione in Dovecot 2.0. Secondo il link c'è un'impostazione ssl_protocols in Dovecot 2.1+, ma la stessa pagina consiglia anche erroneamente di disabilitare i cifrari SSLv3 in Dovecot 2 che è semplicemente sbagliato.

    
risposta data 29.10.2014 - 08:19
fonte
7

iirc ssl_ciphers non è il posto giusto per disabilitare un protocollo, prova:

# dovecot
ssl_protocols = !SSlv2 !SSLv3

successivamente suggerisco di testare il server con lo script da testssl.sh

    
risposta data 29.10.2014 - 08:27
fonte

Leggi altre domande sui tag