クライアント(ラップトップ)でUbuntu 16.04を使用していますが、リモートサーバーをテストするシステム(この例ではzmap.io)にSSL v3が存在しないようです。
サーバーが引き続きSSL v3を提供しているかどうかをテストする方法については、いくつかの質問があります。
カール:
$ curl --sslv3 https://zmap.io/
curl: (35) gnutls_handshake() failed: Handshake failed
私が期待する SSLv3, TLS handshake, Client hello
を出力します。
openssl
$ openssl s_client -ssl3 -connect zmap.io:443
140396574262936:error:140A90C4:SSL routines:SSL_CTX_new:null ssl method passed:ssl_lib.c:1878:
私が期待する routines:SSL3_READ_BYTES:sslv3 alert handshake
を出力します。
nmap
$ nmap --script ssl-enum-ciphers -p 443 zmap.io
Starting Nmap 7.01 ( https://nmap.org ) at 2016-09-20 17:19 CEST
Nmap scan report for zmap.io (141.212.120.90)
Host is up (0.12s latency).
PORT STATE SERVICE
443/tcp open https
| ssl-enum-ciphers:
| TLSv1.0:
| ciphers:
| TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A
| TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A
| TLS_DHE_RSA_WITH_AES_128_CBC_SHA (dh 2048) - A
| TLS_DHE_RSA_WITH_AES_256_CBC_SHA (dh 2048) - A
| compressors:
| NULL
| cipher preference: server
| TLSv1.1:
| ciphers:
| TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A
| TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A
| TLS_DHE_RSA_WITH_AES_128_CBC_SHA (dh 2048) - A
| TLS_DHE_RSA_WITH_AES_256_CBC_SHA (dh 2048) - A
| compressors:
| NULL
| cipher preference: server
| TLSv1.2:
| ciphers:
| TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (secp256r1) - A
| TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (secp256r1) - A
| TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (dh 2048) - A
| TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (dh 2048) - A
| TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (secp256r1) - A
| TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A
| TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (secp256r1) - A
| TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A
| TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 (dh 2048) - A
| TLS_DHE_RSA_WITH_AES_128_CBC_SHA (dh 2048) - A
| TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 (dh 2048) - A
| TLS_DHE_RSA_WITH_AES_256_CBC_SHA (dh 2048) - A
| compressors:
| NULL
| cipher preference: server
|_ least strength: A
Nmap done: 1 IP address (1 Host up) scanned in 10.57 seconds
私が期待する **SSLv3: No supported ciphers found**
を出力します。
Ubuntu 16.04(またはopensslでSSLv3が有効になっていない他のLinuxディストリビューション)でSSLv3をテストする方法を知っている人はいますか?
テスト中のサーバーが公共のインターネットから利用できません。つまり、オンラインサービスは私のニーズを満たしていません。
TestSSL.shプロジェクトはSSLスキャナーです。また、意図的に弱められたOpenSSLの静的バージョンが含まれ、あらゆる種類の古い暗号が有効になっています。これらのビルドの1つを使用して、SSLv3をテストできます。
現在のMint Live CDで試してみました。そして、私はそれがあなたのUbuntuでもうまくいくはずだと思っています。
以下の完全な指示/概念実証。
mint@mint ~ $ cat /etc/lsb-release
DISTRIB_ID=LinuxMint
DISTRIB_RELEASE=18.1
DISTRIB_CODENAME=serena
DISTRIB_DESCRIPTION="Linux Mint 18.1 Serena"
mint@mint ~ $ git clone https://github.com/drwetter/testssl.sh --depth 1
Cloning into 'testssl.sh'...
remote: Counting objects: 48, done.
remote: Compressing objects: 100% (46/46), done.
remote: Total 48 (delta 8), reused 17 (delta 2), pack-reused 0
Unpacking objects: 100% (48/48), done.
Checking connectivity... done.
mint@mint ~ $ file testssl.sh/bin/* | grep -i linux | grep -i static
testssl.sh/bin/openssl.Linux.i686: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.6.24, BuildID[sha1]=688fd66da53e4351659a0580cf9f5605deb16c9e, stripped
testssl.sh/bin/openssl.Linux.x86_64: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, for GNU/Linux 2.6.24, BuildID[sha1]=2ac27c3998817aa9145f19a723e99e8a9191d0da, stripped
mint@mint ~ $ alias badopenssl=testssl.sh/bin/openssl.Linux.x86_64
mint@mint ~ $ openssl version
OpenSSL 1.0.2g 1 Mar 2016
mint@mint ~ $ sha256sum $(which openssl)
efed90fc204144946c011c451e61e3c420756014c2252cfad493ec0896cb4e34 /usr/bin/openssl
mint@mint ~ $ badopenssl version
OpenSSL 1.0.2-chacha (1.0.2i-dev)
mint@mint ~ $ sha256sum testssl.sh/bin/openssl.Linux.x86_64
a11b8e25992030059b3ce3a5c38c432d9a33c05e8e4581996d19c52a57cb94ab testssl.sh/bin/openssl.Linux.x86_64
mint@mint ~ $ openssl req -x509 -nodes -days 999 -subj '/CN=mydemoserver' -newkey rsa:2048 -keyout server.pem -out server.pem
Generating a 2048 bit RSA private key
.........................................+++
..................................+++
writing new private key to 'server.pem'
-----
mint@mint ~ $ openssl s_server -ssl3
140199887697560:error:140A90C4:SSL routines:SSL_CTX_new:null ssl method passed:ssl_lib.c:1878:
mint@mint ~ $ badopenssl s_server -ssl3
Using default temp DH parameters
ACCEPT
^C
これを背景にしましょう。また、「-ssl3」パラメーターも必要ありません。
mint@mint ~ $ badopenssl s_server 2>&1 >/dev/null &
[1] 8136
通常のopensslはSSLv3で接続しません:
mint@mint ~ $ openssl s_client -ssl3 -connect localhost:4433
140415485314712:error:140A90C4:SSL routines:SSL_CTX_new:null ssl method passed:ssl_lib.c:1878:
...しかし、badopensslはSSLv3で喜んで接続します:
mint@mint ~ $ badopenssl s_client -ssl3 -connect localhost:4433 2>&1 | grep -iE 'Protocol|^New'
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-SHA
Protocol : SSLv3
^C
SSLyze は、暗号とプロトコル(およびその他のTLSセキュリティ要素)を列挙できるオープンソースのPythonベースのツールです。自分のマシンからローカルで実行するのは簡単なので、インターネットに公開されていないサーバーのテストに役立ちます。
OpenSSLのPythonラッパーを使用するため、おそらくOpenSSLライブラリに存在しないものをテストすることはできません。古いライブラリ、または弱いプロトコルで再コンパイルされたライブラリ、システムのデフォルトの1つが機能しない場合でも機能するはずです。