Configuración del cliente Linux

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.