8.6. セキュリティー
OpenSSL
は、PKCS #11 トークンが、生の RSA 署名または RSA-PSS 署名の作成に対応しているかどうかを検出しません。
TLS 1.3 プロトコルには、RSA-PSS 署名のサポートが必要です。PKCS#11 トークンが生の RSA または RSA-PSS 署名をサポートしていない場合、キーが PKCS#11
トークンによって保持されていると、OpenSSL
ライブラリーを使用するサーバーアプリケーションは RSA
キーを処理できません。これにより、上記のシナリオで TLS 通信に失敗します。
この問題を回避するには、利用可能な最高の TLS プロトコルバージョンとして TLS バージョン 1.2 を使用するようにサーバーとクライアントを設定します。
(BZ#1681178)
OpenSSL
が、生の RSA または RSA-PSS の署名に対応していない PKCS #11 トークンを誤って処理する
OpenSSL
ライブラリーは、PKCS #11 トークンの鍵関連の機能を検出しません。したがって、生の RSA または RSA-PSS の署名に対応しないトークンで署名が作成されると、TLS 接続の確立に失敗します。
この問題を回避するには、/etc/pki/tls/openssl.cnf
ファイルの crypto_policy
セクションの末尾にある .include
行の後に、以下の行を追加します。
SignatureAlgorithms = RSA+SHA256:RSA+SHA512:RSA+SHA384:ECDSA+SHA256:ECDSA+SHA512:ECDSA+SHA384 MaxProtocol = TLSv1.2
これにより、このシナリオで TLS 接続を確立できます。
(BZ#1685470)
FIPS で承認されていない暗号化は、FIPS モードの OpenSSL で機能します
FIPS で承認されていない暗号化は、システム設定に関係なく、OpenSSL ツールキットで機能します。したがって、システムが FIPS モードで実行されているときに無効にする必要がある暗号化アルゴリズムと暗号を使用できます。たとえば、次のようになります。
- RSA 鍵交換を使用する TLS 暗号スイートが機能します。
- 公開鍵の暗号化と復号化のための RSA ベースのアルゴリズムは、PKCS#1 と SSLv23 のパディングを使用したり、2048 ビットより短い鍵を使用したりしても機能します。
OpenSSL が FIPS モードでエンジンを使用できない
エンジン API は OpenSSL 3.0 で非推奨となり、OpenSSL Federal Information Processing Standards (FIPS) 実装およびその他の FIPS 互換実装と互換性がありません。そのため、OpenSSL は FIPS モードでエンジンを実行できません。この問題に対する回避策はありません。
PSK 暗号スイートは FUTURE
暗号ポリシーでは機能しません
事前共有キー (PSK) 暗号スイートは、完全転送秘密 (PFS) キー交換方式を実行しているとは認識されません。結果として、ECDHE-PSK
および DHE-PSK
暗号スイートは、SECLEVEL=3
に設定された OpenSSL、たとえば FUTURE
暗号化ポリシーでは機能しません。回避策として、PSK 暗号スイートを使用するアプリケーションに対して、制限の少ない暗号化ポリシーを設定するか、セキュリティーレベル (SECLEVEL
) を低く設定することができます。
GnuPG は、crypto-policies
によって許可されていない場合でも、SHA-1 署名の使用を誤って許可します
GNU Privacy Guard (GnuPG) 暗号化ソフトウェアは、システム全体の暗号化ポリシーで定義されている設定に関係なく、SHA-1 アルゴリズムを使用する署名を作成および検証できます。したがって、DEFAULT
の暗号化ポリシーで暗号化の目的で SHA-1 を使用できます。これは、署名に対するこのセキュアではないアルゴリズムのシステム全体での非推奨とは一致しません。
この問題を回避するには、SHA-1 を含む GnuPG オプションを使用しないでください。これにより、セキュアでない SHA-1 署名を使用して GnuPG がデフォルトのシステムセキュリティーを下げるのを防ぎます。
一部の OpenSSH 操作では FIPS で承認されるインターフェイスが使用されていない
OpenSSH で使用される OpenSSL 暗号化ライブラリーは、レガシーとモダンの 2 つのインターフェイスを提供します。OpenSSL の内部構造が変更されたため、最新のインターフェイスのみが FIPS 認定の暗号化アルゴリズムの実装を使用しています。OpenSSH は一部の操作にレガシーインターフェイスを使用するため、FIPS 要件に準拠していません。
GPG-agent
が FIPS モードで SSH エージェントとして動作しない
gpg-agent
ツールは、FIPS モードが MD5 ダイジェストが無効であっても ssh-agent
プログラムにキーを追加する際に MD5 フィンガープリントを作成します。その結果、ssh-add
ユーティリティーは認証エージェントへのキーの追加に失敗します。
この問題を回避するには、~/.gnupg/sshcontrol
ファイルを gpg-agent --daemon --enable-ssh-support
コマンドを使用せずに作成します。たとえば、gpg --list-keys
コマンドの出力を <FINGERPRINT> 0
形式で ~/.gnupg/sshcontrol
に貼り付けることができます。これにより、gpg-agent
は SSH 認証エージェントとして機能します。
SELinux staff_u
ユーザーが unconfined_r
に間違って切り替える可能性がある
secure_mode
ブール値が有効になっていると、staff_u
ユーザーが unconfined_r
ロールに間違って切り替える可能性があります。これにより、staff_u
ユーザーは、システムのセキュリティーに影響する特権操作を実行できました。
デフォルトの SELinux ポリシーにより、制限のない実行ファイルがスタックを実行可能にする
SELinux ポリシーの selinuxuser_execstack
ブール値のデフォルトの状態は on です。これは、制限のない実行ファイルがスタックを実行可能にすることを意味します。実行可能ファイルはこのオプションを使用しないでください。また、ハードコーディングされていない実行ファイルや攻撃の可能性を示している可能性があります。ただし、他のツール、パッケージ、およびサードパーティー製品との互換性のため、Red Hat はデフォルトポリシーのブール値を変更できません。シナリオがそのような互換性の側面に依存しない場合は、コマンド setsebool -P selinuxuser_execstack off
を入力して、ローカルポリシーでブール値をオフにすることができます。
キックスタートインストール時のサービス関連のルールの修正が失敗する場合があります。
キックスタートのインストール時に、OpenSCAP ユーティリティーで、サービス enable
または disable
状態の修正が必要でないことが誤って表示されることがあります。これにより、OpenSCAP が、インストール済みシステムのサービスを非準拠状態に設定する可能性があります。回避策として、キックスタートインストール後にシステムをスキャンして修復できます。これにより、サービス関連の問題が修正されます。
STIG プロファイルの SSH タイムアウトルールが誤ったオプションを設定する
OpenSSH の更新は、次の米国国防情報システム局のセキュリティー技術実装ガイド (DISA STIG) プロファイルのルールに影響を与えました。
-
RHEL 9 用 DISA STIG (
xccdf_org.ssgproject.content_profile_stig
) -
RHEL 9 用、GUI の DISA STIG (
xccdf_org.ssgproject.content_profile_stig_gui
)
これらの各プロファイルでは、次の 2 つのルールが影響を受けます。
Title: Set SSH Client Alive Count Max to zero CCE Identifier: CCE-90271-8 Rule ID: xccdf_org.ssgproject.content_rule_sshd_set_keepalive_0 Title: Set SSH Idle Timeout Interval CCE Identifier: CCE-90811-1 Rule ID: xccdf_org.ssgproject.content_rule_sshd_set_idle_timeout
SSH サーバーに適用すると、これらの各ルールは、以前のように動作しなくなったオプション (ClientAliveCountMax
および ClientAliveInterval
) を設定します。その結果、OpenSSH は、これらのルールで設定されたタイムアウトに達したときに、アイドル状態の SSH ユーザーを切断しなくなりました。回避策として、これらのルールは、ソリューションが開発されるまで、DISA STIG for RHEL 9 および DISA STIG with GUI for RHEL 9 プロファイルから一時的に削除されました。
fagenrules --load
が正しく動作しない
fapolicyd
サービスは、信号のハングアップ (SIGHUP) を正しく処理しません。その結果、fapolicyd
は SIGHUP シグナルを受信した後に終了します。したがって、fagenrules --load
コマンドは適切に機能せず、ルールの更新には fapolicyd
を手動で再起動する必要があります。この問題を回避するには、ルールの変更後に fapolicyd
サービスを再起動すると、fagenrules --load
が正常に機能します。
Ansible 修復には追加のコレクションが必要
ansible-core
パッケージによる Ansible Engine の置き換えにより、RHEL サブスクリプションで提供される Ansible モジュールのリストが削減されました。これにより、scap-security-guide
パッケージに含まれる Ansible コンテンツを使用する修復を実行するには、rhc-worker-playbook
パッケージからのコレクションが必要です。
Ansible 修復の場合は、以下の手順を実行します。
必要なパッケージをインストールします。
# dnf install -y ansible-core scap-security-guide rhc-worker-playbook
-
/usr/share/scap-security-guide/ansible
ディレクトリーに移動します (# cd /usr/share/scap-security-guide/ansible)。 追加の Ansible コレクションへのパスを定義する環境変数を使用して、関連する Ansible Playbook を実行します。
# ANSIBLE_COLLECTIONS_PATH=/usr/share/rhc-worker-playbook/ansible/collections/ansible_collections/ ansible-playbook -c local -i localhost, rhel9-playbook-cis_server_l1.yml
cis_server_l1
を、システムを修正するプロファイルの ID に置き換えます。
これにより、Ansible コンテンツは正しく処理されます。
rhc-worker-playbook
で提供されるコレクションのサポートは、scap-security-guide
から取得する Ansible コンテンツの有効化だけに限定されます。