La configuración de un cliente Linux para que se integre en un dominio LDAP, implica la modificación de varios ficheros de configuración. Básicamente, el cliente Linux debe de saber de donde obtener los usuarios y grupos del dominio y como autenticarlos.
Lo primero se consigue utilizando la librería NSS (Name Service
Switch) que permite resolver nombres en el sistema y que para ello depende
de un fichero llamado /etc/nsswitch.conf
donde se
definen las fuentes de datos para los usuarios y grupos que será capaz de
ver el sistema Linux. Al editar dicho fichero, las líneas que controlan de
donde se obtendrá la resolución de usuarios y grupos, son las
siguientes:
passwd: files ldap shadow: files ldap group: files ldap hosts: files dns wins
Estas líneas indican al sistema que para obtener la información de
un usuario (UID,GID,HOME ...) primero consultará los ficheros del sistema
(/etc/passwd
,/etc/shadow
) además
de una fuente de datos LDAP.
La tarea de autenticar usuarios en un sistema Linux se relega a un módulo denominado PAM (Pluggable Authentication Module) que consiste en insertar una capa en medio de cualquier aplicación que necesite autenticación, independizando de este modo a la aplicación de la necesidad de saber donde se encuentran los datos de autenticación.
En un sistema CentOS Linux existe un fichero de configuración general de PAM que luego incluyen las aplicaciones que necesitan autentificarse. Este fichero se llama /etc/pam.d/system-auth. La modificación necesaria para que la fuente de datos sea un servidor LDAP se realiza de la siguiente forma:
#%PAM-1.0 # This file is auto-generated. # User changes will be destroyed the next time authconfig is run. auth required /lib/security/$ISA/pam_env.so auth sufficient /lib/security/$ISA/pam_unix.so likeauth nullok auth sufficient /lib/security/$ISA/pam_ldap.so use_first_pass auth required /lib/security/$ISA/pam_deny.so account required /lib/security/$ISA/pam_unix.so account [default=bad success=ok user_unknown=ignore service_err=ignore \ system_err=ignore] /lib/security/$ISA/pam_ldap.so password required /lib/security/$ISA/pam_cracklib.so retry=3 type= password sufficient /lib/security/$ISA/pam_unix.so nullok use_authtok md5 shadow password sufficient /lib/security/$ISA/pam_ldap.so use_authtok password required /lib/security/$ISA/pam_deny.so session required /lib/security/$ISA/pam_limits.so session required /lib/security/$ISA/pam_unix.so session optional /lib/security/$ISA/pam_ldap.so
El módulo PAM que permite la autenticación se denomina pam_ldap y viene en el paquete nss_ldap, el cual implenta tanto el módulo pam_ldap
como la librería necesaria
(/lib/libnss_ldap-2.3.2.so
) para que el sistema de
resolución de nombres (NSS) pueda leer la información de un servidor
LDAP.
Estas dos piezas de software (pam_ldap, libnss_ldap) se apoyan en un fichero de configuración denominado /etc/openldap/ldap.conf donde se define a que servidor LDAP atacar, cual es la raíz del dominio etc ...
SIZELIMIT 200 TIMELIMIT 15 DEREF never host ldap.admon.com base dc=admon,dc=com binddn cn=admin,dc=admon,dc=com bindpw not24get pam_password exop nss_base_passwd ou=Users,dc=admon,dc=com?one nss_base_shadow ou=Users,dc=admon,dc=com?one nss_base_group ou=Groups,dc=admon,dc=com?one
En un sistema CentOS Linux, las tareas anteriores se podían haber realizado utilizando la herramienta de configuración de la autenticación denominada system-config-authentication, que permite al administrador definir la información necesaria para la librería NSS, así como para pam_ldap.
Hay que señalar que todo este proceso que se ha realizado en un cliente Linux, deberíamos hacerlo también en el servidor, para que este fuera capaz de ver los usuarios y grupos necesarios. Esto se debe a que cuando pasemos a configurar el servidor Samba, los usuarios Samba tienen que tener su correspondiente usuario Linux y si por tanto el servidor Linux no es capaz de ver los usuarios como tal Linux que es, difícilmente podrá hacer que Samba los sirva.