Slide 1

Slide 1 text

1 GENERAL Distribution システム全体の暗号化 ポリシーをカスタマイズ 2022 年 12 月 8 日 レッドハット株式会社 森若 和雄

Slide 2

Slide 2 text

2 GENERAL Distribution このスライドについて 対象 RHEL8.2 以降 or 9 でシステム全体の暗号化ポリシーを設定・変更したい人 目的 crypto-policies の基本的なカスタマイズ方法と、現状の制限を紹介する

Slide 3

Slide 3 text

3 GENERAL Distribution 概要 ● システム全体の暗号化ポリシー設定とは何か ? ● crypto-policies の使い方 ● crypto-policies のカスタマイズ ● crypto-policies 利用時の注意点 ● 参考資料

Slide 4

Slide 4 text

4 GENERAL Distribution システム全体の暗号化 ポリシー設定とは何か ?

Slide 5

Slide 5 text

5 GENERAL Distribution 背景 RHEL で利用できる暗号化方式には複数の方式があります システムのセキュリティ要件により一部の方式は利用が制限されます システムが従うべきガイドラインやポリシーは業界や規格により様々です 一番弱い暗号化を利用している箇所が弱点になります 一部のサービスで強力な暗号化方式を利用して、別のサービスでは弱い暗号化方式 を利用している場合、一番弱い暗号化がそのシステムの弱点になります 多数のプログラムがそれぞれ暗号化の設定を扱うため、各プ ログラムで同等の設定を維持するには手間がかかります

Slide 6

Slide 6 text

6 GENERAL Distribution 暗号化ポリシーの設定 とは システム全体の暗号化スイートの設定を一箇所で行う 一部の脆弱な設定によりシステム全体が脆弱になる事故を防ぎます あらかじめ推奨される設定を提供 デフォルトで現在の標準的なサーバ用途で推奨される設定になります カスタムポリシーを設定する 要件にあわせて用意されているポリシーから一部を変更します

Slide 7

Slide 7 text

7 GENERAL Distribution crypto-policies 概要図 ポリシーから設定を生成 update-crypto-policies コマンド でプリセットの選択または生成 各ソフトウェアからデ フォルト設定として参照 各ソフトウェアパッケージで設定 読み込みなど必要な対応を実施 ポリシー *.pol update-crypto-policies 各バックエンド用 設定 サブポリシー *.pmod 読込 生成 サブポリシー *.pmod bind httpd sshd openjdk kerberos curl

Slide 8

Slide 8 text

8 GENERAL Distribution crypto-policies の使い方

Slide 9

Slide 9 text

9 GENERAL Distribution crypto-policies とは何か ? システム全体の暗号化ポリシー設定を行う GnuTLS, OpenSSL, NSS, OpenJDK, libkrb5, BIND, OpenSSH, libreswan, libssh のデ フォルトをまとめて設定します。これらのライブラリやアプリケーションのパッ ケージと連携します。 あらかじめ定義されたプロファイルを提供 LEGACY, DEFAULT, FIPS, FUTURE の 4 種類のプロファイルを提供します。 プロファイルのカスタマイズ 設定によりプロファイルを新規に作成したり、既存のプロファイルをカスタマイズ します。

Slide 10

Slide 10 text

10 GENERAL Distribution crypto-policies 関連コマンド 管理者が利用するコマンド ● update-crypto-policies 利用例 # update-crypto-policies --show DEFAULT # update-crypto-policies --set DEFAULT:ECDHE-ONLY Setting system policy to DEFAULT:ECDHE-ONLY Note: System-wide crypto policies are applied on application start-up. It is recommended to restart the system for the change of policies to fully take place.

Slide 11

Slide 11 text

11 GENERAL Distribution ポリシーの選び方 特に何も問題がなければ DEFAULT のまま利用する DEFAULT ポリシーは現在一般的に推奨される設定です 古い機器との接続に問題がある場合や、特有の要件がある場 合にはポリシーをカスタマイズする SHA1 や TLS1.1 の許可や禁止など必要なカスタマイズを行えます 例外がある場合はアプリケーションを個別に設定する アプリケーション毎の個別の設定は crypto-policies のデフォルト設定より優先さ れます

Slide 12

