LDAP mit TLS

Aus Linupedia
Wechseln zu: Navigation, Suche

Autor: ThomasF

Wenn der LDAP Server läuft und alle Funktionen die man haben möchte implementiert sind sollte man sich etwas über die Sicherheit Gedanken machen. Grundsätzlich wird nämlich das Passwort im Klartext über das Netzwerk geschickt, sodas es möglich ist dieses durch mithören der Netzwerkverbindung aufzuspüren. Aber das ist ja wohl kaum Sinn der Sache. ;-)

Bevor man nun also den LDAP Server in einer produktiven Umgebung nutzt sollte man dieses auf jeden Fall unterbinden. Hierfür gibt es grundsätzlich mehrere Möglichkeiten, aber die einfachste ist wohl die Absicherung der Netzwerkverbindung mit TLS.

Also die Dokumente aus /doc/ und /faq/ erläutern das so schlecht, dass man unbedingt was externes braucht. Z.B.


Grundsätzlich kann man mit diesen Infos das TLS einrichten, aber hier noch einmal die Schritte

Erstellen einer eigenen CA

mkdir /etc/openldap/certs
cd /etc/openldap/certs
cp /usr/share/ssl/misc/CA.sh .

CA.pl -newca (Unter SUSE findet man dieses Script in /usr/share/ssl/misc/CA.sh )

Erstellen des Server Zertifikats und private Key (als common Name den FQDN des LDAP Servers eingesetzt)

openssl req -new -nodes -keyout newreq.pem -out newreq.pem

Das Zertifikat signiert

CA.pl -signcert

Alle Dateien nach /etc/openldap/certs kopieren

cp /demoCA/cacert.pem /etc/openldap/certs/cacert.pem
mv newcert.pem /etc/openldap/certs/servercrt.pem
mv newreq.pem /etc/openldap/certs/serverkey.pem

Und hier noch eine Ergänzung bezüglich der Dateirechte dieser Zertifikate: In der Datei serverkey.pem steckt der private Schlüssel des Servers der ganz besonders geschützt werden muß.Im großen und ganzen benötigt aber nur der User Rechte auf diese Dateien der den LDAP Server startet. Im Fall von SUSE ist das der User ldap, also setzen wir die Rechte einmal so restricktiv wie möglich.

cd /etc/openldap/certs
chown ldap servercrt.pem serverkey.pem cacert.pem
chmod 400 ldapcert.pem ldapkey.pem cacert.pem

Folgende Zeilen in die slapd.conf eingetragen

...
TLSCertificateFile /etc/openldap/certs/servercrt.pem
TLSCertificateKeyFile /etc/openldap/certs/serverkey.pem
TLSCACertificateFile /etc/openldap/certs/cacert.pem
...


Nun muß noch der Client konfiguriert werden, in der jeweiligen ldap.conf des Client Rechners

# Your LDAP server. Must be resolvable without using LDAP.
host    URL_meines_Servers # FQHN der auch bei der Erstellung der CA verwendet wurde !

# The distinguished name of the search base.
base    o=meine-firma, c=de

# The LDAP version to use (defaults to 3
# if supported by client library)
ldap_version    3

TLS_CACERT      /etc/openldap/certs/cacert.pem

TLS_REQCERT     allow


Das cacert muss im Zweifel auf den entfernten Client kopiert werden. Mit diesen Einstellungen sollte die TLS Verschlüßelung der Netzwerkverbindung erstmal funktionieren. Es ist aber noch keine Garantie gegeben das diese auch immer genutzt wird. Der Server akzeptiert auch weiterhin Verbindungen die nicht geschützt sind.

Ich wähle jedoch diese Vorgehensweise damit jeder Schrittweise dem Thema näher gebracht werden kann und außerdem soll diese Anleitung auf keinen Fall so verstanden werden das man meint sich nicht intensiver damit beschäftigen zu müssen. ;-)


Quellen und weiterführende Links


zurück zu LDAP