home-harmening:sicherheit:ldap:ldapclient_nslcd

Ldap Client nslcd

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

Ldap Client einrichten

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


BASEBeschreibt 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_REQCERTallow
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_CACERTIst 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!

nslcd einrichten

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


baseBeschreibt 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_reqcertallow
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_cacertfileIst der Pfad zum CA Zertifikat
binddnBenutzer dem das Lesen im ldap Baum erlaubt ist
bindpwPaswort 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