Debian LDAP-Client
Client Installation
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=homelinux,dc=org
- LDAP Version: 3
- LDAP account for root: cn=admin,dc=test,dc=homelinux,dc=org
- 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=homelinux,dc=org
- 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=homelinux,dc=org?one nss_base_shadow ou=people,dc=test,dc=homelinux,dc=org?one nss_base_group ou=groups,dc=test,dc=homelinux,dc=org?one
vi /etc/pam_ldap.conf
Folgende Änderungen durchführen:
nss_base_passwd ou=people,dc=test,dc=homelinux,dc=org?one nss_base_shadow ou=people,dc=test,dc=homelinux,dc=org?one nss_base_group ou=groups,dc=test,dc=homelinux,dc=org?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=homelinux,dc=org 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