Come utilizzare "openssl s_client" per verificare l'assenza di supporto SSLv3?

107

Per mitigare la vulnerabilità "Poodle" , vorrei disabilitare il supporto SSLv3 nella mia ( in questo caso, TLS, piuttosto che HTTPS) server. Come posso utilizzare openssl s_client per verificare che l'ho fatto?

    
posta Roger Lipscombe 15.10.2014 - 11:54
fonte

5 risposte

133

OpenSSL s_client

Per verificare se hai disattivato il supporto SSLv3, esegui quanto segue

openssl s_client -connect example.com:443 -ssl3

che dovrebbe produrre qualcosa di simile

3073927320:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:s3_pkt.c:1258:SSL alert number 40
3073927320:error:1409E0E5:SSL routines:SSL3_WRITE_BYTES:ssl handshake failure:s3_pkt.c:596:

che significa che SSLv3 è disabilitato sul server. Altrimenti la connessione verrà stabilita con successo.

Nmap

In alternativa, puoi utilizzare nmap per eseguire la scansione del server per la versione supportata:

# nmap --script ssl-enum-ciphers example.com
Starting Nmap 6.47 ( http://nmap.org ) at 2014-10-15 03:19 PDT
Nmap scan report for example.com (203.0.113.100)
Host is up (0.090s latency).
rDNS record for 203.0.113.100: edge.example.com
Not shown: 997 filtered ports
PORT    STATE SERVICE
80/tcp  open  http
443/tcp open  https
| ssl-enum-ciphers: 
|   **SSLv3: No supported ciphers found**
|   TLSv1.0: 
    
risposta data 15.10.2014 - 12:16
fonte
23

Da una nota a margine puoi usare nmap con lo script ssl-enum-ciphers come segue

nmap --script ssl-enum-ciphers -p 443 example.com

Riceverai una risposta come questa.

PORT    STATE SERVICE
443/tcp open  https
| ssl-enum-ciphers: 
|   SSLv3: 
|     ciphers: 
|       TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA - strong
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA - strong
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA - strong
|       TLS_RSA_WITH_RC4_128_MD5 - strong
|       TLS_RSA_WITH_RC4_128_SHA - strong
|     compressors: 
|       NULL
|   TLSv1.0: 
|     ciphers: 
|       TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA - strong
|       TLS_RSA_WITH_RC4_128_MD5 - strong
|       TLS_RSA_WITH_RC4_128_SHA - strong
|     compressors: 
|       NULL
|   TLSv1.1: 
|     ciphers: 
|       TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA - strong
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA - strong
|     compressors: 
|       NULL
|   TLSv1.2: 
|     ciphers: 
|       TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA - strong
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA - strong
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 - strong
|     compressors: 
|       NULL
|_  least strength: strong

Come puoi vedere elenca tutte le versioni supportate di ssl / tls e le suite di crittografia

    
risposta data 06.07.2015 - 14:57
fonte
6

Ho creato questo test per la disponibilità del protocollo SSLv3. C'è probabilmente un modo migliore per cercare una stringa che mostri anche che i cifrari CBC sono in uso, ma la maggior parte delle persone sembra voler sapere se SSLv3 è disponibile.

Alcune cose da notare:

  • Scritto per la bash su Mac OS X, quindi non posso dire con certezza che funzionerà ovunque
  • Utilizza gtimeout rispetto a timeout poiché il Mac è bizzarro rispetto a quei programmi di utilità di base
  • allexternal.txt è un file con un nome host o IP per riga

script:

for ip in 'awk '{print $1}' < allexternal.txt'; do
    if gtimeout 30 openssl s_client -connect $ip:443 -ssl3 | grep -q 'Protocol  : SSLv3' ; then
        echo $ip SSLv3 detected >> sslv3output;
    else
        echo $ip SSLv3 NOT detected >> sslv3output;
    fi;
done
    
risposta data 16.10.2014 - 00:43
fonte
2

Se SSLv3 è disattivato, puoi anche forzare openssl s_client a utilizzare solo TLS:

openssl s_client -connect exmaple.com:443 -tls1
    
risposta data 26.02.2015 - 01:29
fonte
1

Vale la pena notare che l'opzione -ssl3 in OpenSSL ora deve essere abilitata in fase di compilazione. Se stai usando binari pre-compilati, l'opzione potrebbe non essere disponibile. Vedi questo problema: link

Uno strumento alternativo è testssl.sh. Controlla i protocolli, i codici e le vulnerabilità selezionate: link

    
risposta data 12.09.2018 - 13:00
fonte

Leggi altre domande sui tag