"Poodle"の脆弱性 を緩和するために、私のサーバー(この場合はHTTPSではなくTLS)でSSLv3サポートを無効にしたいと思います。 openssl s_client
これを行ったことを確認するには?
SSLv3サポートが無効になっているかどうかを確認するには、次のコマンドを実行します
openssl s_client -connect example.com:443 -ssl3
これは次のようなものを生成するはずです
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:
サーバーでSSLv3が無効になっていることを意味します。それ以外の場合、接続は正常に確立されます。
または、サポートされているバージョンについてサーバーをスキャンするためにnmapを使用することができます。
# 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:
サイドノートでは、次のようにssl-enum-ciphersスクリプトでnmap
を使用できます
nmap --script ssl-enum-ciphers -p 443 example.com
このような応答が返されます。
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
ご覧のとおり、サポートされているすべてのバージョンのssl/tlsと暗号スイートがリストされています。
このテストは、SSLv3プロトコルが使用できるかどうかを確認するために作成しました。 CBC暗号が使用されていることを示す文字列を検索するためのより良い方法がおそらくありますが、ほとんどの人はSSLv3が使用可能かどうかを知りたいだけのようです。
注意すべきいくつかの事柄:
脚本:
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
SSLv3だけが無効になっている場合は、openssl s_client
TLSのみを使用するには:
openssl s_client -connect exmaple.com:443 -tls1
OpenSSLの-ssl3オプションは、コンパイル時に有効にする必要があることに注意してください。コンパイル済みのバイナリで実行している場合、このオプションは使用できない場合があります。この問題を参照してください: https://github.com/openssl/openssl/issues/6801
別のツールはtestssl.shです。これにより、プロトコル、暗号、選択された脆弱性がチェックされます: https://github.com/drwetter/testssl.sh