Hier beschrieben die Installation und Einrichtung von nslcd als Client für Ldap.
Um eine tls gesicherte Verbindung aufzubauen, muss zuvor da CA Zertifikat auf dem Client installiert werden. Ich benutze hier eine selbstsignierte CA.
scp SERVER:/etc/ssl/certs/my-CA.crt CLIENT:/etc/ssl/certs/my-CA.crt
Der Name des ldap Server sollte auflösbar sein. Entweder durch einen DNS Server oder durch den passenden Eintrag in der /etc/hosts.
cat /etc/hosts ... 192.168.0.200 ldap.my-domain.de ldap ...
apt install ldap-utils libnss-ldapd libpam-ldapd nslcd
Sämtliche abfragen können wir erstmal einfach bestätigen
Zunächst richten wir den einfachen ldapclient ein um tools wie ldapsearch oder ldapwhoami nutzen zu können.
nano /etc/ldap/ldap.conf
... BASE dc=my-domain,dc=de URI ldap://ldap.my-domain.de TLS_REQCERT demand TLS_CACERT /etc/ssl/certs/my-CA.crt
| BASE | Beschreibt die BASE DN auf dem ldap Server | |
| URI | ldap: ldaps: | Beschreibt die Serveradresse und welche Verbindung genutzt werden soll. Ldap Beschreibt eine ungesicherte oder mit tls abgesicherte Verbindung über Port 389. Ldaps Beschreibt eine gesicherte Verbindung mit ssl über den port 636 |
| TLS_REQCERT | allow demand never try | Allow das Serverzertifikat wird angeforder und egal was zurückkommt, die Session läuft weiter. Demand Verbindung nur mit einem gültigen Serverzertifikat. Never es wird nichts angefordert. Try nur bei dem schlechten Zertifikat wird die Session unterbrochen. |
| TLS_CACERT | Ist der Pfad zum CA Zertifikat | |
Test der Konfiguration
ldapwhoami -x -ZZ -D "uid=readuser,ou=users,dc=my-domain,dc=de" -x -W Enter LDAP Password: dn:uid=readuser,ou=users,dc=my-domain,dc=de
Die Verbindung funktioniert!
Der nslcd Client dient zu automatischen Abfrage der Benutzer und Gruppen vom ldap Server. Mit Hilfe der libpam-nss und libpam-ldap, ermöglicht es uns ldap Benutzer im System zu verwenden.
nano /etc/nslcd.conf
... uri ldap://ldap.my-domain.de/ base dc=my-domain,dc=de binddn uid=readuser,ou=users,dc=my-domain,dc=de bindpw 123456789 tls_reqcert demand tls_cacertfile /etc/ssl/certs/my-CA.crt
| base | Beschreibt die BASE DN auf dem ldap Server | |
| uri | ldap: ldaps: | Beschreibt die Serveradresse und welche Verbindung genutzt werden soll. Ldap Beschreibt eine ungesicherte oder mit tls abgesicherte Verbindung über Port 389. Ldaps Beschreibt eine gesicherte Verbindung mit ssl über den port 636 |
| tls_reqcert | allow demand never try | Allow das Serverzertifikat wird angeforder und egal was zurückkommt, die Session läuft weiter. Demand Verbindung nur mit einem gültigen Serverzertifikat. Never es wird nichts angefordert. Try nur bei dem schlechten Zertifikat wird die Session unterbrochen. |
| tls_cacertfile | Ist der Pfad zum CA Zertifikat | |
| binddn | Benutzer dem das Lesen im ldap Baum erlaubt ist | |
| bindpw | Paswort zum bindn Benutzer !KLARTEXT! | |
Jetzt muss dem System bekannt gemacht werden, dass es ldap zur authentifizierung nutzen soll.
dpkg-reconfigure libnss-ldapd
Hier die drei Werte passwd, group und shadow auswählen!
Dadurch wird die Datei nsswitch.conf bearbeitet. Es sollten nun ldap Einträge für die drei ausgewählten Optionen vorhanden sein.
grep ldap /etc/nsswitch.conf
passwd: files ldap group: files ldap shadow: files ldap
Mit dem Befehl getent passwd|group werden nun alle Benutzer|Gruppen aufgelistet.
getent passwd
... ldapuser1:x:10000:10000:Ldap User1:/home/ldap/ldapuser1:/bin/bash ldapuser2:x:10001:10001:Ldap User2:/home/ldap/ldapuser2:/bin/bash ...
getent group
... ldapgroup:*:10010:ldapuser1,ldapuser2 ...
Durch den Befehel pam-auth-update werden die PAM Module aktualisiert. Hier muss die Option Ldap ausgewählt werden.
pam-auth-update