第6章 主なバグ修正

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

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

Directory Server がバックエンドトランザクションプラグインが失敗した後にエントリーキャッシュをフラッシュします。

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

(BZ#1417340)

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

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

(BZ#1629055)

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

以前のバージョンでは、cleanAllRUV タスクの実行中に Directory Server サービスを停止すると、タスクが使用している空きリソースになりました。これにより、サービスは予期せずに終了します。今回の更新で、Directory Server は、サービスのシャットダウンプロセスが続行する前にタスクを完了できる参照カウンターを増やします。その結果、上述のシナリオでサーバーがクラッシュしなくなりました。

(BZ#1466441)

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

以前は、管理者は Directory Server の passwordInHistory 属性を 0 に設定しませんでした。これにより、パスワードは現在使用中のものと同じパスワードにリセットされる可能性があります。今回の更新で、passwordInHistory0 に設定し、その結果として現在のパスワードを確認できるようになりました。

(BZ#1563999)

Directory Server で nsSSL3Ciphers の値が 1023 文字を超えなくなりました。

以前は、Directory Server は固定バッファーサイズを使用して、cn=encryption,cn=config エントリーの nsSSL3Ciphers パラメーターに設定された推奨 TLS 暗号を保存していました。そのため、値が 1024 文字を超えると、サーバーは値を切り捨て、最初の 1023 文字で指定された暗号のみを使用します。この修正により、Directory Server は固定バッファーサイズを使用して値を保存しなくなりました。その結果、設定は予想通りに機能します。

(BZ#1716267)

Directory Server が、実際の属性よりも優先度の高い CoS 属性を使用しなくなりました。

以前は、Directory Server は、実際の属性よりも優先度が高い Service(CoS)属性の 動作デフォルト クラスを使用していました。これにより、サーバーは、サブツリーで定義された CoS ポリシーを使用してローカルパスワードに設定された属性をオーバーライドします。今回の更新でこの問題が修正されています。その結果、CoS 定義のパスワードポリシーは予想通りに機能します。

(BZ#1652984)

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

以前は、パスワード同期が有効になり、ユーザーが Directory Server のパスワードを変更した場合、サーバーは pwdLastSet 属性を設定しませんでした。これにより、Active Directory(AD)では、ユーザーがパスワードを更新することを強制しています。Directory Server が、上記のシナリオで pwdLastSet を更新するようになりました。これにより、以下のようになります。AD は、ユーザーにパスワードの再変更を強制しません。

(BZ#1597202)

スコープが 1 つ ある検索で、Directory Server で不完全な結果が返されなくなりました。

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

(BZ#1665752)

IPv6 アドレスと IPv4 アドレスの両方が使用されている場合、Directory Server が ACI の IPv6 アドレスを無視しなくなりました。

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

(BZ#1710848)

modrdn 操作を読み取り専用 Directory Server に複製すると成功するようになりました。

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

(BZ#1602001)

Directory Server がタスクを削除する時間の変更

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

(BZ#1663829)

passwordWarning86400よりも低く設定されている場合、Directory Server は shadowWarning 属性を返しませんでした。

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

(BZ#1589144)

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

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

(BZ#1605756)

FIPS 140-2 が禁止する krb5 設定が再度機能するようになりました。

以前のリリースでは、Red Hat Enterprise Linux 7.6 ビルドの Kerberos V5(krb5)システムの準拠により、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)が読み込まれるまで開始されませんでした。そのため、属性の値がプロファイルエントリーの数を超えると、開始プロセスが完了しませんでした。今回の更新で、ウォッチドッグタイマーは、上記のシナリオで短い遅延後に開始プロセスを強制的に続行し、Certificate System が予期しない状態をログに記録するようになりました。その結果、プロファイルまたは軽量 CA サブツリーの numSubordinates が検索結果のエントリー数を超えると、Certificate System は完了しません。

(BZ#1638379)

TLS_RSA_* 暗号が、証明書システムでデフォルトで無効になる

以前のリリースでは、デフォルトでは TLS_RSA_* 暗号が Certificate System で有効でした。ただし、FIPS(Federal Information Processing Standard)モードにある特定のハードウェアセキュリティーモジュール(HSM)がある環境では、これらの暗号はサポートされません。そのため、SSL ハンドシェイクが失敗し、接続が確立されませんでした。今回の更新で、デフォルトで TLS_RSA_* 暗号が無効になります。その結果、接続は FIPS モードでこれらの HSM で機能します。

(BZ#1578389)

Certificate System REST API が、ログファイルにクリアテキストのパスワードを保存しない

以前は、Certificate System REST API はプレーンなパスワード値をフィルタリングしませんでした。そのため、パスワードはログファイルのクリアテキストで表示されました。今回の更新で、サーバーは password 属性の値を「(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 ファイルを使用すると、証明書システムの 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 ユーティリティーはパスワードのプロンプトを表示しませんでした。そのため、pkiError: Missing user password and the operation failed を報告していました。pki ユーティリティーが、上記の状況でパスワードを要求するように修正されました。

(BZ#1479559)

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

以前は、監査署名が有効になっていて、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 クライアントのシェルを変更すると、np passwdd デーモンは passwd.adjunct 内でユーザーのパスワードハッシュを上書きしていました。そのため、パスワードハッシュが破損しているため、影響を受けるユーザーはログインできませんでした。このバグは修正され、yppasswdd がユーザーのシェル情報の更新中にユーザーのパスワードハッシュを上書きしなくなりました。これにより、ypchsh を実行してから新しいシェルに正常にログインできるようになります。

(BZ#1624295)