PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Debian Ldap User Auth.



Axion
04.02.06, 02:24
Ich möchte auf meinem Debian Sarge System die Userdaten in einer Ldap Datenbank hinterlegen. Ich habe dazu schon die Google und Forumssuche bemüht und auch einige sehr interessante Treffer gefunden. Leider funktioniert es noch nicht so ganz. Ich habe Ldif für die User über die Migrationtools erstellt. Danach meine Pam und Nss Dateien angepasst. Probeweise hab ich einen User sowohl aus der passwd als auch aus der shadow entfernt und den Befehl finger abgesetzt. Finger lieferte die Userdaten aus der Ldap Datenbank ohne murren zurück. Auch ein ldapwhoami meldete keine Fehler.

Versuche ich aber jetzt per su zu diesem User zu werden bekomme ich am promt stat dem Usernamen "I have no name!" alle weitern Usereinstellungen stimmen aber. Versuch ich mich per Ssh an dem System anzumelden bekomme folgende Meldungen ins auth.log:



Feb 4 00:46:58 marvin sshd[7837]: Illegal user hoeglse from ::ffff:172.16.0.101
Feb 4 00:47:06 marvin sshd[7837]: pam_ldap: error trying to bind as user "uid=hoeglse,ou=People,dc=fleet,dc=loc" (Invalid credentials)
Feb 4 00:47:06 marvin sshd[7837]: (pam_unix) check pass; user unknown
Feb 4 00:47:06 marvin sshd[7837]: (pam_unix) authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=laptop.fleet.loc
Feb 4 00:47:08 marvin sshd[7837]: error: PAM: User not known to the underlying authentication module for illegal user hoeglse from laptop.fleet.loc
Feb 4 00:47:08 marvin sshd[7837]: Failed keyboard-interactive/pam for illegal user hoeglse from ::ffff:172.16.0.101 port 4910 ssh2


debug logfile für ldap


Feb 4 01:04:37 marvin slapd[10653]: conn=437 fd=18 ACCEPT from IP=127.0.0.1:35675 (IP=0.0.0.0:389)
Feb 4 01:04:37 marvin slapd[10653]: conn=437 op=0 BIND dn="cn=admin,dc=fleet,dc=loc" method=128
Feb 4 01:04:37 marvin slapd[10653]: conn=437 op=0 BIND dn="cn=admin,dc=fleet,dc=loc" mech=SIMPLE ssf=0
Feb 4 01:04:37 marvin slapd[10653]: conn=437 op=0 RESULT tag=97 err=0 text=
Feb 4 01:04:37 marvin slapd[10653]: conn=437 op=1 SRCH base="ou=People,dc=fleet,dc=loc" scope=2 deref=0 filter="(&(objectClass=posixAccount)(uid=hoeglse))"
Feb 4 01:04:37 marvin slapd[10653]: <= bdb_equality_candidates: (uid) index_param failed (18)
Feb 4 01:04:37 marvin slapd[10653]: conn=437 op=1 SEARCH RESULT tag=101 err=0 nentries=1 text=
Feb 4 01:04:37 marvin slapd[10653]: conn=437 op=2 BIND anonymous mech=implicit ssf=0
Feb 4 01:04:37 marvin slapd[10653]: conn=437 op=2 BIND dn="uid=hoeglse,ou=People,dc=fleet,dc=loc" method=128
Feb 4 01:04:37 marvin slapd[10653]: conn=437 op=2 RESULT tag=97 err=49 text=
Feb 4 01:04:37 marvin slapd[10653]: conn=437 op=3 BIND dn="cn=admin,dc=fleet,dc=loc" method=128
Feb 4 01:04:37 marvin slapd[10653]: conn=437 op=3 BIND dn="cn=admin,dc=fleet,dc=loc" mech=SIMPLE ssf=0
Feb 4 01:04:37 marvin slapd[10653]: conn=437 op=3 RESULT tag=97 err=0 text=


