Pound 2.6のSSL3.0無効化について

先日、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