Slide 12 text

12 GENERAL Distribution LEGACY DEFAULT FIPS FUTURE IKEv1 no no no no 3DES no no no no RC4 no no no no DH min. 2048-bit min. 2048-bit min. 2048-bit min. 3072-bit RSA min. 2048-bit min. 2048-bit min. 2048-bit min. 3072-bit DSA no no no no TLS v1.0 no no no no TLS v1.1 no no no no デジタル署名と証明書内の SHA-1 yes no no no CBC モード暗号 yes no no no 対称暗号 < 256 ビット鍵 yes yes yes no 黄色は RHEL 8 から 9 で変わったもの

Slide 13

Slide 13 text

13 GENERAL Distribution crypto-policies の カスタマイズ

Slide 14

Slide 14 text

14 GENERAL Distribution ポリシーのカスタマイズ サブポリシー ( モジュール ) の利用 ポリシー名のあとにコロン区切りでサブポリシーを指 定します。複数のサブポリシーを指定できます。 例 : # update-crypto-policies --set DEFAULT:ECDHE-ONLY:SHA1 ポリシーの作成 RHEL 8.2 以降でポリシーの作成が可能 ● カスタマイズ用のポリシーとサブポリシー /etc/crypto-policies/policies ポリシー *.pol update-crypto-policies 各バックエンド用 設定 サブポリシー *.pmod 読込 生成 サブポリシー *.pmod

Slide 15

Slide 15 text

15 GENERAL Distribution RHEL9 に同梱されているサブポリシー AD-SUPPORT-LEGACY.pmod , AD-SUPPORT.pmod Active Directory との Kerberos 連携のため暗号化ポリシーを緩和する OSPP.pmod Common Criteria OSPP Profile むけに FIPS ポリシーを制限する ECDHE-ONLY.pmod 鍵交換に ECDHE を強制する例 NO-SHA1.pmod SHA1 の利用を全て禁止する例 SHA1.pmod SHA1 の利用を全て許可する例

Slide 16

Slide 16 text

