시스템 인증을 LDAP로 하려고 하는데 며칠째 시도하고 있지만..
제대로 풀리지 않네요..
조그마한 힌트라도 있으시면....도움 부탁 드립니다.
제가 설치하려고 한 ldap는
suse 9.3에 포함되어 있는것입니다.
패키지 ================
nss_ldap-234-3
openldap2-2.2.23-6
yast2-ldap-2.11.0-3
openldap2-devel-2.2.23-6
pam_ldap-176-3.2
ldapcpplib-0.0.3-30
yast2-ldap-client-2.11.11-3
openldap2-client-2.2.23-6.6
=========================
/etc/ldap.conf==============
host 127.0.0.1
ldap_version 3
base dc=jjang,dc=sok
rootbinddn cn=Manager,dc=jjang,dc=sok
scope one
pam_filter objectclass=posixaccount
pam_login_attribute uid
pam_member_attribute gid
pam_password md5
nss_base_passwd ou=People,dc=jjang,dc=sok?one
nss_base_shadow ou=People,dc=jjang,dc=sok?one
nss_base_group ou=Group,dc=jjang,dc=sok?one
pam_min_uid 1001
pam_max_uid 65000
pam_password md5 <-- 이부분를 멀로 할지 상당히 고민 했습니다만...
/etc/openldap/slapd.conf=====
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/corba.schema
include /etc/openldap/schema/misc.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/openldap.schema
include /etc/openldap/schema/yast.schema
pidfile /var/run/slapd/slapd.pid
argsfile /var/run/slapd/slapd.args
modulepath /usr/lib/openldap/modules
access to dn.base=""
by * read
access to dn.base="cn=Subschema"
by * read
access to attr=userPassword
by * auth
by self write
access to attr=shadowLastChange
by self write
by * read
access to *
by * read
database bdb
suffix "dc=jjang,dc=xxx"
rootdn "cn=Manager,dc=jjang,dc=xxx"
rootpw {MD5}R7zlx09Yn0hn29V+nKn4CA==
directory /var/lib/ldap
index objectClass,uid,uidNumber,gidNumber eq
index cn,mail,surname,givenname eq,subinitial
password-hash {MD5}
/etc/pam.d/system-auth===
auth required /lib/security/pam_env.so
auth sufficient /lib/security/pam_unix.so likeauth nullok
auth sufficient /lib/security/pam_ldap.so use_first_pass
auth required /lib/security/pam_deny.so
account required /lib/security/pam_unix.so
account sufficient /lib/security/pam_localuser.so
account [default=bad success=ok user_unknown=ignore service_err=ignore system_err=ignore] /lib/security/pam_ldap.so
password required /lib/security/pam_cracklib.so retry=3
password sufficient /lib/security/pam_unix.so nullok md5 shadow use_authtok
password sufficient /lib/security/pam_ldap.so use_authtok
password required /lib/security/pam_deny.so
session required /lib/security/pam_limits.so
session required /lib/security/pam_unix.so
session optional /lib/security/pam_ldap.so
/etc/pam.d/passwd
auth required /lib/security/pam_stack.so service=system-auth
account required /lib/security/pam_stack.so service=system-auth
password required /lib/security/pam_stack.so service=system-auth
auth sufficient /lib/security/pam_ldap.so
auth required /lib/security/pam_pwdb.so shadow nullok
account sufficient /lib/security/pam_ldap.so
account required /lib/security/pam_pwdb.so
password required /lib/security/pam_cracklib.so retry=3 minlen=4 dcredit=0 ucredit=0
password sufficient /lib/security/pam_ldap.so use_authtok
password required /lib/security/pam_pwdb.so use_authtok nullok md5 shadow
=== 이상이 설정파일입니다.
그리고 /etc/ldap.secert 파일도 설정하였습니다.
현재 문제는
1. getent passwd | grep ldapuser 를 찾으면 검색이 됩니다(ldapuser는 /etc/passwd파일에는 없고 ldap에만 있는 사용자 입니다.) . 로그도 정상적으로 올라 옵니다.
그런데 id ldapuser -> no such user 라고 나옵니다. -> ldap 로그에 아무것도 나오지 않습니다.
하지만 finger ldapuser 라고 하면 해당 유저 정보가 나옵니다. -> 이때는 ldap 를 검색하는 로그가 올라 옵니다.
2. telnet 이나 ssh로 접근을 했을때 ldap에 있는 유저로 로긴시도하면
Feb 22 11:40:10 jjang slapd[6474]: conn=3 op=1 SEARCH RESULT tag=101 err=0 nentries=1 text=
Feb 22 11:40:10 jjang slapd[6474]: conn=3 fd=11 ACCEPT from IP=127.0.0.1:52027 (IP=0.0.0.0:389)
Feb 22 11:40:10 jjang slapd[6474]: conn=3 op=0 BIND dn="cn=Manager,dc=jjang,dc=sok" method=128
Feb 22 11:40:10 jjang slapd[6474]: conn=3 op=0 BIND dn="cn=Manager,dc=jjang,dc=sok" mech=SIMPLE ssf=0
Feb 22 11:40:10 jjang slapd[6474]: conn=3 op=0 RESULT tag=97 err=0 text=
Feb 22 11:40:10 jjang slapd[6474]: conn=3 op=1 SRCH base="ou=People,dc=jjang,dc=sok" scope=1 deref=0 filter="(&(objectClass=shadowAccount)(uid=ldapuser))"
Feb 22 11:40:10 jjang slapd[6474]: conn=3 op=1 SRCH attr=uid userPassword shadowLastChange shadowMax shadowMin shadowWarning shadowInactive shadowExpire shadowFlag
Feb 22 11:40:10 jjang slapd[6474]: conn=3 op=1 SEARCH RESULT tag=101 err=0 nentries=1 text=
위와 같이 정상적으로 검색은 하는것 같으나 패스워드가 맞지 않는것 같습니다.
phpldapadmin이나. 윈도우용 ldapadmin으로 접속해서 해당 사용자의 패스워드를 보면 두 프로그램에서 보이는 패스워드는 동일하나.
ldapsearch 에서 찾아지는 패스워드가 서로 다르게 나옵니다.
phpldapadmin & ldapadmin 의 패스워드 : {MD5}jMr3fDM3Lp11hDiJEesU4Q==
ldapsearch로 찾았을때 콘솔에서 보여지는 패스워드: e01ENX1qTXIzZkRNM0xwMTFoRGlKRWVzVTRRPT0=
패스워드알고리즘을 어디에서 어떻게 맞춰줘야 하는지 ...도무지 모르겠습니다.
조그만 힌트라도 도움 부탁 드립니다.
감사 합니다.
|