第6章 主なバグ修正

本章では、ユーザーに大きな影響を与える Red Hat Enterprise Linux 7.7 で修正されたバグを説明します。

6.1. 認証および相互運用性

ディレクトリーサーバーは、バックエンドトランザクションプラグインが失敗した後にエントリーキャッシュをフラッシュします。

以前は、バックエンドトランザクションプラグインが失敗した場合ディレクトリーサーバーは操作をロールバックしますが、エントリーキャッシュの変更を元に戻しませんでした。そのため、エントリーキャッシュに誤ったエントリーが含まれていました。今回の更新で、バックエンドトランザクションプラグインが失敗した後に、ディレクトリーサーバーがエントリーキャッシュをフラッシュするようになりました。その結果、クライアントは上記の状況でデータベースをクエリーする際に正しいデータを取得します。

(BZ#1417340)

ds-replcheck ユーティリティーが、レプリカで一致しない tombstone エントリーを誤って報告しなくなりました。

以前は、管理者が tombstones が存在する異なるディレクトリーサーバーレプリカで ds-replcheck ユーティリティーを実行すると、ds-replcheck はレプリカのいずれかに tombstone エントリーがないことを報告していました。各レプリカでは tombstone エントリーが一致しないことが予想されます。今回の更新により、ds-replcheck は tombstone エントリーを検索しなくなりました。その結果、ユーティリティーは、不足している tombstone エントリーを問題として報告しません。

(BZ#1629055)

cleanAllRUV タスクの実行中にサービスをシャットダウンするときに Directory Server がクラッシュしなくなりました。

以前は、cleanAllRUV タスクの実行中にディレクトリーサーバーサービスを停止すると、タスクが使用しているリソースが解放されていました。その結果、サービスは予期せず終了しました。今回の更新で、Directory Server は、サービスのシャットダウンプロセスを開始する前にタスクを完了できるようにする参照カウンターをインクリメントします。その結果、上記のシナリオでサーバーがクラッシュしなくなりました。

(BZ#1466441)

passwordInHistory0に設定されている場合、Directory Server が現在のパスワードを正しく拒否するようになりました。

以前は、管理者はディレクトリーサーバーの passwordInHistory 属性を 0 に設定できませんでした。その結果、現在使用しているパスワードと同じパスワードにパスワードをリセットできました。この更新により、ユーザーは passwordInHistory0 に設定し、その結果、現在のパスワードをチェックできるようになりました。

(BZ#1563999)

ディレクトリーサーバーが nsSSL3Ciphers の値を 1023 文字を超えて切り捨てなくなりました。

以前は、ディレクトリーサーバーは固定バッファーサイズを使用して、cn=encryption,cn=config エントリーの nsSSL3Ciphers パラメーターに設定された優先 TLS 暗号を保存していました。その結果、値が 1024 文字を超える場合、サーバーは値を切り捨て、最初の 1023 文字で指定された暗号のみを使用します。今回の修正により、ディレクトリーサーバーは固定バッファーサイズを使用して値を保存しなくなりました。その結果、設定は期待どおりに機能します。

(BZ#1716267)

ディレクトリーサーバーは、実際の属性よりも優先度が高い CoS 属性を使用しなくなりました。

以前は、ディレクトリーサーバーは、実際の属性よりも優先度が高い operational-default Class of Service (CoS) 属性を使用していました。その結果、サーバーは、サブツリーで定義された CoS ポリシーを使用して、ローカルパスワードに設定された 属性を上書きしました。今回の更新でこの問題が修正されています。その結果、CoS 定義のパスワードポリシーは期待どおりに機能します。

(BZ#1652984)

Directory Server は、パスワードの変更時にユーザーの pwdLastSet フィールドを更新するようになりました。

以前は、パスワードの同期が有効になり、ユーザーがディレクトリーサーバーでパスワードを変更すると、サーバーは pwdLastSet 属性を設定しませんでした。その結果、Active Directory (AD) は引き続きパスワードの更新を強制します。ディレクトリーサーバーは、前述のシナリオで pwdLastSet を更新するようになりました。その結果、以下のことが言えます。AD は、ユーザーにパスワードの再変更を強制しません。

(BZ#1597202)

スコープ 1 の検索で、ディレクトリーサーバーで不完全な結果が返されなくなりました。

以前のバージョンでは、ユーザーがスコープを one に設定した検索を実行すると、検索操作は予想されるすべてのエントリーを返しませんでした。今回の更新により、ディレクトリーサーバーは、1 つのレベル検索のエントリー候補リストを正しく作成するようになりました。その結果、サーバーは予想されるエントリーを返します。

(BZ#1665752)

IPv6 アドレスと IPv4 アドレスの両方が使用されている場合、ディレクトリーサーバーが ACI の IPv6 アドレスを無視しなくなる

管理者は、アクセス制御命令 (ACI) で IPv4 アドレスと IPv6 アドレスの両方を指定して、アクセスを許可または拒否できます。以前は、ACI に IPv4 アドレスと IPv6 アドレスの両方が含まれる場合、ディレクトリーサーバーは IPv6 アドレスを無視していました。その結果、ACI は期待どおりに機能しませんでした。今回の更新で、ACI での ip キーワードの解析が修正されました。その結果、上記のシナリオで IP ベースの ACI が期待どおりに機能します。

(BZ#1710848)

modrdn 操作の読み取り専用ディレクトリーサーバーへの複製が成功するようになりました。

ディレクトリーサーバーの競合エントリー管理では、modrdn 操作の追跡エントリーを追加する必要があります。以前は、これらのエントリーの追加は読み取り専用コンシューマーで失敗し、その結果、modrdn 操作はそのようなインスタンスに複製できませんでした。今回の更新でこの問題が修正されています。その結果、modrdn 操作の読み取り専用コンシューマーへの複製は成功します。

(BZ#1602001)

ディレクトリーサーバーがタスクを削除する時間を変更

以前は、ディレクトリーサーバーは、タスク完了から 2 分後にタスクエントリーを削除していました。その結果、タスクを監視していたアプリケーションがタスクの結果を見逃す可能性がありました。この更新により、サーバーがタスクを削除するまでの時間が変更されます。デフォルトでは、インポートおよびエクスポートタスクを除き、完了したすべてのタスクは 1 時間後に削除されるようになりました。ただし、完了後は 24 時間削除されます。

(BZ#1663829)

passwordWarning86400よりも低く設定されている場合、ディレクトリーサーバーは shadowWarning 属性を返しませんでした。

以前は、cn=config エントリーの passwordWarning 属性が 86400 秒 (1 日未満) に設定されている場合、ディレクトリーサーバーは検索で shadowWarning 属性を返しませんでした。今回の更新でこの問題が修正されています。その結果、サーバーは上記のシナリオで shadowWarning 属性の値を返します。

(BZ#1589144)

krb5 メモリーキャッシュがスレッドセーフになりました。

以前は、Kerberos V5 ログインプログラム (krb5) のメモリーキャッシュは完全にスレッドセーフではありませんでした。その結果、マルチスレッドアクセスが予期せず終了していました。今回の更新により、メモリーキャッシュはよりスレッドセーフになるようにクリーンアップされます。その結果、クラッシュは発生しません。

(BZ#1605756)

FIPS 140-2 で禁止されている krb5 設定が再び機能するようになりました。

以前は、Kerberos V5 (krb5) システムの Red Hat Enterprise Linux 7.6 ビルドで FIPS 140-2 への準拠が強化されました。その結果、FIPS 140-2 で禁止されている特定の許可された設定が機能しなくなりました。今回の更新で、krb5 が FIPS モードで動作し、FIPS に準拠していないため、変更が元に戻されました。その結果、FIPS 140-2 で禁止されている設定が再び機能するようになりました。

現時点では、Red Hat Enterprise Linux 8 はこれらの設定をサポートしていないことに注意してください。

(BZ#1645711)

Certificate System は、numSubordinates 属性の値がプロファイルエントリーの数を超えた場合でも起動します。

LDAP numSubordinates 操作属性は、予想されるプロファイルエントリーの数を定義します。以前は、Certificate System は、すべてのプロファイルと軽量の認証局(CA)が読み込まれるまで起動しませんでした。そのため、属性の値がプロファイルエントリーの数を超えると、開始プロセスは完了しませんでした。今回の更新で、watchdog タイマーは、前述のシナリオで短時間の遅延後に開始プロセスを強制的に続行し、Certificate System は予期しない状態をログに記録します。その結果、プロファイルまたは軽量の CA サブツリーの numSubordinates が検索結果のエントリー数を超えると、Certificate System は完了します。

(BZ#1638379)

Certificate System では、TLS_RSA_* 暗号がデフォルトで無効になりました。

以前は、デフォルトで TLS_RSA_* 暗号が Certificate System で有効になっていました。ただし、連邦情報処理標準 (FIPS) モードで特定のハードウェアセキュリティーモジュール (HSM) を備えた環境では、これらの暗号はサポートされません。そのため、SSL ハンドシェイクが失敗し、接続は確立されませんでした。今回の更新で、デフォルトで TLS_RSA_* 暗号が無効になります。その結果、FIPS モードでこれらの HSM との接続が機能します。

(BZ#1578389)

Certificate System REST API がクリアテキストパスワードをログファイルに保存しなくなりました。

以前は、Certificate System REST API はプレーンなパスワード値を除外しませんでした。その結果、パスワードはログファイルのクリアテキストで表示されました。この更新により、サーバーはパスワード属性値を (sensitive) に置き換えます。その結果、クリアテキストパスワードがログに表示されなくなりました。

(BZ#1617894)

Certificate System でクライアント認証を無効にできるようになりました。

以前のバージョンの Certificate System には、CMCAuth で認証するときに TLS クライアント認証を強制する機能が追加されました。ただし、一部の古いアプリケーションは TLS クライアント認証をサポートしないため、Certificate System への接続に失敗しました。今回の更新で、/var/lib/pki/pki-instance_name/ca/conf/CS.cfg ファイルに bypassClientAuth 設定パラメーターが追加されました。その結果、管理者はこのパラメーターを true に設定して、特定のアプリケーションでサポートされていない場合にクライアント認証を無効にできるようになりました。

(BZ#1628410)

PKCS #12 ファイルの使用時に Certificate System CA のインストールが成功する

以前は、pki_ca_signing_cert_path パラメーターのデフォルト値が事前に定義されたパスに設定されていました。管理者が PKCS #12 ファイルを使用して認証局 (CA) をインストールする際に pkispawn ユーティリティーがパラメーターを検証する方法が最近変更されたため、インストールは Invalid certificate path: pki_ca_signing_cert_path=/etc/pki/pki-tomcat/external_ca.cert エラーで失敗しました。今回の更新では、pki_ca_signing_cert_path のデフォルト値を削除して問題を修正しています。その結果、上記のシナリオで CA のインストールに成功します。

(BZ#1633761)

pki ユーティリティーはパスワードを正しく要求します。

以前は、コマンドラインオプションを使用してパスワードを指定しなかった場合、pki ユーティリティーはパスワードを要求しませんでした。その結果、pki は誤って Error: Missing user password と報告し、操作は失敗しました。pki ユーティリティーが修正され、上記の状況でパスワードの入力が求められるようになりました。

(BZ#1479559)

ファイルシステム全体が原因の署名済み監査ログを保存できない場合、Certificate System は自動的にシャットダウンします。

以前は、監査署名が有効で、Certificate System が署名済み監査ログを保存するファイルシステムがいっぱいであった場合、Certificate System は動作を継続しますが、それ以上の操作はログに記録されませんでした。署名された監査ログが欠落しないように、Certificate System は、上記のシナリオで自動的にシャットダウンするようになりました。

(BZ#1639710)

SSSD は AD LDAP サーバーを使用して initgroup ルックアップの POSIX 属性を取得します。

SSSD サービスは initgroup ルックアップに Active Directory (AD) グローバルカタログ (GC) を使用しますが、ユーザーのホームディレクトリーやシェルなどの POSIX 属性は、デフォルトでは GC に複製されません。したがって、SSSD が SSSD ルックアップ中に POSIX 属性を要求すると、SSSD は、GC に存在しないため、サーバーから削除される属性を誤って考慮し、SSSD キャッシュからも削除します。今回の更新で、AD LDAP サーバーにスキーマの変更なしに POSIX 属性が含まれるため、initgroup ルックアップが LDAP と GC 接続を適切に切り替えるようになりました。その結果、シェルやホームディレクトリーなどの POSIX 属性は上書きされたり、欠落したりしなくなりました。

(BZ#1194345)

ypchsh でシェルを変更しても、NIS が passwd.adjunct を使用するとパスワードが上書きされなくなりました。

以前は、NIS サーバーが passwd.adjunct マップをサポートするように設定され、ユーザーが ypchsh コマンドを使用して NIS クライアントのシェルを変更すると、yppasswdd デーモンは、##username 文字列で passwd.adjunct 内でユーザーのパスワードハッシュを上書きしていました。その結果、影響を受けたユーザーは、パスワードハッシュが破損しているため、ログインできなくなりました。このバグは修正され、yppasswdd はユーザーのシェル情報の更新中にユーザーのパスワードハッシュを上書きしなくなりました。これにより、ypchsh の実行後に、ユーザーは新しいシェルに正常にログインできます。

(BZ#1624295)