Share
Embed
システム全体の暗号化ポリシーをカスタマイズ
crypto-policiesの設定をカスタマイズする方法について簡単に紹介するスライドです
Kazuo Moriwaka
December 08, 2022
Transcript
26 slides
-
1 GENERAL Distribution システム全体の暗号化 ポリシーをカスタマイズ 2022 年 12 月 8
日 レッドハット株式会社 森若 和雄 -
2 GENERAL Distribution このスライドについて 対象 RHEL8.2 以降 or 9 でシステム全体の暗号化ポリシーを設定・変更したい人
目的 crypto-policies の基本的なカスタマイズ方法と、現状の制限を紹介する -
3 GENERAL Distribution 概要 • システム全体の暗号化ポリシー設定とは何か ? • crypto-policies の使い方
• crypto-policies のカスタマイズ • crypto-policies 利用時の注意点 • 参考資料 -
5 GENERAL Distribution 背景 RHEL で利用できる暗号化方式には複数の方式があります システムのセキュリティ要件により一部の方式は利用が制限されます システムが従うべきガイドラインやポリシーは業界や規格により様々です 一番弱い暗号化を利用している箇所が弱点になります 一部のサービスで強力な暗号化方式を利用して、別のサービスでは弱い暗号化方式
を利用している場合、一番弱い暗号化がそのシステムの弱点になります 多数のプログラムがそれぞれ暗号化の設定を扱うため、各プ ログラムで同等の設定を維持するには手間がかかります -
7 GENERAL Distribution crypto-policies 概要図 ポリシーから設定を生成 update-crypto-policies コマンド でプリセットの選択または生成 各ソフトウェアからデ
フォルト設定として参照 各ソフトウェアパッケージで設定 読み込みなど必要な対応を実施 ポリシー *.pol update-crypto-policies 各バックエンド用 設定 サブポリシー *.pmod 読込 生成 サブポリシー *.pmod bind httpd sshd openjdk kerberos curl -
9 GENERAL Distribution crypto-policies とは何か ? システム全体の暗号化ポリシー設定を行う GnuTLS, OpenSSL, NSS,
OpenJDK, libkrb5, BIND, OpenSSH, libreswan, libssh のデ フォルトをまとめて設定します。これらのライブラリやアプリケーションのパッ ケージと連携します。 あらかじめ定義されたプロファイルを提供 LEGACY, DEFAULT, FIPS, FUTURE の 4 種類のプロファイルを提供します。 プロファイルのカスタマイズ 設定によりプロファイルを新規に作成したり、既存のプロファイルをカスタマイズ します。 -
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. -
11 GENERAL Distribution ポリシーの選び方 特に何も問題がなければ DEFAULT のまま利用する DEFAULT ポリシーは現在一般的に推奨される設定です 古い機器との接続に問題がある場合や、特有の要件がある場
合にはポリシーをカスタマイズする SHA1 や TLS1.1 の許可や禁止など必要なカスタマイズを行えます 例外がある場合はアプリケーションを個別に設定する アプリケーション毎の個別の設定は crypto-policies のデフォルト設定より優先さ れます -
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 で変わったもの -
14 GENERAL Distribution ポリシーのカスタマイズ サブポリシー ( モジュール ) の利用 ポリシー名のあとにコロン区切りでサブポリシーを指
定します。複数のサブポリシーを指定できます。 例 : # update-crypto-policies --set DEFAULT:ECDHE-ONLY:SHA1 ポリシーの作成 RHEL 8.2 以降でポリシーの作成が可能 • カスタマイズ用のポリシーとサブポリシー /etc/crypto-policies/policies ポリシー *.pol update-crypto-policies 各バックエンド用 設定 サブポリシー *.pmod 読込 生成 サブポリシー *.pmod -
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 の利用を全て許可する例 -
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 ( 以下略 ) -
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 -
20 GENERAL Distribution crypto-policies の注意点 crypto-policies は全ての暗号化を網羅できていません 暗号化をあつかう全ての箇所を網羅はできていません。 gnupg2 や
Go 言語によるアプリ ケーションは暗号化を扱いますが crypto-policies で管理されていません。 アプリケーション個別での設定でオーバライドされます crypto-policies は各ライブラリやアプリケーションのデフォルト設定に影響しますが強制 力はありません。アプリケーションで明示的に設定が行われると、そちらが優先されます。 オーバライドしたい場合の手順は均一ではない sshd など一部のソフトウェアは単純に設定を行うだけでオーバライドできないものがあ ります。 RHEL9 ドキュメント「セキュリティーの強化」内「システム全体の暗号化ポリ シーに従わないようにアプリケーションを除外」を参照ください。 -
21 GENERAL Distribution まとめ • Red Hat Enterprise Linux でシステム全体の暗号化ポリシー
設定をまとめて設定が可能です • DEFAULT をベースにモジュールでカスタマイズします • 個別のアプリケーションでポリシーをオーバライドすること も可能です -
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 以降 ) -
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 以降 ) -
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