Per mitigare la vulnerabilità "Poodle", desidero disabilitare il supporto SSLv3 nel mio server (in questo caso TLS, piuttosto che HTTPS). Come posso utilizzare openssl s_client
per verificare di averlo fatto?
Per mitigare la vulnerabilità "Poodle", desidero disabilitare il supporto SSLv3 nel mio server (in questo caso TLS, piuttosto che HTTPS). Come posso utilizzare openssl s_client
per verificare di averlo fatto?
Per verificare se hai disabilitato il supporto SSLv3, esegui il seguente
openssl s_client -connect example.com:443 -ssl3
che dovrebbe produrre qualcosa di simile
3073927320: errore: 14094410: routine SSL: SSL3_READ_BYTES: errore handshake avviso sslv3: s3_pkt.c: 1258: avviso SSL numero 403073927320: errore: 1409E0E5: routine SSL: SSL3_WRITE_BYTES: errore handshake ssl: s3_pkt.c: 596:
significa che SSLv3 è disabilitato sul server. Altrimenti la connessione verrà stabilita con successo.
In alternativa, puoi usare nmap per scansionare il server per la versione supportata:
# nmap --script ssl-enum-ciphers example.comAvvio di Nmap 6.47 (http://nmap.org) a 2014-10-15 03:19 PDTNmap report di scansione per example.com (203.0.113.100) L'host è attivo (Latenza 0,090 s) .rDNS record per 203.0.113.100: edge.example.com Non mostrato: 997 porte filtrate SERVIZIO STATO PORTA80 / tcp aperto http443 / tcp aperto https | ssl-enum-ciphers: | ** SSLv3: nessuna crittografia supportata trovata ** | TLSv1.0:
In una nota a margine puoi usare nmap
con lo script ssl-enum-ciphers come segue
nmap --script ssl-enum-ciphers -p 443 esempio .com
Riceverai una risposta come questa.
PORT STATE SERVICE443 / tcp open https | ssl-enum-ciphers: | SSLv3: | cifrari: | TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA - forte | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA - forte | TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA - forte | TLS_RSA_WITH_RC4_128_MD5 - forte | TLS_RSA_WITH_RC4_128_SHA - forte | compressori: | NULL | TLSv1.0: | cifrari: | TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA - forte | TLS_RSA_WITH_RC4_128_MD5 - forte | TLS_RSA_WITH_RC4_128_SHA - forte | compressori: | NULL | TLSv1.1: | cifrari: | TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA - forte | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA - forte | compressori: | NULL | TLSv1.2: | cifrari: | TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA - forte | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA - forte | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 - forte | compressori: | NULL | _ forza minima: forte
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. Probabilmente esiste un modo migliore per cercare una stringa che mostri anche che le crittografie CBC sono in uso, ma la maggior parte delle persone sembra voler sapere se SSLv3 è disponibile.
Alcune cose da notare:
script:
per ip in "awk" {print $ 1} '< allexternal.txt`; fare se gtimeout 30 openssl s_client -connect $ ip: 443 -ssl3 | grep -q "Protocollo: SSLv3"; quindi echo $ ip SSLv3 rilevato >> sslv3output; altro echo $ ip SSLv3 NON rilevato >> sslv3output; fi; fatto
Se solo SSLv3 è disabilitato, puoi anche forzare openssl s_client
a utilizzare solo TLS:
openssl s_client -connect exmaple.com:443 -tls1 codice>
Vale la pena notare che l'opzione -ssl3 in OpenSSL ora deve essere abilitata in fase di compilazione. Se stai utilizzando binari precompilati, l'opzione potrebbe non essere disponibile. Vedi questo problema: https://github.com/openssl/openssl/issues/6801
Uno strumento alternativo è testssl.sh. Verifica la presenza di protocolli, cifrari e vulnerabilità selezionate: https://github.com/drwetter/testssl.sh