2014年4月15日火曜日

SSL暗号化設定 - 脆弱な暗号の削除

この記事は、セキュリティおよびネットワークの専門家向けに記述しています。
ある程度のセキュリティの専門知識が必要です。

PaperCut社によく届く質問として、PaperCutアプリケーション・サーバで使用されるSSL暗号化リストの管理方法があります。
この質問は、PCI-DSSの推奨事項などのようなポリシーへの準拠、BEAST SSLの脆弱性(CVE-2011-3389)などの潜在的な攻撃の軽減、
またはTLS通信のPerfect Forward Secrecy のサポートのようなセキュリティ・ポリシーの実装に関連して寄せられます。

デフォルトではPaperCutは可能な限り幅広いブラウザとオペレーティング・システムをサポートするために、様々なSSL暗号を許可するように設定されています。
クライアントがサーバに接続すると、クライアントとサーバは相互をサポートする最も安全な暗号を選択し通信します。
利用可能な暗号を減らすと、古いブラウザのサポートが制限されたり、
古いモデルの複合機からPaperCutサーバへ接続できなくなる可能性があるためご注意ください。
そのため、変更は徹底的にテストするようにしてください。
ほとんどの複合機はTLS v1.0以降のプロトコルをサポートしています。
しかし古いデバイスの場合、SSL3.0が必要になる可能性があります。
そのため、下記に記載する変更を行うとデバイスからのHTTPS接続がブロックされます。
さらに、これらの設定を構成するプロセスは、最新のバージョンで改善されました。
PaperCutのバージョンによる設定手順は下記を参照してください。


PaperCut Ver.18.2以降 - ベストプラクティスの暗号を構成し、脆弱な暗号を簡単に削除する方法

1. PaperCutプライマリ・サーバの次のフォルダを開き、メモ帳から「server.properties」を開いてください。
   [app-path]/server/server.properties

2. オプション「server.ssl.using-strong-defaults」を表示してください。

