- PR -

LDAPサーバへのログインとパスワード変更について

1
投稿者投稿内容
kimchi
会議室デビュー日: 2005/10/27
投稿数: 8
投稿日時: 2005-12-09 01:39
毎々お世話になります。
山田と申します。

LDAPサーバへの「ログイン」、「パスワード変更」を
実現したいのですが、うまくいきません。

具体的なニーズとしましては、
-----------------------------------------------------------------------
1)/etc/passwd内には存在しないLDAPユーザ(test1)でログインしたい。
2)/etc/passwd内には存在しないLDAPユーザ(test1)のパスワードを
passwdコマンドにより変更したい。
-----------------------------------------------------------------------

「パスワード変更」に関しては、以下のようなエラーが出ます。
# passwd test1
Changing password for user test1.
Enter login(LDAP) password:
LDAP Password incorrect: try again
Enter login(LDAP) password:
LDAP Password incorrect: try again
Enter login(LDAP) password:
Password change aborted
passwd: Authentication token manipulation error


また、「ログイン」に関しても

# ssh test1@localhost
test1@localhost's password:
Permission denied, please try again.
test1@localhost's password:
Permission denied, please try again.
test1@localhost's password:
Permission denied (publickey,password,keyboard-interactive).

といったパーミッションエラーが表示されます。

アクセス制限やパーミッションの設定が原因かと思うのですが、設定箇所が
他に思い当たらないので、おわかりになられる方がいらっしゃいましたら、
ご教授願えませんでしょうか。

以下に設定履歴を記載させていただきます。
長くなりますが、ご確認いただけませんでしょうか。

宜しくお願い申し上げます。


<検証環境>
Turbolinux Server 10.0(全パッケージインストール)

私が行った操作を以下に記載させていただきます。
※ちなみにホスト名は「caffe.ac.jp」としております。

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1)/etc/openldap/slapd.confの編集

include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema
↑上記2つのスキーマ定義を追加

database ldbm ←デフォルトのまま
suffix dc=caffe,dc=ac,dc=jp
rootdn cn=Manager,dc=caffe,dc=ac,dc=jp

rootpw {SSHA}i8zhFyjrjoTcEwgrAlsqEms1MGegw8qX
↑「slappasswd -s *****」の表示結果を貼り付け

access to attr=userPassword
by dn="cn=Manager,dc=caffe,dc=ac,dc=jp" write
by self read
by anonymous
by * none

access to *
by dn="cn=Manager,dc=caffe,dc=ac,dc=jp" write
by self write
by * read

※これらのディレクティブ以外は触っておりません。

2)/etc/openldap/slapd.confの編集

host 127.0.0.1
base dc=caffe,dc=ac,dc=jp
ssl no
pam_password md5

※編集箇所は「base」ディレクティブだけです。

3)サービス起動

/etc/init.d/ldap start(正常稼動確認)

4)データ投入

以下のldif形式のファイルを投入いたしました。

# ldapadd -x -D 'cn=Manager,dc=caffe,dc=ac,dc=jp' -W -f domain.ldif
# ldapmodify -x -D 'cn=Manager,dc=caffe,dc=ac,dc=jp' -W -f user.ldif

「domain.ldif」の内容
*****************************************
dn: dc=caffe,dc=ac,dc=jp
objectclass: dcObject
objectclass: organization
o: caffe
dc: caffe

dn: cn=Manager,dc=caffe,dc=ac,dc=jp
objectclass: organizationalRole
cn: Manager

dn: ou=User,dc=caffe,dc=ac,dc=jp
ou: User
objectclass: organizationalUnit

dn: ou=Group,dc=caffe,dc=ac,dc=jp
ou: Group
objectclass: organizationalUnit
*****************************************

「user.ldif」の内容
*****************************************
dn: uid=test1,ou=User,dc=caffe,dc=ac,dc=jp
changetype: add
objectClass: person
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
sn: test1
cn: test1
uid: test1
uidNumber: 10001
gidNumber: 10001
homeDirectory: /home/test1
userPassword: {crypt}*
loginShell: /bin/bash
shadowLastChange: 13123
shadowMax: 99999
shadowWarning: 7
*****************************************

5)クライアント端末の認証設定

authconfigコマンドを実行し、

[*]Use LDAPにチェック
Server:127.0.0.1
Base DN:dc=caffe,dc=ac,dc=jp
「OK」を選択

[*]Use LDAP Authenticationにチェック
Server:127.0.0.1
Base DN:dc=caffe,dc=ac,dc=jp
「OK」を選択

上記の操作で、
/etc/pam.d/system-authファイル
/etc/nsswitch.conf
が編集されていることを確認

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

anights
ぬし
会議室デビュー日: 2003/05/22
投稿数: 277
お住まい・勤務地: 東京
投稿日時: 2005-12-09 10:14
まずは、test1ユーザがシステムから見えているか以下のコマンドで確認出来ます。

# getent passwd

test1ユーザが存在すれば見えています。

また、パスワードを変更するのは、ldappasswdコマンドでなければ
変更出来なかったと思うのですが。

参考スレッド:
OpenLDAPでのパスワード変更
kimchi
会議室デビュー日: 2005/10/27
投稿数: 8
投稿日時: 2005-12-09 15:56
To:anights 様

ご返答いただきまして、ありがとうございます。

ご教授いただきましたとおり、
# getent passwd
にて確認いたしますて、「test1」というユーザは存在しております。

参考スレッドを拝見させていただきましたが、
「ldappasswd」でのパスワード変更も利かない状態です。

