先日、SSL3.0 に深刻な脆弱性の問題(POODLE)が発覚して以来、SSL3.0を無効化しているサイトも多いかと思います。
そんな中、今度は、Pound 2.6(ロードバランサー)でのSSL3.0の無効化が出来ないとのお問合せを頂きました。
OpenSSL 1.0.1が導入されている環境であれば、TLS1.2のみの通信となりますが、SSL3.0を無効化することは可能です。
参考までに、作業の概要を残しておきます。
補足)
Pound 2.7 から設定にDisable PROTOが追加されたので、SSLv3.0の無効化は可能です。
可能であれば、Pound 2.6 から 2.7へのバージョンアップが望ましいです。
○環境
Pound 2.6 + OpenSSL 1.0.1
※OpenSSL 0.9.8系は、設定不可(SSL3.0とTLS1.0を同一と扱うため)
○問合せ内容
Pound 2.6 を用いて、SSLラッパーを行っているが、SSL3.0の無効化は可能か?
→OpenSSL 1.0.1系の環境で、TLS1.2のみの通信でよければ、SSL3.0を無効化することは可能。
○作業概要
以下の設定は、hoge.example.net(ListenHTTPSは、10.0.0.1)という環境を例に説明します。
Poundのmanによれば、Ciphersを設定することが可能です。
Ciphers "acceptable:cipher:list" This is the list of ciphers that will be accepted by the SSL connection; it is a string in the same format as in OpenSSL ciphers(1) and SSL_CTX_set_cipher_list(3).
pound.cfgのListenHTTPSに以下のセクションを追加する。
ListenHTTPS Address 10.0.0.1 Port 443 Cert "/usr/local/etc/ssl/server.crt" Ciphers "ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS:!SSLv3" End
Poundを再起動して、SSL3.0が無効化されていることを確認。
$ openssl s_client -ssl3 -connect hoge.example.net:443 CONNECTED(00000003) 3077736172:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:s3_pkt.c:1257:SSL alert number 40 3077736172:error:1409E0E5:SSL routines:SSL3_WRITE_BYTES:ssl handshake failure:s3_pkt.c:596: <以下省略>
TLS1.0と1.1も無効化されている。
$ openssl s_client -tls1 -connect hoge.example.net:443 CONNECTED(00000003) 3077555948:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:s3_pkt.c:1257:SSL alert number 40 3077555948:error:1409E0E5:SSL routines:SSL3_WRITE_BYTES:ssl handshake failure:s3_pkt.c:596: <以下省略> $ openssl s_client -tls1_1 -connect hoge.example.net:443 CONNECTED(00000003) 3077699308:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:s3_pkt.c:1257:SSL alert number 40 3077699308:error:1409E0E5:SSL routines:SSL3_WRITE_BYTES:ssl handshake failure:s3_pkt.c:596: <以下省略>
TLS1.2は通信可能。
$ openssl s_client -tls1_2 -connect hoge.example.net:443 CONNECTED(00000003) depth=0 C = JP, ST = Tokyo, L = Minato-ku, O = SEVEN NET inc., CN = hoge.example.net verify error:num=18:self signed certificate verify return:1 depth=0 C = JP, ST = Tokyo, L = Minato-ku, O = SEVEN NET inc., CN = hoge.example.net verify return:1 <以下省略>
上記のCiphersで使用可能な暗号スイートは、以下のとおり。
ご自身の管理されているサイトに併せて、適切に設定してください。
$ openssl ciphers -v 'ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS:!SSLv3' ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(256) Mac=AEAD ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(256) Mac=AEAD ECDH-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH/RSA Au=ECDH Enc=AESGCM(256) Mac=AEAD ECDH-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH/ECDSA Au=ECDH Enc=AESGCM(256) Mac=AEAD ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(128) Mac=AEAD ECDHE-ECDSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(128) Mac=AEAD ECDH-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH/RSA Au=ECDH Enc=AESGCM(128) Mac=AEAD ECDH-ECDSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH/ECDSA Au=ECDH Enc=AESGCM(128) Mac=AEAD DHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=DH Au=RSA Enc=AESGCM(256) Mac=AEAD DHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AESGCM(128) Mac=AEAD ECDHE-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA384 ECDHE-ECDSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(256) Mac=SHA384 ECDH-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH/RSA Au=ECDH Enc=AES(256) Mac=SHA384 ECDH-ECDSA-AES256-SHA384 TLSv1.2 Kx=ECDH/ECDSA Au=ECDH Enc=AES(256) Mac=SHA384 DHE-RSA-AES256-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AES(256) Mac=SHA256 ECDHE-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA256 ECDHE-ECDSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(128) Mac=SHA256 ECDH-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH/RSA Au=ECDH Enc=AES(128) Mac=SHA256 ECDH-ECDSA-AES128-SHA256 TLSv1.2 Kx=ECDH/ECDSA Au=ECDH Enc=AES(128) Mac=SHA256 DHE-RSA-AES128-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AES(128) Mac=SHA256 AES256-GCM-SHA384 TLSv1.2 Kx=RSA Au=RSA Enc=AESGCM(256) Mac=AEAD AES128-GCM-SHA256 TLSv1.2 Kx=RSA Au=RSA Enc=AESGCM(128) Mac=AEAD AES256-SHA256 TLSv1.2 Kx=RSA Au=RSA Enc=AES(256) Mac=SHA256 AES128-SHA256 TLSv1.2 Kx=RSA Au=RSA Enc=AES(128) Mac=SHA256