3. 先頭のコメント(#)を削除し、リストを編集してください。

4. 「server.ssl.using-strong-defaults=N」を「server.ssl.using-strong-defaults=Y」に変更してください。

5. server.propertiesを上書き保存して終了してください。

6. サービス「PaperCut Application Server」を再起動してください。

これにより、RC4や3DESなどのレガシー暗号が無効になり、デフォルトでDiffie Hellman キー・サイズが大きくなり、
より強力な楕円曲線ファミリが使用され、サーバに着信するすべてのTLS通信の無制限の暗号化ポリシー(AES-256など)が有効化されます。


PaperCut Ver.17.1以降 - SSL暗号順序設定を構成する方法

デフォルトでは、SSL暗号順序設定はクライアント暗号順序に設定されます。
しかしながら、SSL暗号順序設定をサーバ暗号順序に設定できます。
サーバ暗号順序を指定すると、クライアントからSSL接続で使用できる暗号の優先順位を制御することができます。

1. PaperCutプライマリ・サーバの次のフォルダを開き、メモ帳から「server.properties」を開いてください。
   [app-path]/server/server.properties

2. オプション「server.ssl.follow-client-cipher-order」を表示してください。

3. 先頭のコメント(#)を削除し、リストを編集してください。

4. 「server.ssl.follow-client-cipher-order=N」に変更してください。(暗号設定:サーバ)

5. server.propertiesを上書き保存して終了してください。

6. サービス「PaperCut Application Server」を再起動してください。


PaperCut Ver.16.2 (Build 37799) 以降 - 特定の暗号とプロトコルを無効にする方法

SSLプロトコルと暗号スイートは、アプリケーション・ディレクトリにある「server.properties」ファイルを編集することで簡単に構成できます。
暗号スイートとプロトコルの完全なリストは次のサイトを参照してください:
 http://docs.oracle.com/javase/8/docs/technotes/guides/security/SunProviders.html

1. PaperCutプライマリ・サーバの次のフォルダを開き、メモ帳から「server.properties」を開いてください。
   [app-path]/server/server.properties

2. オプション「#server.ssl.disabled-protocols」と「#server.ssl.disabled-cipher-suites」を表示してください。

3. 先頭のコメント(#)を削除し、リストを編集してください。

4. TLSプロトコルのみを許可し、RC4のサポートを無効にする場合、次のように編集してください。
   server.ssl.disabled-protocols=SSLv2Hello, SSLv3
   server.ssl.disabled-cipher-suites=SSL_RSA_WITH_RC4_128_MD5, SSL_RSA_WITH_RC4_128_SHA, TLS_ECDH_ECDSA_WITH_RC4_128_SHA,
                                                                 TLS_ECDH_RSA_WITH_RC4_128_SHA, TLS_ECDHE_ECDSA_WITH_RC4_128_SHA,
                                                                 TLS_ECDHE_RSA_WITH_RC4_128_SHA

5. server.propertiesを上書き保存して終了してください。

6. サービス「PaperCut Application Server」を再起動してください。

注記: 上記例では、不要なプロトコルのブラックリストが使用されていますが、代わりに次のオプションを使用してホワイトリストを指定することができます。
        「instead server.ssl.protocols」「server.ssl.cipher-suites」
         しかしながら、ほとんどの場合、ホワイトリストの代わりにブラックリストを使用することを推奨します。
         そうすることにより、server.propertiesを変更することなく、新しい暗号とプロトコルの互換性を確保することができます。


PaperCut Ver.14 以降

PaperCut Ver.14.0の時点で、基本となるランタイムをJava7にアップグレードしました。
これにより、暗号の使用を正確に制御するという目的を遂行しようとした場合の柔軟性を向上し、
Jetty Webサーバを設定することなくJVMにグローバル適用されるようになりました。
これは、インバウンド通信に適用されます。さらにJava7 はTLS1.2をサポートしています。
クライアント通信の場合、TLS1.2はデフォルトではJava7で有効化されていません。
(例: PaperCutから外部システムへのpayment gateway接続など)
Java8をサポートし、デフォルトでアクティブなクライアント接続のTLS1.2を提供する Ver.15.2 までは、
システム・プロパティを追加して手動で有効化する必要があります。
(Dhttps.protocols=TLSv1.1,TLSv1.2) Windows上の「service.conf」もしくはLinux/Mac上の起動スクリプトを参照してください。

Java7プラットフォームの場合、Java Runtime環境下のディレクトリ「[app-path]/[JRE]/lib/security directory」に配置されている
セキュリティ・ポリシー・ファイル「java.security」経由で暗号スイートを使用から除外できるように設計されています。
PaperCutのJava Runtimeは、システム固有の差異はありますが、[app-path]/runtime に配置されています。
例えば、64bit Windowsの場合は「[app-path]/runtime/win64/jre」、32bitWindowsの場合は「[app-path]/runtime/jre」です。

注記: カスタマイズした内容は、アップグレード後は保持されません。変更を再適用する必要があります。

ポリシー・ファイルからプロパティ「jdk.tls.disabledAlgorithms」を定義し、TLS暗号の選択を制御します。
SSL証明書から検出されたアルゴリズムを制御する補完的なプロパティ「jdk.certpath.disabledAlgorithms」もあります。

これらプロパティについてはOracle社のWebサイトに掲載されているドキュメントを参照してください。

[JSSE Reference Guide]
https://docs.oracle.com/javase/7/docs/technotes/guides/security/jsse/JSSERefGuide.html#DisabledAlgorithms

例: 次のより安全なポリシーのデフォルトを適用: jdk.tls.disabledAlgorithms=MD5, SHA1, DSA, RSA keySize < 2048
     (MD5, SHA1, DSAは許可しない。RSAはキー・サイズが2048bit長の場合にのみ許可する。)

このプロパティは、特定のニーズに合わせてサイト展開をさらに調整するためにカスタマイズすることができます。
例えば、開始点である「export」強度の暗号、およびDES/3DESとMD5ベースの暗号スイートを削除することができます。

許可された暗号のセキュリティを向上するために、SHA1とRC4を禁止することもできます。
しかしながら、Windows XPベースの一部のソフトウェアとの互換性を損なう可能性があります。
(例: Windows XP SP3まで、Windows XPはデフォルトでSHA2をサポートしていませんでした)

Java7で、デフォルトで有効になっているすべての暗号スイートは、デフォルトで次から確認できます:

[Default Cipher Suites in Java 7 ]  https://docs.oracle.com/javase/7/docs/technotes/guides/security/SunProviders.html
(デフォルトのSunJSSE 暗号プロバイダが明示的にオーバーライドされて使用されていない場合)

注記: AES-256暗号を選択した場合、Oracle Java ダウンロードページから
   「Unlimited Strength Jurisdiction Policy files(無制限強度権限ポリシーファイル」をダウンロードする必要があります:
     https://www.oracle.com/technetwork/java/javase/downloads/index.html


PaperCut Ver.14 より前のバージョン

弊社までお問合せください。




----------------------------------------------------
https://www.papercut.com/kb/Main/SSLCipherConfiguration

0 件のコメント :

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。