LDAP
From Smop.co.uk
Lots to say here really but there is a large amount of explanation required around the settings. This will be the third time I've setup LDAP and each time I've learnt something. At the moment I'll just dump my current config files.
TODO: Fill this section in!
There are three sections here:
- LDAP master
- LDAP slave
- LDAP client
[edit]
LDAP master
/etc/ldap/slapd.conf
# 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
# For TLS/SSL
TLSCACertificateFile /etc/ssl/certs/ca.crt
TLSCertificateFile /etc/ssl/certs/ldap.crt
# must be readable by openldap user
TLSCertificateKeyFile /etc/ssl/private.ldap/ldap.key
# Require no encryption of data
# Require 63-bit encryption for simple bind (login)
# Require 112-bit (3DES or better) encryption for updates
#security ssf=1 update_ssf=112 simple_bind=64
# all data must be encrypted too
security ssf=64 update_ssf=112 simple_bind=64
# 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
# SSH public key patch
include /etc/ldap/schema/openssh-lpk.schema
# Sudo LDAP
include /etc/ldap/schema/sudorole.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 224
loglevel 0
# Where the dynamically loaded modules are stored
modulepath /usr/lib/ldap
# hdb is recommended over bdb
moduleload back_hdb
# log all changes
moduleload auditlog
overlay auditlog
auditlog /var/log/slapd-audit.log
# uniqueness
moduleload unique
overlay unique
unique_base "ou=People,dc=smop,dc=co,dc=uk"
unique_attributes uidNumber
# 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 bdb:
# Backend specific directives apply to this backend until another
# 'backend' directive occurs
backend hdb
#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 hdb
# The base of your directory in database #1
suffix "dc=smop,dc=co,dc=uk"
# rootdn directive for specifying a superuser on the database. This is needed
# for syncrepl.
# rootdn "uid=syncrepl,ou=Services,dc=smop,dc=co,dc=uk"
# 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 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
index uid eq
# Extra indexes for syncing
index entryCSN eq
index entryUUID eq
# 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
# 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
# admin entry below
# These access lines apply to database #1 only
access to attrs=userPassword,shadowLastChange
by dn="cn=admin,dc=smop,dc=co,dc=uk" write
by anonymous auth
by dn="uid=syncrepl,ou=Services,dc=smop,dc=co,dc=uk" read
by self write
by * none
access to dn.base="ou=Sudoers,dc=smop,dc=co,dc=uk"
by dn="cn=admin,dc=smop,dc=co,dc=uk" write
by dn="uid=syncrepl,ou=Services,dc=smop,dc=co,dc=uk" read
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
# The admin dn has full write access, everyone else
# can read everything.
# Update: we disallow anonymous reads of _any_ attributes
# apps must bind using "nss" user instead
# Replicas can also talk to us
access to *
by dn="cn=admin,dc=smop,dc=co,dc=uk" write
by users read
# by * read
# allow server to send updates to slaves
moduleload syncprov
overlay syncprov
syncprov-checkpoint 100 10
syncprov-sessionlog 100
syncprov-reloadhint TRUE
# For Netscape Roaming support, each user gets a roaming
# profile for which they have write access to
#access to dn=".*,ou=Roaming,o=morsnet"
# by dn="cn=admin,dc=smop,dc=co,dc=uk" write
# by dnattr=owner write
#######################################################################
# 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"
[edit]
LDAP slave
/etc/ldap/slapd.conf:
# 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
# For TLS/SSL
TLSCACertificateFile /etc/ssl/certs/ca.crt
TLSCertificateFile /etc/ssl/certs/ldap1.crt
# must be readable by openldap user
TLSCertificateKeyFile /etc/ssl/private.ldap/ldap1.key
# Require no encryption of data
# Require 63-bit encryption for simple bind (login)
# Require 112-bit (3DES or better) encryption for updates
#security ssf=1 update_ssf=112 simple_bind=64
# all data must be encrypted too
security ssf=64 update_ssf=112 simple_bind=64
# 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
# SSH public key patch
include /etc/ldap/schema/openssh-lpk.schema
# Sudo LDAP
include /etc/ldap/schema/sudorole.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 224
loglevel 0
# Where the dynamically loaded modules are stored
modulepath /usr/lib/ldap
# hdb is recommended over bdb
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 bdb:
# Backend specific directives apply to this backend until another
# 'backend' directive occurs
backend hdb
#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 hdb
# The base of your directory in database #1
suffix "dc=smop,dc=co,dc=uk"
# rootdn directive for specifying a superuser on the database. This is needed
# for syncrepl.
rootdn "uid=syncrepl,ou=Services,dc=smop,dc=co,dc=uk"
# retry every 60s 10x, then every 5mins indefinitely
syncrepl rid=100
provider=ldap://ldap.smop.co.uk
type=refreshAndPersist
interval=00:00:00:60
retry="60 10 300 +"
timelimit=10
searchbase="dc=smop,dc=co,dc=uk"
updatedn="cn=Replication,dc=smop,dc=co,dc=uk"
binddn="uid=syncrepl,ou=Services,dc=smop,dc=co,dc=uk"
bindmethod=simple
credentials=magicpassword
starttls=critical
# refer updates to master
updateref ldap://ldap.smop.co.uk
# 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 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
index uid eq
# Extra indexes for syncing
index entryCSN eq
index entryUUID eq
# 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
# 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
# admin entry below
# These access lines apply to database #1 only
access to attrs=userPassword,shadowLastChange
by dn="cn=admin,dc=smop,dc=co,dc=uk" write
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
# The admin dn has full write access, everyone else
# can read everything.
# Update: we disallow anonymous reads of _any_ attributes
# apps must bind using "nss" user instead
# Replicas can also talk to us
access to *
by dn="cn=admin,dc=smop,dc=co,dc=uk" write
by users read
# by * read
# For Netscape Roaming support, each user gets a roaming
# profile for which they have write access to
#access to dn=".*,ou=Roaming,o=morsnet"
# by dn="cn=admin,dc=smop,dc=co,dc=uk" write
# by dnattr=owner write
#######################################################################
# 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"
[edit]
LDAP client
Lots of files here. I think they aren't too helpful without the explanation.
