LDAP
Grundkonfiguration
Um den LDAP-Server in Betrieb zu nehmen sind folgende Schritte nötig:
- 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
- Den slapd starten und in den Runleveln verankern.
- 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
- 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
- LDIF-Daten in den Server einspielen:
# ldapadd -x -W -D "cn=ldapadmin,dc=example,dc=com" -f basis.ldif -v
- 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