[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