Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

4.13. TLS 設定の強化

TLS (トランスポート層セキュリティー) は、ネットワーク通信のセキュリティー保護に使用する暗号化プロトコルです。優先する 鍵交換プロトコル認証方法、および暗号化アルゴリズムを設定してシステムのセキュリティー設定を強化する際には、対応するクライアントの範囲が広ければ広いほど、セキュリティーのレベルが低くなることを認識しておく必要があります。反対に、セキュリティー設定を厳密にすると、クライアントとの互換性が制限され、システムからロックアウトされるユーザーが出てくる可能性もあります。可能な限り厳密な設定を目指し、互換性に必要な場合に限り、設定を緩めるようにしてください。
Red Hat Enterprise Linux 7 に含まれるライブラリーが提供するデフォルト設定は、ほとんどのデプロイメントで十分に安全である点に留意してください。TLS 実装は、可能な場合は、安全なアルゴリズムを使用する一方で、レガシーなクライアントまたはサーバーとの間の接続は妨げません。セキュリティーが保護されたアルゴリズムまたはプロトコルに対応しないレガシーなクライアントまたはサーバーの接続が期待できないまたは許可されない場合に、厳密なセキュリティー要件の環境で、このセクションで説明されている強化された設定を適用します。

4.13.1. 有効にするアルゴリズムの選択

選択して設定する必要のあるコンポーネントがいくつかあります。以下の各項目は、結果として得られる設定の堅牢性 (および結果的にはクライアントでのサポートレベル)、またはソリューションがシステムに与える計算上の要求に直接影響します。

プロトコルのバージョン

最新バージョンの TLS は、最高のセキュリティーメカニズムを提供します。古いバージョンの TLS (または SSL も) のサポートを含めるやむを得ない理由がない限り、システムが最新バージョンの TLS のみを使用して接続をネゴシエートできるようにします。
SSL のバージョン 2 または 3 を使用した処理を許可しないでください。これらのバージョンは両方とも、深刻なセキュリティーの脆弱性があります。TLS バージョン 1.0 以上を使用したネゴシエーションのみを許可します。TLS の現在のバージョンである 1.2 が常に優先される必要があります。
注記
現在、TLS のすべてのバージョンのセキュリティーは、TLS エクステンション、特定の暗号 (以下を参照)、およびその他の回避策の使用に依存していることに注意してください。すべての TLS 接続ピアは、安全な再ネゴシエーション表示 (RFC 5746) を実装する必要があり、圧縮をサポートしてはならず、 CBC モード暗号に対するタイミング攻撃 (Lucky Thirteen 攻撃) の緩和策を実装する必要があります。TLS 1.0 クライアントは、レコード分割を追加で実装する必要があります (BEAST 攻撃に対する回避策)。TLS 1.2 は、既知の問題がない AES-GCMAES-CCM、または Camellia-GCM などの Authenticated Encryption with Associated Data (AEAD) モードの暗号をサポートします。ここで述べた緩和策はすべて、Red Hat Enterprise Linux に含まれる暗号ライブラリーに実装されています。
プロトコルのバージョンと推奨される使用方法の概要については、表4.6「プロトコルのバージョン」 を参照してください。

表4.6 プロトコルのバージョン

プロトコルのバージョン推奨される使用方法
SSL v2
使用しないでください。深刻なセキュリティー上の脆弱性があります。
SSL v3
使用しないでください。深刻なセキュリティー上の脆弱性があります。
TLS 1.0
必要に応じて相互運用性の目的で使用します。相互運用性を保証する方法で緩和できない既知の問題があるため、緩和策はデフォルトで有効になっていません。最新の暗号スイートには対応しません。
TLS 1.1
必要に応じて相互運用性の目的で使用します。既知の問題はありませんが、Red Hat Enterprise Linux のすべての TLS 実装に含まれているプロトコル修正に依存しています。最新の暗号スイートには対応しません。
TLS 1.2
推奨されるバージョン。最新の AEAD 暗号スイートに対応します。
Red Hat Enterprise Linux の一部のコンポーネントは、TLS 1.1 または 1.2 のサポートを提供していても、TLS 1.0 を使用するように設定されています。これは、最新バージョンの TLS をサポートしていない可能性のある外部サービスとの最高レベルの相互運用性を実現しようとする試みによって動機付けられています。相互運用性の要件に応じて、利用可能な最も高いバージョンの TLS を有効にしてください。
重要
SSL v3 の使用は推奨されません。しかし、SSL v3が安全ではなく、一般的な使用には適していないと考えられているにもかかわらず、どうしても有効にしておきたい場合は、暗号化をサポートしていないサービスや、古い安全ではない暗号化モードしか使用できないサービスを使用している場合でも、stunnelを使用して通信を安全に暗号化する方法については、「stunnel の使用」を参照してください。

暗号化スイート

旧式で、安全ではない 暗号化スイート ではなく、最近の、より安全なものを使用してください。暗号化スイートの eNULL および aNULL は、暗号化や認証を提供しないため、常に無効にしてください。RC4HMAC-MD5 をベースとした暗号化スイートには深刻な欠陥があるため、可能な場合はこれも無効にしてください。いわゆるエクスポート暗号化スイートも同様です。エクスポート暗号化スイートは意図的に弱くなっているため、侵入が容易になっています。
128 ビット未満のセキュリティーしか提供しない暗号化スイートでは直ちにセキュリティーが保護されなくなるというわけではありませんが、使用できる期間が短いため考慮すべきではありません。アルゴリズムが 128 ビット以上のセキュリティーを使用している場合は、少なくとも数年間は解読不可能であることが期待されているため、強く推奨されます。3DES 暗号は 168 ビットを使用していると言われていますが、実際に提供されているのは 112 ビットのセキュリティーであることに注意してください。
サーバーの鍵が危険にさらされた場合でも、暗号化したデータの機密性を保証する (完全な) 前方秘匿性 (PFS) に対応する暗号スイートを常に優先します。ここでは、速い RSA 鍵交換は除外されますが、ECDHE および DHE は使用できます。この 2 つを比べると、ECDHE の方が速いため推奨されます。
AES-GCM などの AEAD 暗号は、パディングオラクル攻撃の影響は受けないため、CBC モード暗号よりも推奨されます。さらに、多くの場合、特にハードウェアに AES 用の暗号化アクセラレーターがある場合、AES-GCMCBC モードの AES よりも高速です。
ECDSA 証明書で ECDHE 鍵交換を使用すると、トランザクションは純粋な RSA 鍵交換よりもさらに高速になります。レガシークライアントに対応するため、サーバーには証明書と鍵のペアを 2 つ (新しいクライアント用の ECDSA 鍵と、レガシー用の RSA 鍵) インストールできます。

公開鍵の長さ

RSA 鍵を使用する際は、SHA-256 以上で署名され、鍵の長さが 3072 ビット以上のものが常に推奨されます (これは、実際に 128 ビットであるセキュリティーに対して十分な大きさです)。
警告
システムのセキュリティー強度は、チェーンの中の最も弱いリンクが示すものと同じになることを覚えておいてください。たとえば、強力な暗号化だけではすぐれたセキュリティーは保証されません。鍵と証明書も同様に重要で、認証機関 (CA) が鍵の署名に使用するハッシュ機能と鍵もまた重要になります。