Konfiguracja klienta LDAP w systemie Linux
Do skonfigurowania klienta LDAP w systemie Linux najprościej jest użyć jakiegoś narzędzia dostarczanego z danym systemem. W SuSE jest to yast (yast2), w rodzinie RedHat (CentOS) jakiś authconfig (authconfig-tui). To powinno doinstalować potrzebne pakiety jak: nss-pam-ldapd, nscd, pam_ldap, ldapclient itp. Niestety nie pamiętam dokładnie listy pakietów dla poszczególnych dystrybucji ponieważ konfigurowałem to na SuSE, RHEL oraz CentOS.
Nie sposób opisać tu konfiguracji każdej z dystrybucji Linuxa, najlepiej więc skorzystać z dokumentacji danej dystrybucji, tak jak ja to zrobiłem. Od siebie, chciałbym dodać listę plików, które należy przejrzeć lub wyedytować w razie gdyby automagiczne konfiguratory zawiodły, bo obecnie już coraz trudniej o dokumentację dla prawdziwych Adminów operujących z konsoli bezpośrednio na plikach.
RedHat/CentOS: /etc/nslcd.conf (przykładowa konfiguracja)
uri ldap://ldapsrvp01/ ldap://ldapsrvp02/ ldap_version 3 base dc=mycompany,dc=com scope sub base group ou=Groups,o=mycompany,dc=mycompany,dc=com base passwd ou=people,o=mycompany,dc=mycompany,dc=com base passwd ou=people,o=customer,dc=mycompany,dc=com base shadow ou=people,o=mycompany,dc=mycompany,dc=com base shadow ou=people,o=customer,dc=mycompany,dc=com scope group onelevel ssl start_tls tls_reqcert demand tls_cacertfile /etc/openldap/certs/cacert.pem filter passwd (objectClass=posixAccount) filter shadow (objectClass=shadowAccount)
Nie znalazłem również informacji jak skonfigurować bardziej zaawansowane filtry LDAP, które przeszukują więcej niż jedną gałąź, np.:
(&(objectClass=posixAccount)(|(ou=people,o=mycompany,dc=mycompany,dc=com)(ou=people,o=customer,dc=mycompany,dc=com)))
dlatego musiałem przetestować to sam i stwierdzić, że atrybuty (np. „base passwd”) mogą być zdefiniowane wielokrotnie (patrz powyżej).
SuSE: /etc/ldap.conf – konfiguracja klienta, podobnie jak /etc/nslcd.conf na RedHat/CentOS, ale tutaj filtry definiuje się bardziej w LDAPowej konwencji, np.:
base dc=mycompany,dc=com scope sub nss_schema rfc2307bis nss_map_attribute uniqueMember member uri ldap://ldapsrvp01 ldap://ldapsrvp02 ldap_version 3 pam_filter objectClass=posixAccount nss_base_passwd ou=people,o=mycompany,dc=mycompany,dc=com?sub?|(memberof=cn=uxadmin,ou=groups,o=mycompany,dc=mycompany,dc=com)(memberof=cn=customer-test,ou=groups,o=mycompany,dc=mycompany,dc=com) nss_base_shadow ou=people,o=mycompany,dc=mycompany,dc=com?sub?|(memberof=cn=uxadmin,ou=groups,o=mycompany,dc=mycompany,dc=com)(memberof=cn=customer-test,ou=groups,o=mycompany,dc=mycompany,dc=com) nss_base_group ou=Groups,o=mycompany,dc=mycompany,dc=com nss_base_automount ou=services,dc=mycompany,dc=com tls_cacertfile /etc/ssl/ldap-ca.pem ssl start_tls tls_cacertdir /etc/ssl
/etc/nscd.conf (tu zalecam wyłączyć cache dla passwd i group)
enable-cache passwd no ... enable-cache group no
jest też parametr 'debug-level’ przydatny podczas rozwiązywania potencjalnych problemów
debug-level 0
/etc/openldap/ldap.conf (czasem /etc/ldap/ldap.conf) – konfiguracja klienta LDAP – ogólna
BASE dc=mycompany,dc=com URI ldap://ldapsrvp01 ldap://ldapsrvp02 #TLS_CACERT /etc/openldap/certs/cacert.pem TLS_CACERT /etc/ssl/ldap-ca.pem TLS_REQCERT demand
/etc/nsswitch.conf – konfiguracja repozytoriów użytkowników, grup, serwisów
passwd: compat group: files ldap hosts: files dns networks: files dns services: files ldap protocols: files rpc: files ethers: files netmasks: files netgroup: files ldap publickey: files bootparams: files automount: files ldap aliases: files ldap passwd_compat: ldap
/etc/ssl/ldap-ca.pem lub /etc/openldap/certs/cacert.pem lub inna ścieżka do pliku z certyfikatem CA, którym podpisany jest certyfikat serwera LDAP. Bez tego może się nie udać konfiguracja połączenia szyfrowanego między klientem a serwerem LDAP. Jest to też zwykle jeden z pierwszych punktów na drodze rozwiązywania problemów: sprawdzić czy konfiguracja zadziała jeśli wyłączymy TLS/SSL – jeśli tak, trzeba zweryfikować certyfikaty – jeśli nie, to należy szukać dalej.