具体的には以下のようになってしまいます。
--------------------------------------------------------------
# ldappasswd -x -D 'uid=test1,dc=caffe,dc=ac,dc=jp' \
> -W 'uid=test1,dc=caffe,dc=ac,dc=jp' -S
New password:
Re-enter new password:
Enter LDAP Password:
ldap_bind: Invalid credentials (49)
--------------------------------------------------------------

また、/var/log/ldap.logも確認しておりますが、何が原因かわからない状況です。
-------------------------------------------------------------------------------
Dec 9 15:55:01 caffe slapd[2011]: conn=17 fd=9 ACCEPT from IP=127.0.0.1:32837 (IP=0.0.0.0:389)
Dec 9 15:55:01 caffe slapd[2011]: conn=17 op=0 BIND dn="uid=test1,dc=caffe,dc=ac,dc=jp" method=128
Dec 9 15:55:01 caffe slapd[2011]: conn=17 op=0 RESULT tag=97 err=49 text=
Dec 9 15:55:01 caffe slapd[2011]: conn=17 fd=9 closed
------------------------------------------------------------------------------

現在、プラットフォーム依存で「--enable-crypt」は「no」の状態ですが、
これがパスワード変更に何か関与しているのでしょうか。

何かおわかりでしたら、ご教授いただければ幸いに存じます。
失礼致します。



anights
ぬし
会議室デビュー日: 2003/05/22
投稿数: 277
お住まい・勤務地: 東京
投稿日時: 2005-12-09 17:21
引用:

kimchiさんの書き込み (2005-12-09 15:56) より:
ldap_bind: Invalid credentials (49)



bindに認証で失敗していますね。

引用:

現在、プラットフォーム依存で「--enable-crypt」は「no」の状態ですが、
これがパスワード変更に何か関与しているのでしょうか。



であればどうして
userPassword: {crypt}*
とやっているのですか?
少なくともデータ投入出来ているということはrootdnではbind出来ていますし
{SSHA}などを使ってエントリしてみてはどうでしょうか?
そちらの方が手堅いかと。

また、
引用:

access to attr=userPassword
by dn="cn=Manager,dc=caffe,dc=ac,dc=jp" write
by self read
by anonymous
by * none



となっていたら本人はパスワード変更出来ないと思いますがどうでしょう?
また、anonymousはどうしたいのでしょうか?
auth?
kimchi
会議室デビュー日: 2005/10/27
投稿数: 8
投稿日時: 2005-12-12 09:52
To:anights 様

ご返答いただきまして、ありがとうございます。
また、ご連絡遅くなりましたこと、深くお詫び申し上げます。

失礼ですが、インラインでコメントさせていただきます。

>であればどうして
>userPassword: {crypt}*
>とやっているのですか?

上記に関しては、私のミスです、申し訳ございません。

>少なくともデータ投入出来ているということはrootdnではbind出来ていますし
>{SSHA}などを使ってエントリしてみてはどうでしょうか?

ご教授いただきましたとおり、{SSHA}でエントリすると、以下のように
passwdコマンドによるパスワード変更は実現できた模様です。

# passwd test1
Changing password for user test1.
Enter login(LDAP) password:
New password:
Retype new password:
LDAP password information changed for test1
passwd: all authentication tokens updated successfully.

ただ、このtest1ユーザーではいまだにシェルにログインできません。
pamの設定なのでしょうか・・・

引き続き、調査していこうかと考えております。
参考になるご意見を頂戴いたしまして、ありがとうございました。



anights
ぬし
会議室デビュー日: 2003/05/22
投稿数: 277
お住まい・勤務地: 東京
投稿日時: 2005-12-12 12:08
引用:

kimchiさんの書き込み (2005-12-12 09:52) より:
ご教授いただきましたとおり、{SSHA}でエントリすると、以下のように
passwdコマンドによるパスワード変更は実現できた模様です。



ためしたところ、passwdコマンドでも変更出来ますね。失礼しました。
ただ、暗号形式は変わってしまうと思いますが。

そのあたりは、/etc/ldap.confのpam_password指定のようです。
md5では、{crypt}になってしまうのでパスワード変更後はダメかもしれません。
pam_password exopとしてみた場合はどうでしょうか?
{SSHA}となるはずです。
まあ、暗号形式が原因であればの場合ですが。
kimchi
会議室デビュー日: 2005/10/27
投稿数: 8
投稿日時: 2005-12-12 17:40
To:anights 様

ご返答いただきましてありがとうございます。

>そのあたりは、/etc/ldap.confのpam_password指定のようです。
>md5では、{crypt}になってしまうのでパスワード変更後はダメかもしれません。

上記でご指摘のとおり、passwdコマンドによるパスワード変更に関して、

test1ユーザーを{MD5}でエントリし、さらに、/etc/ldap.confのpam_passwordを「md5」と指定しても、最初の1回は成功しますが、2度目からはパスワードが正しくない旨のエラーが表示されます。

ですので、
test1ユーザを{SSHA}でエントリ、かつ、/etc/ldap.confのpam_passwordを「ssha」と指定すると、随時、パスワード変更が可能となります。

pam_passwordの「exop」という指定は初耳でした。調べてみようかと思います。

test1ユーザーによるログインに関しても、ローカルログインすら実現できていないので、{CRYPT}の実装とローカルログインに関連性があるか、調べてみようかと思っております。

ありがとうございます。
1

スキルアップ/キャリアアップ(JOB@IT)