PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LDAP Endspurt



masa069
22.07.08, 15:44
Hallo,

nach zahlreichen, äusserst lehrreichen Hirnblutungen habe ich meinen LDAP-Server wohl fast soweit mir zu Willen zu sein.

Ziel ist (erstmal) die Anmeldung über ssh. Leider liefert mir "getent passwd" nur meine lokalen user zurück, nicht den Testuser, den ich im LDAP angelegt habe.

Die Migrationtools habe ich erfolgreich durchlaufen lassen, ldapsearch gibt mir auch die Daten aus.

Beim Anlegen eines testusers in ldap bin ich folgendermaßen vorgegangen:

Nach der erfolgreichen Migration habe ich mir gedacht, dass es ja funktionieren sollte einfach einen Useraccount aus dem erstellten passwd.ldif file in eine neue ldif zu kopieren, entsprechend anzupassen und mit ldapadd hinzu zufügen. Dabei bin ich auf folgendes Phänomen gestossen:




dn: uid=user,ou=People,dc=ldap,dc=local
uid: user
cn:: dXNlcg==
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}$1$qU30rrEV$oYrDoO1B2fB.RjCYvrPtk/
shadowLastChange: 14081
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 1000
gidNumber: 1000
homeDirectory: /home/user
gecos: user,,,



cn:: dXNlcg== <---- warum/wie ist das veschlüsselt? Wie kann ich einen solchen Schlüssel erzeugen? Ist das notwendig?

Mit Apache Directory Studio, welches ich als LDAP Browser benutze, bekomme ich diese Einträge unverschlüsselt angezeigt, d.h. in diesem Fall dann halt "cn: user" - genau so ist es mit ldapsearch.

Ich habe dann den Versuch unternommen, diesen Eintrag im Klartext vorzunehmen und dann per ldif in die Datenbank zu schreiben:




dn: uid=ldaptester,ou=People,dc=ldap,dc=local
uid: ldaptester
cn: ldaptester
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}$1$qU30rrEV$oYrDoO1B2fB.RjCYvrPtk/
shadowLastChange: 14081
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 1234
gidNumber: 1234
homeDirectory: /home/ldaptester
gecos: ldaptester,,,



Wie gesagt zeigt mir getent passwd diesen User nicht an. Liegt das an dieser Verschlüsselung? Oder ist doch noch etwas mit den folgenden configs nicht in Ordnung?


/etc/nsswitch.conf:




passwd: files ldap
group: files ldap
shadow: files ldap

hosts: files dns
networks: files

protocols: db files
services: db files
ethers: db files
rpc: db files

netgroup: nis



/etc/pam.d/common-account




account sufficient pam_ldap.so
account required pam_unix.so use_first_pass




/etc/pam.d/common-auth




auth sufficient pam_ldap.so
auth required pam_unix.so nullok_secure use_first_pass




/etc/pam.d/common-password




password sufficient pam_ldap.so
password required pam_unix.so use_first_pass




/etc/pam.d/common-session




session sufficient pam_ldap.so
session required pam_unix.so use_first_pass
session required pam_mkhomedir.so skel=/etc/skel umask=0022



/etc/ldap/ldap.conf (gelinkt zu /etc/pam_ldap.conf u. /usr/share/libpam-ldap/ldap.conf)




HOST 127.0.0.1
BASE dc=ldap,dc=local

nss_base_passwd ou=People,dc=ldap,dc=local
nss_base_shadow ou=People,dc=ldap,dc=local
nss_base_group ou=Group,dc=ldap,dc=local
bind_policy soft



Tja, bis hierhin hab ich mich alleine durchgebissen, aber trotz zahlreicher Stunden mit Google und dem Lesen dutzender Threads hier bin ich jetzt an einem Punkt wo ich glaube ich alleine nicht weiterkomme...

Bin also für jede Hilfe dankbar! :-)

EDIT:

Ich hätte wohl noch erwähnen sollen, das die Anmeldung per ssh mit den migrierten Usern wunderbar klappt, nur mit neuem (reinen LDAP) -user gehts noch nicht...

Zumindest schliesse ich das aus der Ausgabe in /var/log/auth.log:




Jul 22 14:57:04 ldap sshd[2135]: Accepted password for root from 192.168.1.10 port 2870 ssh2
Jul 22 14:57:21 ldap sshd[2144]: Accepted password for root from 192.168.1.10 port 2872 ssh2
Jul 22 14:57:52 ldap sshd[2152]: Invalid user ldaptester from 192.168.1.11
Jul 22 14:57:52 ldap sshd[2152]: Failed none for invalid user ldaptester from 192.168.1.11 port 4582 ssh2

hessijens
22.07.08, 18:00
Das Deine ldap.conf und Deine slapd.conf fehlen und ich bisher keinen Fehler finden kann prüfe doch mal ob Du mit den "Zugangsdaten" der ldap.conf auch auf die Inhalte des Ldapservers zugreifen darfst. Was pam_ldap nicht lesen/prüfen darf kann pam_ldap auch nicht vergleichen. Ich vermute nämlich, das pam_ldap keine Antworten auf Seine Anfragen erhält, da getent passwd nur die lokalen Benutzer listet.

Benutzt Du anonymous sollte mindestens sowas in slapd.conf stehen:

access to attrs=userPassword
by self write
.....
by anonymous auth

Natärlich kannst Du auch einen Benutzer bestimmen, der die Attribute lesen darf und sein Passwort in "ldap.secret"? ablegen (siehe "man ldap.conf" bzw. man slapd.conf"). Die übrigen Attribute wie cn,uid.... muss pam_ldap natürlich auch lesen können. Vielleicht mit einem:


access to *
by self write
.....
by anonymous read


Bedenke aber, das damit jeder den Inhalt des Ldap Server lesen darf. Damit dies kein Sicherheitsrisiko ist musst Du voher die reslevanten Daten wie Passworter entsprechend schützen (wie oben z.B.: )!