Debian LDAP-Client

Aus Wiki
Zur Navigation springen Zur Suche springen

Allgemein

Hier wird die clientseitige Einrichtung für LDAP beschrieben. Nachdem PAM (Plugabble Authentication Module) zum Einsatz kommt, wird LDAP nicht nur zur Anmeldung am Linuxsystem (lokal bzw. Telnet/SSH remote) verwendet, sondern auch für sämtliche Serverdienste, die PAM verwenden können (z.B. FTP, Postfix und Cyrus, usw.).


Installation der Pakete

apt-get install libnss-ldap nscd

Folgende Fragen beantworten:

  • LDAP Server URI: ldap://IP_DES_LDAP_SERVER (LDAP SSL) (ldapi:// nur verwenden, wenn Client und Server auf dem selben System laufen, da ldapi nur lokal via Unix-Socket und nicht via Netzwerk funktioniert)
  • Distinguished name of the search base: LDAP_BASE z.B. dc=test,dc=lan
  • LDAP Version: 3
  • LDAP account for root: cn=admin,dc=test,dc=lan
  • LDAP root account password: LDAP_ADMIN_PWD
  • Allow LDAP admin account to behave like local root: yes
  • Does the LDAP Database require login: no
  • LDAP administrative account: cn=admin,dc=test,dc=lan
  • LDAP administrative Password: LDAP_root_PWD


Konfiguration

vi /etc/nsswitch.conf

ldap in folgenden Einträgen ergänzen:

passwd:         compat ldap
group:          compat ldap
shadow:         compat ldap

In der Standard Debian6 Konfiguration kann der User sein Passwort nicht ändern. Um dies zu ermöglichen, muss folgende Änderung durchgeführt werden:

vi /etc/pam.d/common-password

In folgender Zeile use_authtok löschen:

password        [success=1 user_unknown=ignore default=die]     pam_ldap.so use_authtok try_first_pass

Die Zeile sollte dann folgendermaßen aussehen:

password        [success=1 user_unknown=ignore default=die]     pam_ldap.so try_first_pass

Standardmäßig werden User und Gruppen von der Basis aus gesucht. Die Suche kann etwas beschleunigt werden, wenn User automatisch in der OU=people und die Gruppen in der OU=groups gesucht werden. Dazu müssen folgende Änderungen in den Konfigfiles /etc/libnss-ldap.conf und /etc/pam_ldap.conf durchgeführt werden.

vi /etc/libnss-ldap.conf

Folgende Änderungen durchführen:

nss_base_passwd         ou=people,dc=test,dc=lan?one
nss_base_shadow         ou=people,dc=test,dc=lan?one
nss_base_group          ou=groups,dc=test,dc=lan?one
vi /etc/pam_ldap.conf

Folgende Änderungen durchführen:

nss_base_passwd         ou=people,dc=test,dc=lan?one
nss_base_shadow         ou=people,dc=test,dc=lan?one
nss_base_group          ou=groups,dc=test,dc=lan?one


Funktionstest Client

Voraussetzung:

  • User (LDAP_USER) im LDAP-Server angelegt.
  • Der User sollte nicht lokal angelegt sein, da ansonsten die Informationen aus /etc/passwd und /etc/groups ausgegeben werden.

Der Daemon nscd, der Login- und Userinformationen cached sollte während der funktionschecks deaktiviert werden, um sicherzustellen, dass tatsächlich die Anfragen an den LDAP-Server gerichtet und von dort beantwortet werden.

/etc/init.d/nscd stop
id ldap_user

Es sollten Infos wie UserID, GroupID und Gruppenzugehörigkeit zum User ausgegeben werden. Falls der User im LDAP Directory nicht existiert bzw. Konfigurationsfehler im LDAP-Server bzw. Client vorliegen, wird "No such user" ausgegeben


Wenn der User Loginberechtigt ist, dann via ssh mit Usernamen und Passwort versuchen sich einzuloggen. Falls alles korrekt funktioniert, sollte der Login möglich sein.

Waren die Funktionschecks erfolgreich empfiehlt es sich den Cache Daemon nscd wieder zu starten, um den LDAP-Server von Anfragen zu entlasten.

/etc/init.d/nscd start

Funktionstest wiederholen, um sicherzustellen, dass auch der nscd Daemon korrekt arbeitet.


User migrieren

Clientseitig können User, die in /etc/passwd eingetragen sind und solche, die via LDAP authorisiert werden, beliebig gemischt werden. Es sollte jedoch vermieden werden, dass User sowohl in /etc/passwd als auch via LDAP verfügbar sind. Selbes gilt für Gruppen (/etc/groups).

User, die bisher lokal verfügbar waren (via /etc/passwd) und auf LDAP migriert werden sollen, haben höchst wahrscheinlich unterschiedliche User ID. Selbes gilt für die Gruppen ID's. Um die ID's anzupassen folgendermaßen vorgehen:

  • UID_ALT : User ID aus /etc/passwd
  • UID_LDAP: LDAP User ID
  • GID_ALT: Gruppen ID aus /etc/passwd
  • GID_LDAP: LDAP Gruppen ID.

z.B. /etc/passwd

tux:x:1001:2002:,,,:/home/tux:/bin/bash
UID_LDAP=2000
GID_DAP=3000

=> UID_ALT=1001 => GID_ALT=2002

Eigentümerrechte der Files anpassen:

find / -uid UID_ALT -exec chown UID_LDAP {} \;
find / -gid GID_ALT -exec chgrp GID_LDAP {} \;

z.B.

find / -uid 1001 -exec chown 2000 {} \;
find / -gid 2002 -exec chgrp 3000 {} \;

User in /etc/passwd deaktiveren:

vi /etc/passwd

Kommentarzeichen vor den User tux setzen:

#tux:x:1001:2002:,,,:/home/tux:/bin/bash


Optional: SSL-Verschlüsselung

Um die Client-Anfragen auf SSL umzustellen, folgendermaßen vorgehen:

CA Root Zertifikat (cacert.pem) auf dem Client ablegen z.B. im Verzeichnis /etc/ssl/certs oder /etc/ssl/CA/ oder /etc/ldap/ssl/ (CACERT_DIR).

Zugriffsrechte anpassen:

chmod 751 CACERT_DIR
chmod 644 CACERT_DIR/cacert.pem
vi /etc/ldap/ldap.conf

Folgende Änderungen durchführen:

URI  ldaps://IP_DES_SERVER 
BASE LDAP_Base  z.B. dc=test,dc=lan
TLS_CACERT CACERT_DIR/cacert.pem
TLS_REQCERT never
vi /etc/libnss-ldap.conf

Die URI abändern:

uri ldaps://IP_DES_SERVER

Und die selbe Änderung in folgendem File

vi /etc/pam-ldap.conf

Die URI abändern:

uri ldaps://IP_DES_SERVER

Funktionstest siehe Funktionstest Client