16 GENERAL Distribution ポリシー定義 ポリシー /usr/share/crypto-policies/policies/*.pol /etc/crypto-policies/policies/*.pol ● key = value 形式で必要項目について許容する暗 号化スイートのリストや値を定義する ● key の一覧は man crypto-policies に記載 ポリシー作成時のコツ LEGACY.pol にサポートされる暗号化が列挙されて いるので、コピーしてから不要なものを削除すると 間違いにくい # DEFAULT.pol の例 mac = AEAD HMAC-SHA2-256 HMAC-SHA1 UMAC-128 HMAC-SHA2-38 HMAC-SHA2-512 group = X25519 X448 SECP256R1 SECP384R1 SECP521R1 \ FFDHE-2048 FFDHE-3072 FFDHE-4096 FFDHE-6144 FFDHE-8192 hash = SHA2-256 SHA2-384 SHA2-512 SHA3-256 SHA3-384 SHA3-512 SHA2-224 SHA3-224 \ SHAKE-256 sign = ECDSA-SHA3-256 ECDSA-SHA2-256 ECDSA-SHA2-256-FIDO \ ECDSA-SHA3-384 ECDSA-SHA2-384 \ ( 中略 ) ECDSA-SHA3-224 RSA-PSS-SHA3-224 RSA-SHA3-224 cipher = AES-256-GCM AES-256-CCM CHACHA20-POLY1305 \ ( 中略 ) protocol@TLS = TLS1.3 TLS1.2 DTLS1.2 protocol@IKE = IKEv2 # Parameter sizes min_dh_size = 2048 min_dsa_size = 2048 # DSA is disabled min_rsa_size = 2048 ( 以下略 )

Slide 17

Slide 17 text

17 GENERAL Distribution サブポリシー サブポリシー /usr/share/crypto-policies/policies/ modules/*.pmod /etc/crypto-policies/policies/modules/*.pmod ● key = value 形式で変更する箇所のみ記載する ● リストの変更 ● “ 値+” で先頭に追加 ● “ +値” で末尾に追加 ● “− 値” で値を削除 # SHA1.pmod の例 hash = SHA1+ sign = ECDSA-SHA1+ RSA-PSS-SHA1+ RSA-SHA1+ sha1_in_certs = 1

Slide 18

Slide 18 text

18 GENERAL Distribution 注意 /etc/crypto-policies/back-ends 以下の直接編集 update-crypto-policies コマンドを実行すると上書きされるため危険です update-crypto-policies --check でポリシーとバックエンド間の差分有無を確認で きます

Slide 19

Slide 19 text

19 GENERAL Distribution crypto-policies 利用時 の注意点

Slide 20

Slide 20 text

20 GENERAL Distribution crypto-policies の注意点 crypto-policies は全ての暗号化を網羅できていません 暗号化をあつかう全ての箇所を網羅はできていません。 gnupg2 や Go 言語によるアプリ ケーションは暗号化を扱いますが crypto-policies で管理されていません。 アプリケーション個別での設定でオーバライドされます crypto-policies は各ライブラリやアプリケーションのデフォルト設定に影響しますが強制 力はありません。アプリケーションで明示的に設定が行われると、そちらが優先されます。 オーバライドしたい場合の手順は均一ではない sshd など一部のソフトウェアは単純に設定を行うだけでオーバライドできないものがあ ります。 RHEL9 ドキュメント「セキュリティーの強化」内「システム全体の暗号化ポリ シーに従わないようにアプリケーションを除外」を参照ください。

Slide 21

Slide 21 text

21 GENERAL Distribution まとめ ● Red Hat Enterprise Linux でシステム全体の暗号化ポリシー 設定をまとめて設定が可能です ● DEFAULT をベースにモジュールでカスタマイズします ● 個別のアプリケーションでポリシーをオーバライドすること も可能です

Slide 22

Slide 22 text

22 GENERAL Distribution 参考資料

Slide 23

Slide 23 text

23 GENERAL Distribution 参考 : RHEL9 で利用できないアルゴリズムとプロトコル RHEL9 から排除された暗号スイートとプロトコル 以下はソースコードに含まれないか、ビルド時に無効にされています。 設定によらず利用できません。 ● DES (RHEL 7 以降 ) ● すべてのエクスポートグレードの暗号化スイート (RHEL 7 以降 ) ● 署名内の MD5 (RHEL 7 以降 ) ● SSLv2 (RHEL 7 以降 ) ● SSLv3 (RHEL 8 以降 ) ● すべての ECC 曲線 < 224 ビット (RHEL 6 以降 ) ● すべてのバイナリーフィールドの ECC 曲線 (RHEL 6 以降 )

Slide 24

Slide 24 text

24 GENERAL Distribution 参考 : RHEL9 でサポートされない アルゴリズムとプロトコル これらはカスタム暗号化ポリシーの適用、または個々のアプリケーションの明示的な設定に よってのみ有効にできます。有効にする設定はサポートされていないと見なされます。 ● バージョン 1.2 より古い TLS (RHEL 9 以降、 RHEL 8 では 1.0 未満 ) ● バージョン 1.2 より古い DTLS (RHEL 9 以降、 RHEL 8 では 1.0 未満 ) ● パラメーターが 2048 ビット未満の DH (RHEL 9 以降、 RHEL 8 では 1024 ビット未満 ) ● 鍵サイズ (2048 ビット 未満 ) の RSA (RHEL 9 以降、 RHEL 8 では 1024 ビット未満 ) ● DSA (RHEL 9 以降、 RHEL 8 では 1024 ビット未満 ) ● 3DES (RHEL 9 以降 ) ● RC4 (RHEL 9 以降 ) ● FFDHE-1024 (RHEL 9 以降 ) ● DHE-DSS (RHEL 9 以降 ) ● Camellia (RHEL 9 以降 ) ● ARIA ● IKEv1 (RHEL 8 以降 )

Slide 25

Slide 25 text

25 GENERAL Distribution 参考情報 ● 公式ドキュメント「セキュリティーの強化」内「システム全体の暗号化ポリ シーの使用」 http://bit.ly/3E9TCzb ● man page: crypto-policies(7), update-crypto-policies(8) ● fedora-crypto-policies プロジェクトのページ https://gitlab.com/redhat-crypto/fedora-crypto-policies

Slide 26

Slide 26 text

26 GENERAL Distribution Thank You