LDAP

Grundkonfiguration

Um den LDAP-Server in Betrieb zu nehmen sind folgende Schritte nötig:

  1. In /etc/openldap/slapd.conf werden der suffix (Start des Verwaltungsbereiches des Servers), der rootdn (LDAP-Objekt mit administrativen Rechten) und das rootpw (Passwort für den rootdn) eingetragen. Das Passwort wird mit dem Befehl slappasswd generiert und muß in die Datei kopiert werden. Klartext ist zwar auch möglich, aber nicht zu empfehlen.
    suffix          "dc=example,dc=com"
    rootdn          "cn=ldapadmin,dc=example,dc=com"
    rootpw          {SSHA}CX70Gw6c9AsR0eAegGKFoldEyc3zq944
    
  2. Den slapd starten und in den Runleveln verankern.
  3. Für die Client-Befehle in der Datei /etc/openldap/ldap.conf die Basis des Ldap-Servers und die URL des Servers eintragen
    BASE    dc=example,dc=com
    URI     ldap://ldap1.example.com
    
  4. LDIF-Datei (basis.ldif) mit den Basiseinträgen generieren.
    dn: dc=example,dc=com
    objectClass: organization
    objectClass: dcObject
    dc: example
    o: Demmer-Consult
    description: Basis des LDAP Baumes
    
    dn: ou=people,dc=example,dc=com
    objectclass: organizationalUnit
    ou: people
    
  5. LDIF-Daten in den Server einspielen:
    # ldapadd -x -W -D "cn=ldapadmin,dc=example,dc=com" -f basis.ldif -v
    
  6. Kontrolle des ganzen:
    # ldapsearch -x
    
    Sollte nun die eben eingespielten Datenobjekte anzeigen.

SASL

Auf dem Server

In /etc/openldap/slapd.conf die Einträge für den SASL-Server und das Mapping von SASL-Namen auf DNs definieren. Für das Digest-MD5-Verfahren muß im LDAP-Server das Klartext-Passwort hinterlegt sein.

sasl-host localhost
sasl-regexp
        uid=(.*),cn=digest-md5,cn=auth
        ldap:///ou=people,dc=example,dc=com??sub?(uid=$1)
password-hash {CLEARTEXT}
Auf dem Client

Die Datei /etc/saslauthd.conf erstellen:

ldap-servers: ldap://ldap.example.com
ldap_search_base: dc=example,dc=com

in /etc/init.d/saslauthd das Runlevel-Skript anpassen. Bsp.(SuSE 9.2):

start)
echo -n "Starting service saslauthd"
/sbin/startproc $AUTHD_BIN -a $SASLAUTHD_AUTHMECH \
 -O /etc/saslauthd.conf > /dev/null 2>&1

Bei SuSE in der Datei /etc/sysconfig/saslauthd SASLAUTHD_AUTHMECH=ldap eintragen. Den saslauthd starten (rcsaslauthd start) und in den Runleveln verankern (insserv saslauthd).

TLS

Für TLS wird mit openssl im ersten Schritt ein selbstsigniertes Zertifikat der Zertifizierungsstelle erzeugt. Dann wird das Key-Paar für den Server und ein Certification-Signing-Request erstellt. Im dritten Schritt wird ein von der Zertifizierungsstelle unterschriebenes Server-Zertifikat erstellt.

Wichtig ist bei den Angaben, die abgefragt werden, für das Server-Certification-Signing-Request beim Common Name (cn) den FQDN des Servers einzutragen! Ansonsten wird das Zertifikat später von den Clients nicht akzeptiert.

ldap1:/ # cd /etc/openldap/
ldap1:/etc/openldap # openssl req -x509 -newkey \
  rsa:1024 -keyout ldapCA.key -out ldapCA.crt
ldap1:/etc/openldap # openssl req -new -nodes \
  -keyout ldapServer.key -out ldapServer.csr
ldap1:/etc/openldap # openssl x509 -req -days 365 \
  -in ldapServer.csr -CA ldapCA.crt -CAkey ldapCA.key \
  -CAcreateserial -out ldapServer.crt

Auf dem Server wird in der /etc/openldap/slapd.conf der Server-Key, das Server-Zertifikat und das Zertifikat der CA (zur Überprüfung von Client-Zertifikaten) bekannt gemacht.

TLSCertificateFile /etc/openldap/ldapServer.crt
TLSCertificateKeyFile /etc/openldap/ldapServer.key
TLSCACertificateFile /etc/openldap/ldapCA.crt

# Client darf sich mit Zertifikat ausweisen
TLSVerifyClient allow

Auf dem Client wird das Zertifikat der Zertifizierungsstelle (CA) kopiert. Dann wird in der Datei /etc/openldap/ldap.conf der Pfad zum Zertifikat der CA eingetragen. Der Client verlangt vom Server sich mit einem gültigen Zertifikat auszuweisen.

TLS_REQCERT demand
TLS_CACERT /etc/openldap/ldapCA.crt