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