LDAP mit TLS
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
Inhaltsverzeichnis
- 1 Erstellen einer eigenen CA
- 2 Erstellen des Server Zertifikats und private Key (als common Name den FQDN des LDAP Servers eingesetzt)
- 3 Das Zertifikat signiert
- 4 Alle Dateien nach /etc/openldap/certs kopieren
- 5 Folgende Zeilen in die slapd.conf eingetragen
- 6 Nun muß noch der Client konfiguriert werden, in der jeweiligen ldap.conf des Client Rechners
- 7 Quellen und weiterführende Links
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. ;-)