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