(die Zeiten stimmen zwar nicht über ein aber die Fehlermeldungen beziehen sich auf den selben Vorgang)

Kommentiere ich den User in der passwd wieder ein, so ist ein Login per Ssh möglich das Passwort wird aber aus der Ldap Datenbank entnommen. Kann mir jemand einen Tipp geben wo ich den Fehler suchen muß das auch die Usernamen in der Ldap Datenbank vom System gefunden werden.



grep '^[^#].*$' /etc/pam_ldap.conf
host 127.0.0.1
base dc=fleet,dc=loc
ldap_version 3
rootbinddn cn=admin,dc=fleet,dc=loc
pam_filter objectclass=posixAccount
pam_password crypt
nss_base_passwd ou=People,dc=fleet,dc=loc
nss_base_shadow ou=People,dc=fleet,dc=loc
nss_base_group ou=Group,dc=fleet,dc=loc




marvin:/# grep '^[^#].*$' /etc/libnss-ldap.conf
@(#)$Id: ldap.conf,v 2.41 2005/03/23 08:30:16 lukeh Exp $
host 127.0.0.1
base dc=fleet,dc=loc
ldap_version 3
rootbinddn cn=admin,dc=fleet,dc=loc
pam_filter objectclass=posixAccount
pam_password crypt
nss_base_passwdou=People,dc=fleet,dc=loc
nss_base_shadowou=People,dc=fleet,dc=loc
nss_base_group ou=Group,dc=fleet,dc=loc




marvin:/# grep '^[^#].*$' /etc/pam.d/common-*
/etc/pam.d/common-account:account sufficient pam_ldap.so debug
/etc/pam.d/common-account:account required pam_unix.so
/etc/pam.d/common-auth:auth sufficient pam_ldap.so debug
/etc/pam.d/common-auth:auth required pam_unix.so nullok_secure try_first_pass
/etc/pam.d/common-password:password sufficient pam_ldap.so debug
/etc/pam.d/common-password:password required pam_unix.so nullok obscure min=4 max=8 md5
/etc/pam.d/common-session:session required pam_unix.so




marvin:/# grep '^[^#].*$' /etc/ldap/ldap.conf
BASE dc=fleet, dc=loc
rootbinddn cn=admin,dc=fleet,dc=loc
pam_password crypt
nss_base_passed ou=People,dc=fleet,dc=loc
nss_base_shadow ou=People,dc=fleet,dc=loc
nss_base_group ou=Group,dc=fleet,dc=loc




marvin:/# grep '^[^#].*$' /etc/ldap/ldap.conf
BASE dc=fleet, dc=loc
rootbinddn cn=admin,dc=fleet,dc=loc
pam_password crypt
nss_base_passed ou=People,dc=fleet,dc=loc
nss_base_shadow ou=People,dc=fleet,dc=loc
nss_base_group ou=Group,dc=fleet,dc=loc




marvin:/# grep '^[^#].*$' /etc/ldap/slapd.conf
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema
schemacheck on
pidfile /var/run/slapd/slapd.pid
argsfile /var/run/slapd.args
loglevel 256
modulepath /usr/lib/ldap
moduleload back_bdb
backend bdb
checkpoint 512 30
database bdb
suffix "dc=fleet,dc=loc"
directory "/var/lib/ldap"
index objectClass eq
lastmod on
access to attrs=userPassword
by dn="cn=admin,dc=fleet,dc=loc" write
by anonymous auth
by self write
by * none
access to dn.base="" by * read
access to *
by dn="cn=admin,dc=fleet,dc=loc" write
by * read




marvin:/var/log# ldapsearch -x -D "cn=admin,dc=fleet,dc=loc" -W
Enter LDAP Password:
# extended LDIF
#
# LDAPv3
# base <> with scope sub
# filter: (objectclass=*)
# requesting: ALL
#

# fleet.loc
dn: dc=fleet,dc=loc
objectClass: top
objectClass: dcObject
objectClass: organization
o: fleet.loc
dc: fleet

# admin, fleet.loc
dn: cn=admin,dc=fleet,dc=loc
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword:: 12Nye4XBsfW55b0Y2pzeWfx4Sth3VEk=

# users, fleet.loc
dn: ou=users,dc=fleet,dc=loc
ou: users
objectClass: top
objectClass: organizationalUnit

# hosts, fleet.loc
dn: ou=hosts,dc=fleet,dc=loc
ou: hosts
objectClass: top
objectClass: organizationalUnit

# groups, fleet.loc
dn: ou=groups,dc=fleet,dc=loc
ou: groups
objectClass: top
objectClass: organizationalUnit

# People, fleet.loc
dn: ou=People,dc=fleet,dc=loc
ou: People
objectClass: top
objectClass: organizationalUnit

# Group, fleet.loc
dn: ou=Group,dc=fleet,dc=loc
ou: Group
objectClass: top
objectClass: organizationalUnit

# hoeglse, Group, fleet.loc
dn: cn=hoeglse,ou=Group,dc=fleet,dc=loc
objectClass: posixGroup
objectClass: top
cn: hoeglse
userPassword:: e2NyeXB0fXg=
gidNumber: 1000

# nagios, Group, fleet.loc
dn: cn=nagios,ou=Group,dc=fleet,dc=loc
objectClass: posixGroup
objectClass: top
cn: nagios
userPassword:: e2NyeXB0fXg=
gidNumber: 1001

# cmdgroup, Group, fleet.loc
dn: cn=cmdgroup,ou=Group,dc=fleet,dc=loc
objectClass: posixGroup
objectClass: top
cn: cmdgroup
userPassword:: e2NyeXB0fXg=
gidNumber: 1002

# web1, Group, fleet.loc
dn: cn=web1,ou=Group,dc=fleet,dc=loc
objectClass: posixGroup
objectClass: top
cn: web1
userPassword:: e2NyeXB0fXg=
gidNumber: 1003

# hoeglse, People, fleet.loc
dn: uid=hoeglse,ou=People,dc=fleet,dc=loc
uid: hoeglse
cn: hoeglse
sn: hoeglse
mail: hoeglse@fleet.loc
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 1000
gidNumber: 1000
homeDirectory: /home/hoeglse
gecos: hoeglse,,,
userPassword:: e2NyeXB0fTJwWEM5dHNCeHdERTY=
shadowLastChange: 13182

# nagios, People, fleet.loc
dn: uid=nagios,ou=People,dc=fleet,dc=loc
uid: nagios
cn: nagios
sn: nagios
mail: nagios@fleet.loc
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword:: e2NyeXB0fSQxJGVBQ2JwNURkJEVRMXVVa2I3amNsLkpJVDk0Uz NJRTA=
shadowLastChange: 13132
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 1001
gidNumber: 1001
homeDirectory: /home/nagios
gecos: ,,,

# web1, People, fleet.loc
dn: uid=web1,ou=People,dc=fleet,dc=loc
uid: web1
cn: web1
sn: web1
mail: web1@fleet.loc
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword:: e2NyeXB0fSQxJC50ZmI5eVlWJDZrWmU0RG0ueVB4b2J6bmliQU poeC4=
shadowLastChange: 13176
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 1003
gidNumber: 1003
homeDirectory: /home/web1
gecos: ,,,

# search result
search: 2
result: 0 Success

# numResponses: 15
# numEntries: 14




marvin:/# grep '^[^#].*$' /etc/nsswitch.conf
passwd: ldap compat
group: ldap compat
shadow: ldap compat
hosts: files dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis

Axion
06.02.06, 22:32
Ich konnte das Problem noch nicht lösen. Gentent passwd zeigt die vollständige Userliste (Passwd + Ldap).

Woran liegt es das ich beim bei su ein "I have no name!" als Usernamen in der Bash bekomme?

Das Problem mit "I have no name!" wurde durch ein chmod a+r libnss-ldap.conf behobten. Bleiben noch die Fehlermeldungen beim SSH Login.