Client-Login über LDAP

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
zenon2000
Beiträge: 3
Registriert: 15.01.2015 23:54:40

Client-Login über LDAP

Beitrag von zenon2000 » 16.01.2015 00:38:14

Hallo,

ich bin etwas am verzweifeln. Seit einigen Tagen versuche ich erfolgreich, auf einem Test-Server den Client-Login über LDAP zu realisieren.
Zwar kann ich auf dem LDAP schreiben, suchen und z.B. mit dem LDAP Account Manager [1] darauf arbeiten - aber der SSH-Login funktioniert trotzdem nicht.

Auf dem Server läuft Wheezy.
So bin ich vorgegangen:
  • Installation OpenLDAP-Server: slapd & ldap-utils
  • statische Konfiguration mittels slapd.conf (siehe unten)
  • domain, und die organizationalUnit 'users', 'hosts', 'groups' eingetragen
  • pam_mkhomedir.so in /etc/pam.d/common-session eingetragen
  • Installation OpenLDAP-Client: libnss-ldap & libpam-ldap
  • in /etc/nsswitch.conf die Einträge 'passwd' und 'group' und 'ldap' ergänzt
  • in /etc/ldap/ldap.conf 'BASE' und 'URI' angepasst
  • Jetzt hab ich mich auf meinem lokalen Rechner mit dem LDAP Account Manager [1] am LDAP-Server eingeloggt, eine Gruppe (benutzer) und einen Benutzer (test1 inkl. Login Shell und Passwort) in dieser Gruppe erstellt
Von meinem lokalen Rechner kann ich das Kennwort des Testuser auch problemlos auslesen:

Code: Alles auswählen

ldapsearch -x -D 'cn=admin,dc=test,dc=meinserver,dc=de' -w geheim -H ldap://test.meinserver.de -b 'dc=test,dc=meinserver,dc=de' userPassword

Code: Alles auswählen

# extended LDIF
#
# LDAPv3
# base <dc=test,dc=meinserver,dc=de> with scope subtree
# filter: (objectclass=*)
# requesting: userPassword 
#

# test.meinserver.de
dn: dc=test,dc=meinserver,dc=de

# users, test.meinserver.de
dn: ou=users,dc=test,dc=meinserver,dc=de

# hosts, test.meinserver.de
dn: ou=hosts,dc=test,dc=meinserver,dc=de

# groups, test.meinserver.de
dn: ou=groups,dc=test,dc=meinserver,dc=de

# benutzer, groups, test.meinserver.de
dn: cn=benutzer,ou=groups,dc=test,dc=meinserver,dc=de

# Testi Tester, users, test.meinserver.de
dn: cn=Testi Tester,ou=users,dc=test,dc=meinserver,dc=de
userPassword:: e1NTSEF9Q3VTNU8xSnFEOGR5ekZRbzljd3BFWjBrczgxMVRtbEY=

# search result
search: 2
result: 0 Success

# numResponses: 7
# numEntries: 6
Doch der Login per SSH scheitert ("Permission denied, please try again."). Woran kann es liegen? Was mache ich falsch?

Auszug aus syslog:

Code: Alles auswählen

Jan 16 00:31:06 test slapd[18789]: conn=1002 fd=13 ACCEPT from IP=[::1]:40169 (IP=[::]:389)
Jan 16 00:31:06 test slapd[18789]: conn=1002 op=0 BIND dn="cn=admin,dc=test,dc=meinserver,dc=de" method=128
Jan 16 00:31:06 test slapd[18789]: conn=1002 op=0 BIND dn="cn=admin,dc=test,dc=meinserver,dc=de" mech=SIMPLE ssf=0
Jan 16 00:31:06 test slapd[18789]: conn=1002 op=0 RESULT tag=97 err=0 text=
Jan 16 00:31:06 test slapd[18789]: conn=1002 op=1 SRCH base="dc=test,dc=meinserver,dc=de" scope=2 deref=0 filter="(uid=test1)"
Jan 16 00:31:06 test slapd[18789]: <= bdb_equality_candidates: (uid) not indexed
Jan 16 00:31:06 test slapd[18789]: conn=1002 op=1 SEARCH RESULT tag=101 err=0 nentries=1 text=
Jan 16 00:31:06 test slapd[18789]: conn=1002 op=2 BIND anonymous mech=implicit ssf=0
Jan 16 00:31:06 test slapd[18789]: conn=1002 op=2 BIND dn="cn=Testi Tester,ou=users,dc=test,dc=meinserver,dc=de" method=128
Jan 16 00:31:06 test slapd[18789]: conn=1002 op=2 RESULT tag=97 err=49 text=
Jan 16 00:31:06 test slapd[18789]: conn=1002 op=3 BIND dn="cn=admin,dc=test,dc=meinserver,dc=de" method=128
Jan 16 00:31:06 test slapd[18789]: conn=1002 op=3 BIND dn="cn=admin,dc=test,dc=meinserver,dc=de" mech=SIMPLE ssf=0
Jan 16 00:31:06 test slapd[18789]: conn=1002 op=3 RESULT tag=97 err=0 text=
Auszug aus auth.log

