Domanda:
Come posso utilizzare "openssl s_client" per verificare (assenza di) supporto SSLv3?
Roger Lipscombe
2014-10-15 14:54:13 UTC
view on stackexchange narkive permalink

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?

Cinque risposte:
P4cK3tHuNt3R
2014-10-15 15:16:31 UTC
view on stackexchange narkive permalink

OpenSSL s_client

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.

Nmap

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:  
Il comando openssl funziona; Tuttavia, non riesco a far funzionare lo script nmap.
Ah. Porta non predefinita. Usa `--script + ssl-enum-ciphers`, per http://stackoverflow.com/a/17175548/8446.
Qual è l'output del tuo comando nmap?
https://gist.github.com/rlipscombe/eb941f08f24016fe5cd0
@RogerLipscombe Giusto, quindi cosa non funziona lì? SSLv3 non è elencato, quindi non è supportato.
Funziona bene; L'ho risolto. Sto usando una porta non standard, quindi devo anteporre il nome dello script con "+" per forzarne l'esecuzione.
Vedi anche questa risposta per sapere come interpretare l'output di openssl: https://security.stackexchange.com/a/169738/60157
Anonymous Platypus
2015-07-06 17:57:55 UTC
view on stackexchange narkive permalink

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

Semplicemente il modo più veloce per ottenere un elenco di crittografie disponibili su un endpoint remoto.regole di nmap, come al solito!;)
theterribletrivium
2014-10-16 03:43:35 UTC
view on stackexchange narkive permalink

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:

  • Scritto per il bash su Mac OS X, quindi non posso dire con certezza che funzionerà ovunque
  • Utilizza gtimeout rispetto a timeout poiché il Mac è strano riguardo a quelle utilità principali
  • allexternal.txt è un file con un nome host o IP per riga

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  
Mi scuso per la formattazione, non ero sicuro di come far apparire gli accenti gravi come letterali invece di trasformarli in un blocco di codice.
Grazie per la condivisione, ma posso suggerirti di utilizzare echo "QUIT" in modo da non dover installare gtimeout. La seconda riga dovrebbe leggere ... if echo 'QUIT' | openssl s_client -connect $ ip: 443 -ssl3 | grep -q "Protocollo: SSLv3"; poi
Anche l'utilizzo di "Protocol: SSLv3" sembra essere dubbio.Secondo questa pagina: http://security.stackexchange.com/a/71459/51963, "Cipher: 0000" potrebbe essere una stringa migliore da cercare.
Mathias R. Jessen
2015-02-26 06:29:15 UTC
view on stackexchange narkive permalink

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

  openssl s_client -connect exmaple.com:443 -tls1  codice> 
Per TLS 1.0 e versioni successive, dovresti usare anche l'opzione `-servername`. In arruola SNI.
Questo non verifica che ssl3 sia disabilitato, dice solo di usare TLS 1
matttyg
2018-09-12 16:00:41 UTC
view on stackexchange narkive permalink

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



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...