SSL 3.0に花束を

Googleが公表したPOODLE : exploiting the SSL 3.0 fallback。安全の代名詞のように使われている"SSL"で使用されるCBC暗号アルゴリズムに欠陥があり、暗号化トラフィックの一部(Cookie等)を解読される恐れがあるそうな。

「SSL2.0/3.0での接続を禁止する」にチェック

秀丸メールのアカウント設定より

SSL 3.0って何となく新しいような印象があるのだが、18年前に規定された比較的古いプロトコルだったんだねぇ。

対処のポイントはSSL 2.0/3.0ではなくTLS接続にすれば良いという事だが、接続相手がTLS非対応だった場合にSSLにダウングレードしないよう担保する為に**「SSL 2.0/3.0は使用禁止」**とするのが肝要だ。

手元の環境でもアウトソース先のメールサーバに突然繋がらなくなって慌てたが、秀丸メールの設定で「SSL2.0/3.0での接続を禁止する」にチェックを入れる事で無事解決。

「TwitterやFacebookがSSL 3.0を素早く無効化したためAPIを使ってたアプリが全滅した」という話もあるので、思わぬところで波紋が拡がる可能性もある。

OpenSSL Security Advisory [15 Oct 2014]では1.0.1j、1.0.0o、0.9.8zcが出たので、アプリも続々と更新中。Google Chromeは特に意識しなくても最新版にアップデートされているはずだが、Firefoxは11月25日にリリース予定の「Firefox 34」まで待たなくてはならない模様。WinSCPも5.5.6で対応したので忘れずに。

最後に、サーバの設定を変更してSSL 3.0と決別する手順を記しておく。

まずはapacheの設定ファイル/etc/apache2/mods-available/ssl.conf

yano@vps:~$ diff -bc /etc/apache2/mods-available/ssl.conf.orig /etc/apache2/mods-available/ssl.conf
*** /etc/apache2/mods-available/ssl.conf.orig   2014-01-07 22:24:23.000000000 +0900
--- /etc/apache2/mods-available/ssl.conf        2014-10-21 10:34:18.754666623 +0900
***************
*** 74,80 ****
        #   The protocols to enable.
        #   Available values: all, SSLv3, TLSv1, TLSv1.1, TLSv1.2
        #   SSL v2  is no longer supported
!       SSLProtocol all
        #   Allow insecure renegotiation with clients which do not yet support the
        #   secure renegotiation protocol. Default: Off
--- 74,81 ----
        #   The protocols to enable.
        #   Available values: all, SSLv3, TLSv1, TLSv1.1, TLSv1.2
        #   SSL v2  is no longer supported
!       # SSLProtocol all
!       SSLProtocol -all +TLSv1 +TLSv1.1 +TLSv1.2
        #   Allow insecure renegotiation with clients which do not yet support the
        #   secure renegotiation protocol. Default: Off
yano@vps:~$ sudo service apache2 reload

続いてpostfixの設定ファイル/etc/postfix/main.cf

yano@vps:~$ diff -bc /etc/postfix/main.cf.orig /etc/postfix/main.cf
*** /etc/postfix/main.cf.orig   2014-09-02 14:45:14.264718652 +0900
--- /etc/postfix/main.cf        2014-10-22 23:25:11.444486071 +0900
***************
*** 77,83 ****
  home_mailbox = Maildir/
  smtp_use_tls = yes
  smtpd_tls_received_header = yes
! smtpd_tls_mandatory_protocols = SSLv3, TLSv1
  smtpd_tls_mandatory_ciphers = medium
  #smtpd_tls_auth_only = yes
  smtpd_tls_auth_only = no
--- 77,84 ----
  home_mailbox = Maildir/
  smtp_use_tls = yes
  smtpd_tls_received_header = yes
! # smtpd_tls_mandatory_protocols = SSLv3, TLSv1
! smtpd_tls_mandatory_protocols = TLSv1
  smtpd_tls_mandatory_ciphers = medium
  #smtpd_tls_auth_only = yes
  smtpd_tls_auth_only = no
yano@vps:~$ sudo service postfix restart

最後にdovecotの設定ファイル/etc/dovecot/conf.d/10-ssl.conf

yano@vps:~$ diff -bc /etc/dovecot/conf.d/10-ssl.conf.orig /etc/dovecot/conf.d/10-ssl.conf
*** /etc/dovecot/conf.d/10-ssl.conf.orig  2014-06-09 13:11:59.444922703 +0900
--- /etc/dovecot/conf.d/10-ssl.conf       2014-10-22 23:34:43.128066688 +0900
***************
*** 49,54 ****
--- 49,55 ----
  # SSL protocols to use
  #ssl_protocols = !SSLv2
+ ssl_protocols = !SSLv2 !SSLv3
  # SSL ciphers to use
  #ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL
yano@vps:~$ sudo doveadm reload

何となく最後の**“ssl_cipher_list”にも!SSLv3を入れたくなるところが、“cipher”はOpenSSLで扱う暗号化アルゴリズム(AES128-SHAやDHE-DSS-AES256-SHAなど)のセットを表すもの。暗号化アルゴリズムについてSSLv3とTLSv1の仕様は完全に同一になっている事から、SSLv3の暗号化アルゴリズムを除外すると言う事はTLSv1の暗号化もNGという事になるので、ここにも!SSLv3を入れてしまうと誰も接続できなくなるので、“ssl_cipher_list”**は触らないのが正解。

参照

Google Online Security Blog http://googleonlinesecurity.blogspot.jp/

Symantec Connect http://www.symantec.com/connect/

マイクロソフト TechNet オンライン http://technet.microsoft.com/ja-jp/

INTERNET Watch http://internet.watch.impress.co.jp/

CIO Magazine http://itpro.nikkeibp.co.jp/ciomagazine/

マイナビニュース http://news.mynavi.jp/

あすのかぜ http://d.hatena.ne.jp/ASnoKaze/

徒然メモ http://www.nullpop.net/

自堕落な技術者の日記 http://blog.livedoor.jp/k_urushima/

IPA 独立行政法人 情報処理推進機構 https://www.ipa.go.jp/

Common Vulnerabilities and Exposures (CVE) https://cve.mitre.org/

Wikipedia http://ja.wikipedia.org/wiki/