Logjam Attack 対策を行う

セキュリティ対策しなきゃ

Logjam 対策。Webサーバ (Apache) における対策を中心に書いています。
Apache 2.4.7 より前のバージョンで DHパラメータを設定してみた結果に関しても記しています。

はじめに

SSL/TLS 関連でまた脆弱性が発見されました。

The Logjam Attack と名付けられたこの脆弱性ですが、

Diffie-Hellman 鍵交換 における脆弱性で、TLS接続を輸出グレードの512ビット暗号にしてしまえるとの事。
暗号強度が下がる事で盗聴等のセキュリティリスクにさらされます。

DHE_EXPORT chiper をサポートしたサーバ、及び、Webブラウザに影響があり、トップ100万ドメインの8.4%にこの脆弱性があるとの事。

参考 : The Logjam Attack 

状況確認、及び、必要に応じて対策を行いましょう。

The attack affects any server that supports DHE_EXPORT ciphers, and affects all modern web browsers. 8.4% of the Top 1 Million domains were initially vulnerable.

環境

環境は以下を想定しています。
Guide to Deploying Diffie-Hellman for TLS には他サーバ ( メールサーバ等含む) での対策方法に関しても記載されています。

OS Linux (Amazon Linux)
Webサーバ Apache 2.2.29
OpenSSL OpenSSL 1.0.1k

対策(サーバ側)

状況把握、及び、対策します。

Webサーバ確認

The Logjam Attack に、 Logjam Server Test のリンクがあります。
ここでサーバの脆弱性テストが行えます。

  1. Guide to Deploying Diffie-Hellman for TLS の Test A Server 欄にチェックしたい サーバのURLを入力し、[ Go ] ボタンをクリックします。
  2. Insecure DHE_EXPORTNo になっていない ( Supported! の ) 場合、Logjam 脆弱性の影響を受ける事になります。
    No の場合でも、DHE が 2048 ビット未満の場合には警告表示がなされるようです。
    この場合、同ページ下に対策 ( 後述 ) が記されるので、サーバの要件等に従って対策を行うか検討しましょう。

以下に弊社サイトをチェックした際のスクリーンショットも添付します。

Logjam Server Test

※DHE_EXPORTが有効な場合 "Yes" ではなく "Supported!" と表示されるようです。

対策

上記 Server Test ページにおいても対策が記されていますが、以下日本語でも書いておきます。

プロトコル、暗号スイート設定

SSL設定を変更します。yum で apache (httpd)、及び、openssl をインストールした場合、/etc/httpd/conf.d/ssh.conf が設定ファイルになっているので、

# vi /etc/httpd/conf.d/ssl.conf

以下内容 (抜粋) で編集します。ポイントは以下

  • sslv2, sslv3は利用しない
  • SSLCipherSuite 設定で EXPORTを許可しない
    !EXPORT を設定に含める。
  • CipherSuite の優先度設定を行う。
    SSLHonorCipherOrder on
SSLProtocol             all -SSLv2 -SSLv3

SSLCipherSuite          ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA

SSLHonorCipherOrder     on

この設定は今回の logjam に関わらず、現在のSSL/TLSの推奨設定を行っていれば、変更する必要はないと思われます。( 参考:Webサーバの SSL/TLS 設定 (2015/5) )。

※既に FREAK 対策 を実施していれば、EXPORT 設定は無効になっているのではないかと思われます。


DHパラメータ設定

DHグループが2048ビットに満たない場合、警告表示がなされました。この問題を解消する場合、以下のようにします。

新規に Diffie-Hellman グループを作成します。
OpenSSLを利用している場合以下を実行します。
( 2048ビット ( 以上 ) のグループを作成する )

# openssl dhparam -out dhparams.pem 2048

上で作成したDHパラメータの設定を行います。
Server Test ページには Apache (>= 2.4.7) の場合には以下で設定できる旨記載があります。

SSLOpenSSLConfCmd DHParameters "{path to dhparams.pem}"

が、今回の環境ではこの設定は使えないため、以下手順を実施してみました。


SSLCertificateFile に DHパラメータを追記する事で、 カスタムDHパラメータを設定できるとの事。

参考:SSL/TLS Strong Encryption: FAQ

To generate custom DH parameters, use the openssl dhparam command. Alternatively, you can append the following standard 1024-bit DH parameters from RFC 2409, section 6.2 to the respective SSLCertificateFile file:


  1. 既存の SSLCertificateFile をバックアップします。
    ( Apache ( SSL ) 設定ファイル中で SSLCertificateFile 設定を確認 )
  2. 以下を実行し、先に作成したDHパラメータを SSLCertificateFile に追記します。
    # cat dhparams.pemファイルのパス >> SSLCertificateFileのパス
    

    実行後、SSLCertificateFile 末尾に 以下のような DHパラメータが追記されている事を確認しましょう。

    -----BEGIN DH PARAMETERS-----
    ( 中略 )
    -----END DH PARAMETERS-----
    
  3. Apacheを再起動します。

この対応で警告表示が消えると思い、上記 Server Test ページにて再確認したのですが、DHE の警告は消えませんでした。

色々調べてみると、2.4.7 より前のApache では DHパラメータは 1024 ビットで固定らしい。

参考 : Security/Server Side TLS - MozillaWiki

Apache supports OCSP Stapling, but only in httpd 2.3.3 and later.

Before Apache 2.4.7, the DH parameter is always set to 1024 bits and is not user configurable. This has been fixed in mod_ssl 2.4.7 that Red Hat has backported into their RHEL 6 Apache 2.2 distribution with httpd-2.2.15-32.el6. Future versions of Apache will automatically select a better value for the DH parameter.

という事で、Apache で DHパラメータを2048ビット ( 以上 ) にする場合には、バージョンの制限があるようなので、DHパラメータ設定対応を行うかどうかは、この点も考慮して決めましょう。

対策(クライアント側)

クライアント(Webブラウザ) が logjam attack 脆弱性の影響を受ける場合、The Logjam Attack にアクセスした際に、以下のような警告が表示されます。

logjam client test

クライアントに関しては各開発元から logjam 脆弱性に対応したバージョンがリリースされると思われるので、これに従いましょう。

IEに関しては、MSのパッチが適用されていれば、既に脆弱性はない状態になっている模様

Firefox に関しては、Firefox で Logjam Attack 対策する ( 2015/6/4 追加 ) に書いた方法でも対策可能です。
Google Chrome に関しては、Chrome で Logjam Attack 対策する ( 2015/6/16 追加 ) に書いた方法で対策可能なようです。

まとめ

先日 Webサーバの SSL/TLS 設定 (2015/5) という記事を書いたばかりだったのですが、ここにも書いた IPA が推奨設定として示している SSL/TLS 設定を施してあれば、今回の logjam 脆弱性は回避できていると思われます。
( DHEの2048ビットに関しては警告がでる場合はあるが )

脆弱性の対応ついでに、SSL/TLS暗号設定ガイドライン~安全なウェブサイトのために(暗号設定対策編)~ を参考に、設定内容や、証明書作成のプロセスを見直してみるのもいいかもしれません。