Code: Alles auswählen

Jan 16 00:31:03 test sshd[18834]: Invalid user test1 from 178.25.44.26
Jan 16 00:31:03 test sshd[18834]: input_userauth_request: invalid user test1 [preauth]
Jan 16 00:31:06 test sshd[18834]: pam_unix(sshd:auth): check pass; user unknown
Jan 16 00:31:06 test sshd[18834]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=ipb2192c1a.dynamic.kabel-deutschland.de 
Jan 16 00:31:06 test sshd[18834]: pam_ldap: error trying to bind as user "cn=Testi Tester,ou=users,dc=test,dc=meinserver,dc=de" (Invalid credentials)
Jan 16 00:31:08 test sshd[18834]: Failed password for invalid user test1 from 178.25.44.26 port 57982 ssh2
Und last but not least meine slapd.conf

Code: Alles auswählen

# This is the main slapd configuration file. See slapd.conf for more
# info on the configuration options.

#######################################################################
# Global Directives:

# Features to permit
# allow bind_v2

# Schema and objectClass definitions
include         /etc/ldap/schema/core.schema
include         /etc/ldap/schema/cosine.schema
include         /etc/ldap/schema/nis.schema
include         /etc/ldap/schema/inetorgperson.schema

# Where the pid file is put. The init.d script
# will not stop the server if you change this.
pidfile         /var/run/slapd/slapd.pid

# List of arguments that were passed to the server
argsfile        /var/run/slapd/slapd.args

# Read slapd.conf(5) for possible values
loglevel        256

# Where the dynamically loaded modules are stored
modulepath    /usr/lib/ldap
moduleload    back_hdb

# The maximum number of entries that is returned for a search operation
sizelimit 500

# The tool-threads parameter sets the actual amount of cpu's that is used
# for indexing.
tool-threads 1

#######################################################################
# Specific Backend Directives for hdb:
# Backend specific directives apply to this backend until another
# 'backend' directive occurs
backend        hdb

#######################################################################
# Specific Backend Directives for 'other':
# Backend specific directives apply to this backend until another
# 'backend' directive occurs
#backend        <other>
#database config
#######################################################################
# Specific Directives for database #1, of type hdb:
# Database specific directives apply to this databasse until another
# 'database' directive occurs
database        hdb

# The base of your directory in database #1
suffix          "dc=test,dc=meinserver,dc=de"

# rootdn directive for specifying a superuser on the database. This is needed
# for syncrepl.
rootdn          "cn=admin,dc=test,dc=meinserver,dc=de"
rootpw          {SSHA}ZO5aNRAlclxxMO7aP8eF7NexncxUNQNF


# Where the database file are physically stored for database #1
directory       "/var/lib/ldap"

# The dbconfig settings are used to generate a DB_CONFIG file the first
# time slapd starts.  They do NOT override existing an existing DB_CONFIG
# file.  You should therefore change these settings in DB_CONFIG directly
# or remove DB_CONFIG and restart slapd for changes to take effect.

# For the Debian package we use 2MB as default but be sure to update this
# value if you have plenty of RAM
dbconfig set_cachesize 0 2097152 0

# Sven Hartge reported that he had to set this value incredibly high
# to get slapd running at all. See http://bugs.debian.org/303057 for more
# information.

# Number of objects that can be locked at the same time.
dbconfig set_lk_max_objects 1500
# Number of locks (both requested and granted)
dbconfig set_lk_max_locks 1500
# Number of lockers
dbconfig set_lk_max_lockers 1500
# Indexing options for database #1
index           objectClass eq

# Save the time that the entry gets modified, for database #1
lastmod         on

