Apache (httpd) の「logjam」脆弱性を修正する方法

Apache (httpd) の「logjam」脆弱性を修正する方法

最近、Diffie-Hellmanの新しい脆弱性(非公式には「logjam」と呼ばれる)が公開されました。このページ脆弱性に対抗する方法を提案する資料がまとめられています。

TLS に Diffie-Hellman を正しく導入するための推奨事項が 3 つあります。

  1. 暗号スイートのエクスポートを無効にします。最新のブラウザはエクスポート スイートをサポートしていませんが、FREAK 攻撃と Logjam 攻撃により、中間者攻撃者がブラウザを騙してエクスポート グレードの暗号化を使用させ、その後 TLS 接続を復号化することができます。エクスポート暗号は、強力な暗号化プロトコルが米国から輸出されることを禁止した 1990 年代のポリシーの名残です。最新のクライアントはエクスポート スイートに依存しておらず、無効にしてもデメリットはほとんどありません。
  2. (一時的な) Elliptic-Curve Diffie-Hellman (ECDHE) をデプロイします。楕円曲線ディフィー・ヘルマン (ECDH) 鍵交換は、既知のすべての実行可能な暗号解読攻撃を回避し、現代の Web ブラウザでは、オリジナルの有限体ディフィー・ヘルマンよりも ECDHE が好まれるようになりました。標準のディフィー・ヘルマン グループを攻撃するために使用した離散対数アルゴリズムは、事前計算による利点がそれほど大きくなく、個々のサーバーが固有の楕円曲線を生成する必要がありません。
  3. 強力でユニークな Diffie Hellman グループを生成する数百万のサーバーで少数の固定グループが使用されているため、事前計算や潜在的な盗聴の最適なターゲットとなります。管理者は、各 Web サイトまたはサーバーに対して「安全な」素数を使用して、一意の 2048 ビット以上の Diffie-Hellman グループを生成する必要があります。

上記の推奨事項に従ってサーバーを保護するために実行する必要があるベストプラクティスの手順は何ですか?

答え1

からリンクした記事この脆弱性から身を守るために推奨される手順が 3 つあります。原則として、これらの手順は SSL/TLS で使用するあらゆるソフトウェアに適用されますが、ここでは問題のソフトウェアである Apache (httpd) に適用する具体的な手順について説明します。

  1. 暗号スイートのエクスポートを無効にする

以下の 2. で行う設定変更で対処します (行!EXPORTの終わり近くに、SSLCipherSuiteエクスポート暗号スイートを無効にする方法があります)

  1. (一時的)楕円曲線 Diffie-Hellman(ECDHE)をデプロイする

このためには、Apache 構成ファイル内のいくつかの設定、具体的には、、SSLProtocolを編集して「ベストプラクティス」の設定にする必要があります。次のようなもので十分です。SSLCipherSuiteSSLHonorCipherOrder

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

注: どの設定を使用するかについてはSSLCipherSuite、常に変更されるため、次のようなリソースを参照することをお勧めします。これです最新の推奨構成を確認します。

3. 強力でユニークなDiffie Hellmanグループを生成する

そうするには、

openssl dhparam -out dhparams.pem 2048

パラメータが生成されている間、サーバーに大きな負荷がかかることに注意してください。別のマシンでパラメータを生成し、scpまたは同様のものを使用して、問題のサーバーに転送して使用することで、この潜在的な問題をいつでも回避できます。

dhparamsApacheで新しく生成されたものを使用するには、Apache ドキュメント:

カスタムDHパラメータを生成するには、openssl dhparamコマンドを使用します。または、以下を追加RFC 2409 セクション 6.2 の標準 1024 ビット DH パラメータそれぞれのSSLCertificateFileファイルに:

(強調は筆者による)

その後に標準の 1024 ビット DH パラメータが続きます。このことから、カスタム生成された DH パラメータは、単にSSLCertificateFile問題の関連するパラメータに追加される可能性があることがわかります。

これを行うには、次のようなものを実行します。

cat /path/to/custom/dhparam >> /path/to/sslcertfile

あるいは、Apache サブセクション最初にリンクした記事の場合、証明書ファイル自体を変更したくない場合は、作成したカスタム dhparams ファイルを指定することもできます。

SSLOpenSSLConfCmd DHParameters "/path/to/dhparams.pem"

特定の SSL/TLS 実装に関連する Apache 構成 (通常は またはconf.d/ssl.confですがconf.d/vhosts.conf、Apache の構成方法によって異なります) に入力します。

注目すべきは、このリンク

Apache 2.4.7 より前では、DH パラメータは常に 1024 ビットに設定されており、ユーザーが設定することはできません。これは、Red Hat が httpd-2.2.15-32.el6 とともに RHEL 6 Apache 2.2 ディストリビューションにバックポートした mod_ssl 2.4.7 で修正されました。

Debian Wheezyではapache2を2.2.22-13+deb7u4以降にアップグレードし、opensslを1.0.1e-2+deb7u17にアップグレードしてください。上記のSSLCipherSuiteは完全には機能しません。代わりに、次のように使用してください。このブログ:

SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384: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-DSS-AES128-SHA256:DHE-DSS-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384: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:!DHE-RSA-AES128-GCM-SHA256:!DHE-RSA-AES256-GCM-SHA384:!DHE-RSA-AES128-SHA256:!DHE-RSA-AES256-SHA:!DHE-RSA-AES128-SHA:!DHE-RSA-AES256-SHA256:!DHE-RSA-CAMELLIA128-SHA:!DHE-RSA-CAMELLIA256-SHA

ディストリビューションに応じて、Apache のバージョンがこれらのバージョン番号より新しいかどうかを確認する必要があります。新しいバージョンでない場合は、可能な限り更新してください。

上記の手順を実行して設定を更新し、Apacheサービスを再起動して変更を適用したら、テストを実行して設定が期待どおりであることを確認する必要があります。SSLラボそして記事この特定の脆弱性に関連しています。

答え2

Winni Neessen のパッチに基づいて、Apache/2.2.22 (Debian Wheezy、Ubuntu でも使用できる可能性があります) 用の修正を公開しました。https://flo.sh/debian-wheezy-apache2-logjam-fix/- フィードバックありがとうございます。

答え3

上記の「ハック」の複雑なルートを進む代わりに、nginxへの切り替えメインの Web サーバー ソフトウェアとして使用します (キャッシュやプロキシだけでなく)。セキュリティの面では、古い Apache エンジンよりも現在の標準に準拠しているようです。nginx リポジトリを使用すると、Apache よりもはるかに最新の安定した Web サーバー エンジンが提供されます。

完全に切り替えました。TLS に関する時間のかかる問題解決が大幅に省かれ、私たちの構成では、同時に大量の RAM も解放されました。実際、慣れ親しんできた httpd/apache の無数の複雑な構成に比べると、nginx の使用は驚くほどシンプルで分かりやすいと感じました。好みの問題かもしれませんが、切り替える前から httpd/apache の書き換え/構成/メンテナンスにかなり精通していたので、心配していたよりも簡単でした。オンラインで nginx 構成に関する適切な最新情報を入手でき、ユーザーベースは大きく、非常にアクティブで、サポートも親切です。 https://news.netcraft.com/wp-content/uploads/2018/11/wpid-wss-top-1m-share.png

関連情報