- PR -

ldapを利用したsshでのログイン

1
投稿者投稿内容
Angie
会議室デビュー日: 2007/07/27
投稿数: 3
投稿日時: 2007-07-27 13:04
LDAP 2.3.32 を Redhat4.0でテストしているのですが、リソースの関係上、サーバとクライアントは共存しています。目的として、ユーザがsshログインしている時に、/etc/passwdそしてLDAPという順番に認証とします。できるだけマニュアルに書かれる通りにシンプルな設定したのですが、今一うまくいきません。

以下は設定通りです。

1. slapd.conf を変更し、slapdをスタート。

-----------../slapd.conf----------------------------------------------------------------
include /usr/local/etc/openldap/schema/core.schema
include /usr/local/etc/openldap/schema/cosine.schema
include /usr/local/etc/openldap/schema/inetorgperson.schema
include /usr/local/etc/openldap/schema/nis.schema

pidfile /usr/local/var/run/slapd.pid
argsfile /usr/local/var/run/slapd.args

access to attrs=userPassword
by dn="cn=Manager,dc=example,dc=com" write
by anonymous auth
by self write
by * none

access to dn.base="" by * read

access to *
by dn="cn=Manager,dc=example,dc=com" write
by * read

database bdb
suffix "dc=example,dc=com"
rootdn "cn=Manager,dc=example,dc=com"
rootpw secret

directory /usr/local/var/openldap-data1

index objectClass
----------------------------------------------------------------------------------------------

2. example.ldif を作成し、ldapaddを使ってユーザー登録します。
----------example.ldif---------------------
dn: dc=example,dc=com
objectclass: dcObject
objectclass: organization
o: Example Company
dc: example

#test user of developer
dn: uid=user01,dc=example,dc=com
objectClass: inetOrgPerson
cn: testuser01
sn: developer
uid: user01
mail: user01@example.com
userPassword: pass01
------------------------------------------------


3. ldapsearch (ldapsearch -x -b 'dc=example,dc=com' '(objectclass=*)') を使用してユーザ登録できたのを確認します。

-------- return of ldapsearch-----------------------------------
# extended LDIF
#
# LDAPv3
# base <dc=example,dc=com> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# example.com
dn: dc=example,dc=com
objectClass: dcObject
objectClass: organization
o: Example Company
dc: example

# user01, example.com
dn: uid=user01,dc=example,dc=com
objectClass: inetOrgPerson
cn: testuser01
sn: developer
uid: user01
mail: user01@example.com
--------------------------------------------------------------------------

4. authconfig を実行し、LDAPを使う以下のオプションをチェックします。

-------
Use LDAP
Use LDAP Authentication
------

5. /etc/ldap.conf, /etc/nsswitch.conf, /etc/pam.d/system-auth 三つのファイルが変更されるのを確認します。内容は以下になります。

----/etc/ldap.conf----------------------
host 127.0.0.1
base dc=example,dc=com
uri ldap://127.0.0.1/
ssl no
pam_password md5
-------------------------------------------

----/etc/nsswitch----------------------
bootparams: nisplus [NOTFOUND=return] files

ethers: files
netmasks: files
networks: files
protocols: files ldap
rpc: files
services: files ldap

netgroup: files ldap

publickey: nisplus

automount: files ldap
aliases: files nisplus
--------------------------------------------------------------------

--------/etc/pam.d/system-auth---------------------

auth required /lib/security/$ISA/pam_env.so
auth sufficient /lib/security/$ISA/pam_unix.so likeauth nullok
auth sufficient /lib/security/$ISA/pam_ldap.so use_first_pass
auth required /lib/security/$ISA/pam_deny.so

account required /lib/security/$ISA/pam_unix.so broken_shadow
account sufficient /lib/security/$ISA/pam_succeed_if.so uid < 100 quiet
account [default=bad success=ok user_unknown=ignore] /lib/security/$ISA/pam_ldap.so
account required /lib/security/$ISA/pam_permit.so

password requisite /lib/security/$ISA/pam_cracklib.so retry=3
password sufficient /lib/security/$ISA/pam_unix.so nullok use_authtok md5 shadow
password sufficient /lib/security/$ISA/pam_ldap.so use_authtok
password required /lib/security/$ISA/pam_deny.so

session required /lib/security/$ISA/pam_limits.so
session required /lib/security/$ISA/pam_unix.so
session optional /lib/security/$ISA/pam_ldap.so
--------------------------------------------------------------

5. コマンド"getent passwd | grep user01"を実行すると、ldapに登録されるuser01を返すはずが、返してくれません。予想通り、sshでuser01でログインしようとする、まったく見にいかず、Permission Denied と返されます。



Can someone advice what I did wrong? Any advice would be greatly appreciated.

Thanks!

Angie C

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

Angieさんの書き込み (2007-07-27 13:04) より:
#test user of developer
dn: uid=user01,dc=example,dc=com
objectClass: inetOrgPerson
cn: testuser01
sn: developer
uid: user01
mail: user01@example.com
userPassword: pass01
------------------------------------------------


ここの部分はどうしてこういう構成になったのでしょうか?
↓の
http://www.linux.or.jp/JF/JFdocs/LDAP-Implementation-HOWTO/pamnss.html
2.1.3. Lightweight Directory Access Protocolに記述がありますが
pam_ldapとnss_ldapは、RFC2307のスキーマ使うんじゃ?
inetOrgPersonってRFC2798でしたっけ。

/etc/syslog.confに
local4.* /var/log/ldap.log
とか追加して
# service syslog restart

あとは、ldap.log眺めながらどんなfilter使っているのか
確かめればより確実かと。
filterにattributeだけじゃなくてobjectclassも使ってるはず。
もっと細かく処理を追いたいならslapd.confでloglevel変えて下さい。

_________________
桃李不言 下自成蹊
うっちー
常連さん
会議室デビュー日: 2004/08/12
投稿数: 32
投稿日時: 2007-07-27 15:39
ども。

ユーザを作成する際の ldif ファイル内の
objectClass に posixAccount の指定が必要だったりするのでは?

fedorasrv.com

こちらを参考にされては?

[ メッセージ編集済み 編集者: うっちー 編集日時 2007-07-27 15:41 ]
Angie
会議室デビュー日: 2007/07/27
投稿数: 3
投稿日時: 2007-07-31 11:13
ベテラン、うっちーご返答ありがとうございます。
アドバイスをいただいて、MigrationToolというの使って、/etc/passwdをコンバートして、objectClassをPoxisAccount にしてから、"getent"できるようになりました。

どうもありがとうございました。

Angie

1

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