[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: LDAP: Neues Passwort erzwingen



Willi Geffers wrote:

Hallo Michael,

danke fuer den Tipp. Nachdem ich in der /etc/ldap.secret das Passwort
fuer den Admin gesetzt und in der /etc/pam_ldap.conf noch den Eintrag
rootbinddn cn=admin,dc=rbi,dc=informatik,dc=rwth-aachen,dc=de
hinzugefuegt habe, verhaelt sich LDAP wie gewuenscht:

Laeuft ein Passwort ab, wird der User beim Einloggen gewarnt. Ist es
abgelaufen, wird ein neues Passwort verlangt. Setze ich als root mit
passwd das Passwort eines Users, muss ich nicht mehr das bisherige
Passwort des Users eingeben. Es ist auch nicht mehr notwendig, dem User
Schreibrechte auf shadowLastChange zu geben.

In der ldap.secret musste ich das Passwort fuer den admin in Klartext
eintragen. Alle Versuche, dort ein mit slappasswd verschluesseltes
Passwort einzutragen, sind bisher gescheitert. Die Datei ist aber nur
fuer root lesbar, so dass ich erst einmal damit leben kann.

Nochmals Danke
Willi


Hallo Willi,

das Problem mit dem unverschlüsselten admin Passwort hat mich auch gestört. Es darf aber nicht gehasht sein, da ja passwd dieses Passwort braucht um sich damit gegen den LDAP server zu authentifizieren.

Ea gibt aber eine Möglichkeit, das ganze ein "bisschen" sicherer zu machen.
Lege einen neues Admin Objekt an (ich verwende dafür simpleSecurityObject und organizationRole) und nenne ihn z.B. cn=passadmin,dc=dc=demo,dc=de. Sein Password kannst du über das userPassword Attribut setzen.
Nun müssen noch die ACLs in slapd.conf geändert werden.

access to dn="cn=admin,dc=demo,dc=de"
        by dn="cn=admin,dc=demo,dc=de"
        by * none (oder auch read wenn du möchtest)

access to attribute=userPassword
        by dn="cn=admin,dc=demo,dc=de" write
        by dn="cn=passadmin,dc=demo,dc=de" write
        by anonymous auth
        by self write
        by * none

access to attribute=shadowLastChange
        by dn="cn=admin,dc=demo,dc=de" write
        by dn="cn=passadmin,dc=demo,dc=de" write
        by * read

# The admin dn has full write access
access to *
        by dn="cn=admin,dc=demo,dc=de" write
        by * read


Ändere nun noch das rootbinddn in /etc/pam_ldap.conf auf
cn=passadmin,dc=dc=demo,dc=de ab.
Und trage in /etc/ldap.secret das Passwort von passadmin ein.
Gerät nun das Passwort in /etc/ldap.secret in falsche Hände kann derjenige höchstens die Passwörter der normalen User neu setzen (was zugebenermassen noch schlimm genug ist). Die erste Regel verhindert, dass der Angreifer das Passwort von admin neu setzt und er somit wieder vollen Zugriff auf das LDAP Verzeichnis hat.

Diese ganze Idee kam mir gerade eher spontan, so dass sie vielleicht/wahrscheinlich noch etwas Raum für Verbesserungen lässt.

Gruss,
Michael
--
------------------------------------------------------------
E-Mail: biebl@teco.edu
WWW: http://www.teco.edu/

TecO (Telecooperation Office) Vincenz-Priessnitz-Str.1
University of Karlsruhe 76131 Karlsruhe, Germany
------------------------------------------------------------



Reply to: