it-swarm.com.de

Wie teste ich mit "openssl s_client" auf (fehlende) SSLv3-Unterstützung?

Um die Sicherheitsanfälligkeit "Pudel" zu verringern, möchte ich die SSLv3-Unterstützung auf meinem Server (in diesem Fall TLS anstelle von HTTPS) deaktivieren. Wie kann ich mit openssl s_client Überprüfen, ob ich das getan habe?

119
Roger Lipscombe

OpenSSL s_client

Führen Sie die folgenden Schritte aus, um zu überprüfen, ob Sie die SSLv3-Unterstützung deaktiviert haben

openssl s_client -connect example.com:443 -ssl3

das sollte so etwas produzieren

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:

dies bedeutet, dass SSLv3 auf dem Server deaktiviert ist. Andernfalls wird die Verbindung erfolgreich hergestellt.

Nmap

Alternativ können Sie verwenden Sie nmap, um den Server nach der unterstützten Version zu durchsuchen:

# 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: 
157
P4cK3tHuNt3R

Nebenbei bemerkt können Sie nmap mit dem Skript ssl-enum-ciphers wie folgt verwenden

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

Sie erhalten eine solche Antwort.

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

Wie Sie sehen können, werden alle unterstützten Versionen von ssl/tls sowie die Cipher Suites aufgelistet

32

Ich habe diesen Test für die Verfügbarkeit des SSLv3-Protokolls erstellt. Es gibt wahrscheinlich eine bessere Möglichkeit, nach einer Zeichenfolge zu suchen, die auch anzeigt, dass CBC-Chiffren verwendet werden, aber die meisten Leute scheinen nur wissen zu wollen, ob SSLv3 überhaupt verfügbar ist.

Ein paar Dinge zu beachten:

  • Geschrieben für die Bash unter Mac OS X, kann also nicht sicher sagen, dass es überall funktionieren wird
  • Verwendet gtimeout vs. timeout, da Mac diese Kern-Utils komisch findet
  • allexternal.txt ist eine Datei mit einem Hostnamen oder einer IP pro Zeile

skript:

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
6

Wenn nur SSLv3 deaktiviert ist, können Sie openssl s_client Erzwingen, nur TLS zu verwenden:

openssl s_client -connect exmaple.com:443 -tls1
4

Es ist erwähnenswert, dass die Option -ssl3 in OpenSSL jetzt zur Kompilierungszeit aktiviert werden muss. Wenn Sie mit vorkompilierten Binärdateien arbeiten, ist die Option möglicherweise nicht verfügbar. Siehe dieses Problem: https://github.com/openssl/openssl/issues/6801

Ein alternatives Tool ist testssl.sh. Dies prüft auf Protokolle, Chiffren und ausgewählte Schwachstellen: https://github.com/drwetter/testssl.sh

3
matttyg