# Checkpoint the BerkeleyDB database periodically in case of system
# failure and to speed slapd shutdown.
checkpoint      512 30
[1] https://www.ldap-account-manager.org/
Zuletzt geändert von zenon2000 am 16.01.2015 09:43:42, insgesamt 1-mal geändert.

Benutzeravatar
habakug
Moderator
Beiträge: 4314
Registriert: 23.10.2004 13:08:41
Lizenz eigener Beiträge: MIT Lizenz

Re: Client-Login über LDAP

Beitrag von habakug » 16.01.2015 06:25:29

Hallo!

Code: Alles auswählen

# test.meinserver.de
dn: dc=test,dc=meinserver,dc=de

Code: Alles auswählen

# The base of your directory in database #1
suffix          "dc=mein,dc=testserver,dc=de"
Das würde mich ja stören (auch wenn hier das Suffix nicht so wichtig ist, könnte auch an anderer Stelle so ein Dreher drin sein.). Aber wenn du sagst es funktioniert...

Code: Alles auswählen

sshd[18834]: Failed password for invalid user test1
Dein ssh kennt keinen User "test1". Leg doch mal einen an:

Code: Alles auswählen

# adduser test1 --disabled-password
Gruss, habakug
( # = root | $ = user | !! = mod ) (Vor der PN) (Debianforum-Wiki) (NoPaste)

zenon2000
Beiträge: 3
Registriert: 15.01.2015 23:54:40

Re: Client-Login über LDAP

Beitrag von zenon2000 » 16.01.2015 09:56:59

Hallo habakug,

danke!

Vor dem Posting hatte ich meine Server-Adresse hier maskiert - dabei hat sich der suffix-Dreher eingeschlichen. Pardon.
In der richtigen Konfiguration ist er jedenfalls nicht enthalten. Auch habe ich mein erstes Posting entsprechend geändert.

Code: Alles auswählen

# adduser test1 --disabled-password
Hm, ich möchte ja aber, dass ssh die Login-Daten aus der LDAP bezieht. Mit adduser lege ich ja "richtige" Logins an, oder?
Außerdem zeigen die Auszüge aus syslog und auth.log, dass der Login test1 scheinbar korrekt in cn=Testi Tester,ou=users,dc=test,dc=meinserver,dc=de aufgelöst wird. Das legt mir die Vermutung nahe, dass der Passwort-Check nicht funktioniert. Oder liege ich falsch?

Besten Gruß,
Zenon

uname
Beiträge: 12475
Registriert: 03.06.2008 09:33:02

Re: Client-Login über LDAP

Beitrag von uname » 16.01.2015 11:00:10

Ich habe LDAP lange nicht genutzt. Aber mit

Code: Alles auswählen

getent passwd
getent shadow
getent group
kannst du mal schauen ob der Benutzer in der Benutzerverwaltung überhaupt bekannt ist. Auch bin ich mir nicht sicher, welche genauen Änderungen in /etc/pam.d/common-session bzw. /etc/pam.d/sshd vorgenommen werden müssen. Vielleicht kannst du diese Einträge auch noch mal posten. Der adduser-Befehl macht Sinn, wenn der Benutzer zwar lokal vorhanden, jedoch nur das Passwort z.B. über LDAP geprüft werden soll. Würde ich aber mal von abraten in diesem Fall.

Benutzeravatar
habakug
Moderator
Beiträge: 4314
Registriert: 23.10.2004 13:08:41
Lizenz eigener Beiträge: MIT Lizenz

Re: Client-Login über LDAP

Beitrag von habakug » 16.01.2015 17:17:51

Hallo!

Hier [1] ist beschrieben was (auf dem Client) getan werden muß.

Gruss, habakug

[1] https://www.digitalocean.com/community/ ... -12-04-vps
( # = root | $ = user | !! = mod ) (Vor der PN) (Debianforum-Wiki) (NoPaste)

zenon2000
Beiträge: 3
Registriert: 15.01.2015 23:54:40

Re: Client-Login über LDAP

Beitrag von zenon2000 » 16.01.2015 20:06:41

Danke habakug, und Danke uname,
Beim Durchblick der Anleitung ist mir aufgefallen, dass ich zwar ldap neugestartet hatte, aber nicht nscd. Nach dessen Restart geht es nun.

Vielen Dank für eure freundliche Unterstützung!

LG, Zenon

Antworten