share facebook facebook2 twitter menu hatena pocket slack

2014.11.06 THU

HAProxy で SSLv3 を無効にする方法

川原 洋平

WRITTEN BY川原 洋平

ども、犬はプードルよりも雑種が好きなかっぱ@inokara)です。

Poodle Attacks

SSL 3.0 の脆弱性が下記の通り報告されています。

Poodle Attacks の取り急ぎの対策として SSLv3 の無効が推奨されているようです。


SSL / TLS


取り急ぎメモ(無効にする方法)

HAProxy でも 1.5 以降で SSL が正式にサポートされていますので影響を受ける可能性はありますので対策は施しておきたいものです。HAProxy では bind オプションに続いて以下を指定します。

bind :443 ssl crt haproxy.pem no-sslv3

こちらの HAProxy version 1.5.6 – Configuration Manual に書かれていますね。尚、設定後は haproxy を reload する必要があります。

ちなみに haproxy の reload は graceful な再起動(プロセスを複製して接続中のプロセス処理を行い、処理が終わったら古いプロセスは自動で落ちる)な為、無停止での適用が可能かと思います。


実験

openssl コマンド

以下のようにクライアントコマンドにて確認します。

openssl s_client -connect localhost:443 -ssl3

SSLv3 有効

CONNECTED(00000003)
depth=0 C = JP, ST = Tokyo, L = Minato-ku, O = Iret, CN = ha.test.inokara.com
verify error:num=18:self signed certificate
verify return:1
depth=0 C = JP, ST = Tokyo, L = Minato-ku, O = Iret, CN = ha.test.inokara.com

<h2>verify return:1</h2>

Certificate chain
 0 s:/C=JP/ST=Tokyo/L=Minato-ku/O=Iret/CN=ha.test.inokara.com

<h2>   i:/C=JP/ST=Tokyo/L=Minato-ku/O=Iret/CN=ha.test.inokara.com</h2>

Server certificate
-----BEGIN CERTIFICATE-----
MIIDODCCAiACCQDulT2XEfkhNTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJK
(略)
K92HWDTQMk46w1w3y0kNrCr7QAVW+2IQC+kwubLRA93Wb3Qcneq8aI1/vDTGPaqz
3wpnPZuSzwqLrg35
-----END CERTIFICATE-----
subject=/C=JP/ST=Tokyo/L=Minato-ku/O=Iret/CN=ha.test.inokara.com

<h2>issuer=/C=JP/ST=Tokyo/L=Minato-ku/O=Iret/CN=ha.test.inokara.com</h2>

No client certificate CA names sent

<h2>Server Temp Key: ECDH, prime256v1, 256 bits</h2>

<h2>SSL handshake has read 1349 bytes and written 274 bytes</h2>

New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : SSLv3
    Cipher    : ECDHE-RSA-AES256-SHA
    Session-ID: B5F0CC553582A628F5074E7098E32F4BFD173495445DDB070F37115C0E401242
    Session-ID-ctx:
    Master-Key: 5D8C93B039C70331FC832ABC8FC989027CF90EC7242697111E9E151EF175F302ACB79C41A5C630ECF52679B6462BC315
    Key-Arg   : None
    Krb5 Principal: None
    PSK identity: None
    PSK identity hint: None
    Start Time: 1413349822
    Timeout   : 7200 (sec)

<h2>    Verify return code: 18 (self signed certificate)</h2>

SSLv3 無効

見事にネゴシエーション部分でエラーとなります。

CONNECTED(00000003)
140286305711944:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:s3_pkt.c:1275:SSL alert number 40

<h2>140286305711944:error:1409E0E5:SSL routines:SSL3_WRITE_BYTES:ssl handshake failure:s3_pkt.c:598:</h2>

<h2>no peer certificate available</h2>

<h2>No client certificate CA names sent</h2>

<h2>SSL handshake has read 7 bytes and written 0 bytes</h2>

New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : SSLv3
    Cipher    : 0000
    Session-ID:
    Session-ID-ctx:
    Master-Key:
    Key-Arg   : None
    Krb5 Principal: None
    PSK identity: None
    PSK identity hint: None
    Start Time: 1413349915
    Timeout   : 7200 (sec)

<h2>    Verify return code: 0 (ok)</h2>


最近…

脆弱性の報告が頻発していますね…。引続き、注意していきたいと思います!

元記事はこちらです。
HAProxy で SSLv3 を無効にする方法