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?
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?
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.
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:
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
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:
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
Se SSLv3 è disattivato, puoi anche forzare openssl s_client
a utilizzare solo TLS:
openssl s_client -connect exmaple.com:443 -tls1
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