[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Frage zu LDAP
[Thread Prev] | [Thread Next]
- Subject: Re: Frage zu LDAP
- From: Markus Hochholdinger <Markus@xxxxxxxxxxxxxxxxx>
- Date: Thu, 19 Apr 2007 21:42:04 +0200
- To: uugrn@xxxxxxxxxxxxxxx
Hi, Am Dienstag, 17. April 2007 19:41 schrieb Sebastian Laubscher: > On 17.04.2007 17:58 Uhr, "Markus Hochholdinger" <Markus@xxxxxxxxxxxxxxxxx> > wrote: > > Wenn Interesse besteht kann ich auch mal eine (Beispiel-)Konfiguration > > (slpad.conf und ldif) wie ich sie normalerweise umsetze hier posten. > Wuerde mich sehr interessieren. Danke. hier kommts (slpad.conf und tree.ldif). Zu beachten ist, dass ich ACLs in der slapd.conf setzen wobei LDAP-Gruppen verwendet werden. Dadurch kann ich durch einfache Gruppenzuweisungen praktisch Rechte vergeben. Diese LDAP-Gruppen sind aber leider nicht mit den normalen (Unix) Gruppen kompatibel. Ich denke vorallem in die ACLs rentiert es sich ein bischen Zeit zu investieren. In der slapd.conf habe ich auch noch zwei LDAP-Slaves (ueber replica) definiert. Ausserdem lasse ich uebers Netz nur TLS zu, aber der Server selbst darf unverschluesselt. Das ist dann praktisch wenn man eine lokale Applikation hat die weder ssl noch tls unterstuetzt. Und anonymen Zugriff habe ich auch soweit moeglich eingeschraenkt und dafuer einen search-Benutzer angelegt. Bei den meisten LDAP-Anwendungen fuer die Authentifizierung kann man dann so einen search-Benutzer angeben, damit die Anwendung auch nach Benutzern suchen kann. Achja, die index-Zeilen sind auch sehr wichtig um die Geschwindigkeit beim Suchen zu erhoehen. Noch etwas, wie ich Benutzer/Gruppen anlege. In meinem Beispiel hat der Benutzer mh auch eine Gruppe mh, welche ich unterhalb des Benutzers anlege. Genau umgekehrt fuer die Gruppe mhcodi, welche einen Benutzer unterhalb hat. (Ich habe immer gerne ein Benutzer/Gruppen-Paar mit derselben ID. Man weiss nie wofuer man das spaeter benoetigt.) Ich finde dadurch steigt die Uebersichtlichkeit wenn man mit einem LDAP-Browser die Eintraege in der Baumstruktur anschaut. > Ansonsten stimm ich Deinen Erfahrungen durchweg zu - Verzweigungen sind > toll, werden aber auf Dauer unuebersichtlich - sofern man sie nicht > dringend braucht. Genau. Und eigentlich gibt es ja keinen Grund eine bestimmte Struktur im LDAP zu verwenden. Einzig praktisch ist die Baumstruktur wenn man rechte vergibt. Wobei man die Rechte natuerlich auch auf Attribute vergeben kann, wird aber sehr schnell unuebersichtlich. Gibt es hier eigentlich sonst noch Leute die Erfahrung mit LDAP gemacht haben? -- Gruss \|/ eMHa (o o) ------------------------------------------------------oOO--U--OOo-- Markus Hochholdinger e-mail mailto:Markus@xxxxxxxxxxxxxxxxx .oooO www http://www.hochholdinger.net ( ) Oooo. ------------------------------------------------------\ (----( )- \_) ) / (_/ dn: dc=mhcodi,dc=com objectClass: top objectClass: dcObject objectClass: organization o: MHCoDi dc: mhcodi dn: ou=people,dc=mhcodi,dc=com ou: people objectClass: organizationalUnit objectClass: top dn: ou=groups,dc=mhcodi,dc=com ou: groups objectClass: organizationalUnit objectClass: top dn: ou=machines,dc=mhcodi,dc=com ou: machines objectClass: organizationalUnit objectClass: top dn: ou=contacts,dc=mhcodi,dc=com ou: contacts objectClass: organizationalUnit objectClass: top dn: ou=roaming,dc=mhcodi,dc=com ou: roaming objectClass: organizationalUnit objectClass: top dn: ou=system,dc=mhcodi,dc=com ou: system objectClass: organizationalUnit objectClass: top dn: cn=ldap-admin,ou=system,dc=mhcodi,dc=com cn: ldap-admin objectClass: groupOfNames objectClass: top member: uid=root,ou=system,dc=mhcodi,dc=com member: uid=mh,ou=people,dc=mhcodi,dc=com dn: uid=search,ou=system,dc=mhcodi,dc=com uid: search objectClass: account objectClass: simpleSecurityObject objectClass: top dn: uid=replica,ou=system,dc=mhcodi,dc=com uid: replica objectClass: account objectClass: simpleSecurityObject objectClass: top dn: cn=ldap-contacts-read,ou=system,dc=mhcodi,dc=com cn: ldap-contacts-read member: uid=root,ou=system,dc=mhcodi,dc=com objectClass: groupOfNames objectClass: top dn: cn=ldap-contacts-write,ou=system,dc=mhcodi,dc=com cn: ldap-contacts-write member: uid=root,ou=system,dc=mhcodi,dc=com objectClass: groupOfNames objectClass: top dn: uid=root,ou=system,dc=mhcodi,dc=com gidNumber: 0 homeDirectory: /root sn: God uid: root uidNumber: 0 objectClass: inetOrgPerson objectClass: person objectClass: posixAccount objectClass: shadowAccount objectClass: top loginShell: /bin/bash shadowMin: -1 shadowMax: 999999 shadowWarning: 7 shadowInactive: -1 shadowExpire: -1 shadowFlag: 0 givenName: Master cn: Master God shadowLastChange: 13500 dn: uid=mh,ou=people,dc=mhcodi,dc=com objectClass: top objectClass: person objectClass: inetOrgPerson objectClass: posixAccount objectClass: shadowAccount uid: mh loginShell: /bin/bash homeDirectory: /home/mh cn: Markus Hochholdinger givenName: Markus sn: Hochholdinger uidNumber: 2000 gidNumber: 2000 shadowMin: -1 shadowMax: 999999 shadowWarning: 7 shadowInactive: -1 shadowExpire: -1 shadowFlag: 0 dn: cn=mh,uid=mh,ou=people,dc=mhcodi,dc=com objectClass: top objectClass: posixGroup cn: mh gidNumber: 2000 description:: R3J1cHBlIGbDvHIgQmVudXR6ZXIgbWg= memberUid: mh dn: cn=mhcodi,ou=groups,dc=mhcodi,dc=com objectClass: top objectClass: posixGroup cn: mhcodi gidNumber: 10000 description: Gruppe mhcodi memberUid: mhcodi memberUid: mh dn: uid=mhcodi,cn=mhcodi,ou=groups,dc=mhcodi,dc=com objectClass: top objectClass: person objectClass: inetOrgPerson objectClass: posixAccount objectClass: shadowAccount uid: mhcodi cn:: QmVudXR6ZXIgZsO8ciBHcnVwcGUgbWhjb2RpCg== givenName:: QmVudXR6ZXIgZsO8ciBHcnVwcGU= sn: mhcodi loginShell: /bin/false homeDirectory: /nonexistent uidNumber: 10000 gidNumber: 10000 userPassword:: e0NSWVBUfSo= shadowMin: -1 shadowMax: 999999 shadowWarning: 7 shadowInactive: -1 shadowExpire: -1 shadowFlag: 0 # This is the main slapd configuration file. See slapd.conf(5) 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 include /etc/ldap/schema/evolutionperson.schema include /etc/ldap/schema/samba.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 0 # Where the dynamically loaded modules are stored modulepath /usr/lib/ldap moduleload back_bdb # 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 # TLS TLSCertificateFile /etc/ldap/ssl/cert.pem TLSCertificateKeyFile /etc/ldap/ssl/key.pem TLSCACertificateFile /etc/ssl/certs/cacert.pem password-hash {CRYPT} password-crypt-salt-format "$1$%s" ####################################################################### # Specific Backend Directives for bdb: # Backend specific directives apply to this backend until another # 'backend' directive occurs backend bdb checkpoint 512 30 ####################################################################### # Specific Backend Directives for 'other': # Backend specific directives apply to this backend until another # 'backend' directive occurs #backend <other> ####################################################################### # Specific Directives for database #1, of type bdb: # Database specific directives apply to this databasse until another # 'database' directive occurs database bdb # The base of your directory in database #1 suffix "dc=mhcodi,dc=com" # rootdn directive for specifying a superuser on the database. This is needed # for syncrepl. # rootdn "cn=admin,dc=mhcodi,dc=com" # Where the database file are physically stored for database #1 directory "/var/lib/ldap" # 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 134217728 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 ## Index attributes which values should be unique. index uid,uidNumber,gidNumber pres,eq ## Index normal attributes. index ou,cn,givenName,sn pres,eq,approx,sub index description,mail pres,eq,approx,sub # Save the time that the entry gets modified, for database #1 lastmod on # Where to store the replica logs for database #1 replogfile /var/lib/ldap/replog replica uri=ldap://10.1.2.3:389 starttls=yes binddn="uid=replica,ou=system,dc=mhcodi,dc=com" bindmethod=simple credentials=myverysecurepassword replica uri=ldap://10.1.2.4:389 starttls=yes binddn="uid=replica,ou=system,dc=mhcodi,dc=com" bindmethod=simple credentials=myverysecurepassword ######################################## # Access Control begin # # Only allow unencrypted connections from myself or encrypted connections # from everywhere, but nothing else. access to * by peername.ip=127.0.0.1 none break by peername.ip=10.1.2.1 none break by ssf=128 * none break by * none # Members of the group ldap-admin (groupOfNames) have full write access, # everyone else is covered by access rules below. access to * by group="cn=ldap-admin,ou=system,dc=mhcodi,dc=com" write by * none break # The userPassword by default can be changed # by the entry owning it if they are authenticated. # Others should not be able to see it, except the members # of the group ldap-admin (groupOfNames). access to attrs=userPassword by anonymous auth by self write by * none # Ensure read access to the base for things like # supportedSASLMechanisms. Without this you may # have problems with SASL not knowing what # mechanisms are available and the like. # Note that this is covered by the 'access to *' # ACL below too but if you change that as people # are wont to do you'll still need this if you # want SASL (and possible other things) to work # happily. access to dn.base="" by * read # Ensure read access to the schema and objectClass definitions. access to dn.exact="cn=Subschema" by users read by * none # Everyone has read access to our base. access to dn.base="dc=mhcodi,dc=com" by * read # Access rules for the global contacts. access to dn.subtree="ou=contacts,dc=mhcodi,dc=com" by group="cn=ldap-contacts-write,ou=system,dc=mhcodi,dc=com" write by group="cn=ldap-contacts-read,ou=system,dc=mhcodi,dc=com" read by * none # Access rules for private roaming. All authenticated users can see roaming. access to dn.base="ou=roaming,dc=mhcodi,dc=com" by users read by * none # Users in ou=people can see their own roaming entry. access to dn.regex="^ou=([^,]+),ou=roaming,dc=mhcodi,dc=com$" by dn.exact,expand="uid=$1,ou=people,dc=mhcodi,dc=com" read by * none # Users in ou=people can write entries below their own roaming entry. access to dn.regex="^.*,ou=([^,]+),ou=roaming,dc=mhcodi,dc=com$" by dn.exact,expand="uid=$1,ou=people,dc=mhcodi,dc=com" write by * none # Access rules for the search user. The search user is only allowed to read # the entry name, cn, uid, uidNumber, gidNumber, memberUid, homeDirectory, # loginShell, shadowExpire, shadowFlag, shadowInactive, shadowMax, shadowMin, # shadowWarning. access to * attrs=entry,cn,uid,uidNumber,gidNumber,memberUid,homeDirectory,loginShell,shadowExpire,shadowFlag,shadowInactive,shadowMax,shadowMin,shadowWarning by dn="uid=search,ou=system,dc=mhcodi,dc=com" read by * none break # The search user is allowed to search all. access to * by dn="uid=search,ou=system,dc=mhcodi,dc=com" search by * none break # # Access Control end ######################################## ####################################################################### # Specific Directives for database #2, of type 'other' (can be bdb too): # Database specific directives apply to this databasse until another # 'database' directive occurs #database <other> # The base of your directory for database #2 #suffix "dc=debian,dc=org" -- http://mailman.uugrn.org/mailman/listinfo/uugrn