システム暗号化ポリシーの構成

Oracle Linux 8以降では、Oracle Linuxはシステム全体の暗号化ポリシーを設定する機能を提供します。多くのアプリケーションでは、通信の保護やデータの暗号化のために暗号化プロトコルを実装しています。以前は、アプリケーションではそれ固有の暗号化ポリシー構成が多様な方法でメンテナンスされていました。つまり、システム全体にわたる暗号化ポリシーの変更はアプリケーションごとに実行する必要があり、多くの場合、その構成方法はアプリケーションによって異なりました。

アプリケーションに取入れ可能なシステム全体暗号化ポリシーを定義できることで、多くの場合、管理のオーバーヘッドが減り、そのプロセスが簡略化されます。管理者は、システム全体暗号化ポリシーを構成でき、ほとんどのアプリケーションでデフォルトで同じポリシーを使用できます。

ポリシーにより、管理者は次を構成できます:

  • 受け入れられるTLS/SSL (およびDTLS)のバージョン
  • 受け入れられる暗号スイートおよび優先順序
  • 証明書とキー交換に使用できるパラメータ。次のものがあります。
    • 受け入れ可能なパラメータ最小サイズ(DH、ECDH、RSA、DSA、ECDSA)、
    • 受け入れ可能な楕円曲線(ECDH、ECDSA)、
    • 受け入れ可能な署名ハッシュ関数。
  • 安全再ネゴシエーションなどのその他のTLSオプション

Oracle Linuxでの主要な暗号化ソフトウェアのほとんどは、デフォルトで、システム全体暗号化ポリシーを使用するようにすでに構成されています。このように動作するように構成されたアプリケーションには、OpenSSL、GnuTLS、NSS、libkrb5ライブラリを使用するアプリケーションに加えて、OpenSSHやバインドなどの重要なアプリケーションが含まれます

システム全体ポリシーを構成しても、システム全体で動作が強制されるわけではありません。このポリシーは、様々なアプリケーションに共通の構成を提供します。システム全体ポリシーを使用するように設計されていないアプリケーションは、それで使用されている別のポリシー構成に従って機能し続けます。多くのアプリケーションには、必要に応じてシステム全体暗号化ポリシーをオーバーライドするオプションもあります。たとえば、OpenSSHには、サーバー・アプリケーションとクライアント・アプリケーションで異なる暗号化ポリシーを設定するオプションがあり、wgetcurlなどのコマンドには、--ciphersオプションを使用してカスタム暗号選択および順序を定義するオプションがあり、システム全体ポリシーを効率的にオーバーライドします。

システム全体ポリシーでは、セキュリティ要件にあわせて、システムの強化やセキュアでないプロトコルの削除を実行できるように、アプリケーション内のデフォルトの暗号化動作を定義します。

Oracle Linuxにはupdate-crypto-policiesコマンドが含まれており、これを使用すると、アプリケーションとサービスで使用するためにシステムで有効になっている暗号化アルゴリズム、暗号、およびプロトコルを構成できます。このコマンドを使用して、ポリシーを緩和することも、さらに強化することもできます。

このツールと影響を受けるアプリケーションの詳細は、crypto-policies(7)およびupdate-crypto-policies(8)の各マニュアル・ページを参照してください。

事前定義済ポリシーについて

Oracle Linuxには、次の4種類の事前定義済暗号化ポリシーが組み込まれています。
  • LEGACY: 特定のレガシー・プロトコルを構成してレガシー・システムとの互換性を最大限に高めます。これには、3DES、RC1、DSA、TLSv1.0およびTLSv1.1の有効化が含まれます。DHおよびRSAの場合は、最小パラメータ・サイズを1024ビットに設定することもできます。このポリシーで指定されたプロトコルおよび値は、非常にセキュアであるとは言えませんが、簡単に悪用することはできません。
  • DEFAULT: TLSv1.2とTLSv1.3、IKEv2とSSH2など、標準的な最新のプロトコルを構成します。DHおよびRSAの場合は、最小パラメータ・サイズを2048ビットに設定することもできます。
  • FIPS: 暗号化ポリシーのFIPS 140-3要件を満たすようにシステムを構成します。このポリシーは、Oracle LinuxシステムでFIPSモードを有効にするためのFIPS-mode-setupコマンドによって有効になります。このポリシーの使用の詳細は、『Oracle Linux 9: FIPSモードのインストールおよび構成』を参照してください。
  • FUTURE: SHA-1とCBCが無効になり、DHとRSAの場合に最小パラメータ・サイズを3072ビットに設定する、保守的なポリシー・レベル。このポリシーは、多数の古いシステムとの通信を無効にする可能性がありますが、アプリケーションが安全に機能し続けるには将来どのような措置を取る必要があるかを特定するために検討する価値があります。

