OT: autentykacja via LDAP
Daniel Mróz
beorn w alpha.pl
Czw, 24 Kwi 2003, 22:15:25 CEST
Czesc
Mam pytanie do ludkow uzywajacych LDAP do autoryzacji userow. Jak
rozwiazujecie problem hasla? Podgralem dane usera z jakimstam haslem w
MD5, ale kiedy odpytuje baze, ta zwraca mi prawdopodobnie zahaszowany
Cryptem hash MD5. Robi to niezaleznie od tego jak kombinuje z opcjami
"pam_crypt" i "pam_password". Wszystko skonfigurowalem, login odpytuje
LDAP przez NSS, ale niestety:
Apr 24 21:31:34 mei slapd[10661]: conn=12 op=4 SEARCH RESULT tag=101
err=0 text=
Apr 24 21:31:34 mei slapd[10662]: conn=12 op=5 SRCH
base="ou=People,dc=cyberdeck,dc=pl" scope=1
filter="(&(objectClass=posixAccount)(uid=ldaptest))"
Apr 24 21:31:34 mei slapd[10662]: conn=12 op=5 SEARCH RESULT tag=101
err=0 text=
Apr 24 21:31:36 mei login[2544]: FAILED LOGIN 1 FROM (null) FOR
ldaptest, Authentication service cannot retrieve authentication info.
Prawdopodobnie czepia sie hasla, bo:
[root w mei LDAP]# ldapsearch -P 3 -x -u -W -D "cn=proxyuser,dc=cyberdeck,dc=pl" \
"(&(objectClass=posixAccount)(uid=ldaptest))"
Enter LDAP Password: <clicketyclick>
version: 2
#
# filter: (&(objectClass=posixAccount)(uid=ldaptest))
# requesting: ALL
#
# ldaptest, People, cyberdeck, pl
dn: uid=ldaptest,ou=People,dc=cyberdeck,dc=pl
ufn: ldaptest, People, cyberdeck, pl
uid: ldaptest
cn: LDAP server test user
givenName: LDAP test
sn: None
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword:: e01ENX0kMSRPb3o5R2Z4QSRVd2s0dVQ1bkE2LjNzNk9IZXJLalgx
shadowLastChange: 12145
shadowMax: 99999
shadowWarning: 5
loginShell: /bin/false
uidNumber: 1000
gidNumber: 1000
homeDirectory: /tmp
gecos: LDAP Tester
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
Jak zmusic LDAPa do wspolpracy z NSS i PAM? Nie moge uzyskac PAMowego
MD5 (probowalem juz "password-crypt-salt-format '$1$%.8s'" ale bez
skutku). Przeczytalem juz kilka manuali i wszedzie jest opisany ten
sam sposob: "slappaswd, ldapadd, dziala". Bede wdzieczny za jakies
wskazowki.
P.S. Spotkalem juz dwa opisy dzialania pam_ldap:
- odpytuje baze LDAP i uzywa danych z niej do autentykacji (jak
zwykla baze danych),
- najpierw odpytuje baze, a potem probuje sie podbindowac jako user,
ktorego autentykujemy, jesli takowego znalazl.
To wreszcie ktory opis jest prawdziwy?
Konfigi:
[root w mei LDAP]# egrep -v '(^#|^$)' /etc/ldap.conf
host 127.0.0.1
base dc=cyberdeck,dc=pl
rootbinddn cn=proxyuser,dc=cyberdeck,dc=pl
ldap_version 3
pam_filter objectclass=posixAccount
pam_login_attribute uid
pam_groupdn ou=Group,dc=cyberdeck,dc=pl
pam_crypt local
scope one
pam_member_attribute gid
pam_template_login_attribute uid
pam_password md5
nss_base_passwd ou=People,dc=cyberdeck,dc=pl
nss_base_shadow ou=People,dc=cyberdeck,dc=pl
nss_base_group ou=Group,dc=cyberdeck,dc=pl
nss_base_hosts ou=Hosts,dc=cyberdeck,dc=pl
[root w mei LDAP]# egrep -v '(^#|^$)' /etc/openldap/slapd.conf
include /usr/share/openldap/schema/core.schema
include /usr/share/openldap/schema/cosine.schema
include /usr/share/openldap/schema/inetorgperson.schema
include /usr/share/openldap/schema/krb5-kdc.schema
include /usr/share/openldap/schema/misc.schema
include /usr/share/openldap/schema/nis.schema
include /etc/openldap/schema/local.schema
include /etc/openldap/slapd.access.conf
pidfile /var/run/slapd.pid
argsfile /var/run/slapd.args
modulepath /usr/lib/openldap
database ldbm
suffix "dc=cyberdeck,dc=pl"
rootdn "cn=root,dc=cyberdeck,dc=pl"
rootpw {crypt}A8nMNFbrM19Qs
password-hash {MD5}
password-crypt-salt-format "$1$%.8s"
directory /var/lib/openldap-ldbm
index objectClass,uid,uidNumber,gidNumber eq
index cn,mail,surname,givenname eq,subinitial
[root w mei LDAP]# egrep -v '(^#|^$)' /etc/openldap/slapd.access.conf
access to dn=".*,dc=cyberdeck,dc=pl" attr=userPassword
by dn="cn=root,dc=cyberdeck,dc=pl" write
by dn="cn=proxyuser,dc=cyberdeck,dc=pl" read
by self write
by * auth
access to dn=".*,dc=cyberdeck,dc=pl" attr=mail
by dn="cn=root,dc=cyberdeck,dc=pl" write
by self write
by * read
access to dn=".*,ou=People,dc=cyberdeck,dc=pl"
by * read
access to dn=".*,dc=cyberdeck,dc=pl"
by self write
by * read
Dziekuje za pomoc i pozdrawiam
Beorn
--
----------------------------------------------------------------------
Daniel `Beorn' Mróz <beorn w alpha.pl> http://127.0.0.1/beorn
GCS/E d-(pu) s-:- a--@ C++++ UL++++$ P+++ L+++ E--- X W+>++ N+++ o? K-
w--- O M- V- PS PE- !Y PGP+ t- 5- R tv-- b+ DI++ D+++ G++ e h! r++ y?
----------------------------------------------------------------------
Więcej informacji o liście dyskusyjnej pld-users-pl