強制パスワードの変更によりKerberos認証が失敗する

強制パスワードの変更によりKerberos認証が失敗する

Kerberosを使用するようにPAM認証を構成し、サブジェクトのKerberos資格情報を使用して正しく認証します。

期限切れのパスワードを使用してプリンシパルを作成しようとしたときに問題が発生しました。

kadmin: addprinc +needchange test_principal

VT またはグラフィック グリーティングでログインしようとすると、パスワードを正しく入力した後、次のメッセージが表示されます。パスワードが期限切れになり、新しいパスワードを作成するように求められます。これを実行すると、次のエラーで認証が失敗しますkdc.log

krb5kdc[...](info): TGS_REQ (4 etypes {18 17 16 23}) 192.168.0.200: NO PREAUTH: authtime 0, [email protected] for host/[email protected], Generic error (see e-text)

そして、次のような(驚くべき)エラーが発生します/var/log/auth.log

pam_krb5(gdm3:auth): (user test_principal) credential verfication failed: KDC returned error string: NO PREAUTH

いくつかのメモ

  • サブジェクトの属性を一覧表示すると、失敗したログイン試行が0回表示されますgetprinckadmin.local
  • フラグなしでアカウントを作成すると、+needchange正しく認証できます。
  • ユーザーが一度正常に認証された後+needchange(in経由)フラグを追加すると、予想されるmodprinc動作が表示されます。kadmin.localつまり、ユーザーにパスワードを変更するように求められ、認証が成功します。
  • このサブジェクトには同等のエントリはありませんが、/etc/passwdLDAPエントリでサポートされています。
  • 他の場所で提案したとおり、次のように体を作ってみました。

    kadmin: addprinc -requires_preauth +needchange test_principal
    

    違いはありません。

マイユースケース

以前のNISシステムから移行しており、ユーザーに継続性を提供したいと思います。私は彼らが以前のパスワードを入力したいと思っていますが、Kerberosを介して実施したいより厳格なパスワードポリシールールに準拠するようにパスワードを変更する必要があります。

私はDebian WheezyでMIT Kerberos Vを実行しています。

答え1

答えを見つけたのはとても奇妙な答えです!

ここにあるコマンドを使用して、getprinc問題プリンシパルの属性とそのプリンシパルなしで生成され、正しく検証されたプリンシパルを取得しますkadmin+needchange

違いは、正しく認証されたサブジェクトにはREQUIRES_PRE_AUTH属性セットがありますが、問題のあるサブジェクトには属性セットがないことです。したがって、回避策は次のようにサブジェクトを作成することです。

kadmin: addprinc +needchange +requires_preauth test_principal

関連情報