これらのポリシーでの制限は、時間の経過とともに、新しいセキュアなデフォルト値の決定に伴い変更される可能性があります。

update-crypto-policiesツールを使用すると、現在のシステム・ポリシーの表示や、システムに適用するポリシーの変更ができます。

現在のシステム全体ポリシーの確認

すべてのユーザーは、次を実行することで、現在のシステム全体暗号化ポリシーを確認できます:

update-crypto-policies --show

システム全体ポリシーの設定

Oracle Linuxで暗号化ポリシー間を切り替えるには、ポリシーの名前を指定してupdate-crypto-policies --setコマンドを使用します。たとえば、LEGACYポリシーに切り替えるには、次を実行します。

sudo update-crypto-policies --set LEGACY

このポリシーはすぐに更新されます。また、システム全体暗号化ポリシーを使用できるすべてのアプリケーションは、実行または再起動されるとすぐに、その新しいポリシーと連携します。一部のアプリケーションがすでにカスタム・ポリシーを使用して実行されている可能性があるため、必ずすべてのアプリケーションで正しいポリシーが使用されるように、ポリシーの変更後にシステムをリブートすることをお薦めします。

DEFAULTポリシーに戻すには、次を実行します。

sudo update-crypto-policies --set DEFAULT

モジュールの使用によるポリシーの拡張

ポリシー・モジュールまたはサブポリシーを作成することで、システム全体ポリシーをカスタマイズできます。モジュールを作成することで、ポリシー全体をゼロから作成する必要なく、ポリシーを微調整できます。たとえば、DEFAULTシステム・ポリシー全体を書き換えるのではなく、DEFAULTシステム・ポリシーを使用し、すべてのアプリケーションでより弱いSHA-1ハッシュ機能を無効にする場合は、モジュールを付加してDEFAULTポリシーを設定することで、モジュールを適用できます。次に例を示します:

sudo update-crypto-policies --set DEFAULT:NO-SHA1

Oracle Linuxには、/usr/share/crypto-policies/policies/modules/ディレクトリにすでに構成済ですぐに使用できる追加のモジュールがいくつか用意されています。

/etc/crypto-policies/policies/modules/ディレクトリにカスタム・モジュールを作成できます。モジュールの名前は大文字にし、その拡張子は小文字の.pmodにする必要があります。たとえば、/etc/crypto-policies/policies/modules/NO-AES-128.pmodという名前のモジュールを作成して、このコンテンツをファイルに追加し、AES-128暗号全体を無効にできます:

# Disable the AES-128 cipher
cipher = -AES-128-*

暗号を無効にするには、先頭に-文字を付ける必要があります。機能を有効にするには、接頭辞なしで指定します。この例では、ルールがAES-128暗号のすべてのモードと一致するようにワイルドカードを指定するために*文字も使用されています。

また、システム全体暗号化ポリシーを設定するときに、モジュールを連結することもできます:

sudo update-crypto-policies --set DEFAULT:NO-SHA1:NO-AES-128

ポリシー定義ファイルの構文の詳細は、crypto-policies(7)のマニュアル・ページを参照してください。

新しいシステム全体暗号化ポリシーの作成

Oracle Linuxに用意されている事前定義済ポリシーを使用するかわりに、カスタム暗号化ポリシーをゼロから作成できます。ポリシーは、/etc/crypto-policies/policies/で定義できます。ポリシー・ファイル名は、大文字で、小文字の接尾辞.polで終わる必要があります。ポリシー・ファイルでは、INIファイル形式が使用され、標準のkey = valueエントリが含まれています。

Oracle Linuxに用意されている事前定義済ポリシーは、/usr/share/crypto-policies/policies/ディレクトリに格納されます。カスタム・ポリシーを定義するには、既存のポリシーをコピーし、必要に応じてそれを構成します。次に例を示します:

sudo cp /usr/share/crypto-policies/policies/DEFAULT.pol /etc/crypto-policies/policies/MYPOLICY.pol

ファイルの形式と構造の詳細は、crypto-policies(7)マニュアル・ページ内の"CRYPTO POLICY DEFINITON FORMAT"というセクションを参照してください。

カスタム・ポリシーの編集が終了したら、次のコマンドでそれを有効にします:

sudo update-crypto-policies --set MYPOLICY

カスタムのシステム全体ポリシーを有効にした後は、それをすべての実行中サービスに対して有効にするために、必ずシステムをリブートしてください。

ノート:

モジュールを使用して既存のポリシーを拡張することで実行が必要な処理を実現できるかどうかを検討してください。カスタムのシステム全体暗号化ポリシーをメンテナンスするには、新しいセキュリティ標準を常に監視して調査する必要があります。そのため、セキュリティ要件を満たすように事前定義済ポリシーを拡張することで、ポリシー全体を自分でメンテナンスする必要がなくなります。