Autenticación con LDAP en Debian con caché de credenciales

De WikiSalud
Saltar a: navegación, buscar

Contenido

Resumen:

Usar las credenciales de autenticación del árbol LDAP del servidor Samba, mediante NSS/PAM en Debian, configurando una caché de usuario a usar cuando no se pueda acceder al servidor.

Introducción

Después de haber instalado su servidor LDAP, es posible que quiera autenticar los equipos tipos linux contra las credenciales almacenadas en él. SSSD ofrece una perfecta solución para ello. Es un desarrollo pujante que entre otras cosas, obliga a usar una conexión TLS para comprobar las credenciales. Obligar siempre es una buena forma de asegurarse que algo ha de hacerse tal como se especifica. Sobre libpam-ldap y nss-ldap tiene la ventaja que su configuración es más sencilla.

Sobre los certificados digitales a usar

El referido acá como CA-dominio.com.sv.crt es el certificado de la Entidad certificadora. Usar este le garantiza que puede hacer cambios rápidos de servidor y ser bastante transparente para el usuario. Recomendamos que lo tenga en algún recurso compartidos (Con samba, o un recurso a acceder con scp para equipos linux), para que sea posible obtenerlo a la hora de configurar.
Almacene en /etc/ssl/certs/. La obtención de certificados no debería ser un dolor de cabeza, por ejemplo:

cd /etc/ssl/certs/
smbclient ldap.dominio.com.sv/certs/ -U soporte -c 'get CA-dominio.com.sv.crt'

Instalación de sssd

Instale los paquetes necesarios.

aptitude install sssd{,-tools}

Configuración

El único fichero de configuración es /etc/sssd/sssd.conf. Si bien el script /usr/lib/sssd/generate-config intenta una configuración bastante aceptable, habrá unos detalles que no ha tomado en cuenta y que son necesarios para nuestro caso específico:

/etc/sssd/sssd.conf
 [sssd]
 config_file_version = 2
 services = nss,pam
 domains = dominio.gob.sv
 
 [nss]
 filter_groups = root
 filter_users = root
 
 [pam] 
 
 [domain/dominio.gob.sv]
 ldap_uri = ldap://ldap.dominio.gob.sv
 ldap_search_base = dc=dominio,dc=gob,dc=sv
 ldap_schema = rfc2307bis
 id_provider = ldap
 ldap_user_uuid = entryuuid
 ldap_group_uuid = entryuuid
 ldap_id_use_start_tls = True
 enumerate = False
 cache_credentials = True
 ldap_user_search_base = ou=Users,dc=dominio,dc=gob,dc=sv
 ldap_group_search_base = ou=Groups,dc=dominio,dc=gob,dc=sv
 chpass_provider = ldap
 auth_provider = ldap
 ldap_tls_cacertdir = /etc/ssl/certs
 ldap_tls_cacert = /etc/ssl/certs/CA-dominio.com.sv.crt


Es importante configurar permisos en 600. Otras de las obligaciones de SSSD:

chmod 600 /etc/sssd/sssd.conf

Probando la configuración

A diferencia de nss-ldap, getent passwd no devolverá un listado de usuarios en búsqueda de mejorar el rendimiento (Y si, la opción enumerate puede cambiar esto ). Sin embargo, puede probar con los siguiente comandos y sustituyendo por un usuario conocido dentro del ldap, por ejemplo, el suyo

getent passwd alortiz
id alortiz

Configuraciones de PAM

Automatizamos la creación del directorio home de cada usuario que se loguee

Si el entorno gráfico es Gnome, use
    vim /etc/pam.d/gdm3
Si el entorno gráfico es KDE, use
    vim /etc/pam.d/kdm
    Posiblemente pueda encontrarlo con 
    vim /etc/pam.d/kdm3
Si el entorno gráfico es LXDE, use
    vim /etc/pam.d/gdm
Si el entorno gráfico es XFCE, use estos dos
    vim /etc/pam.d/lightdm
    vim /etc/pam.d/lightdm-autologin

Agregamos al final de cualesquiera de los ficheros antes expuestos:

session required pam_mkhomedir.so skel=/etc/skel/

Casi a modo de curiosidad (A menos dentro del ámbito para el cual la guía esta considerada), el archivo a buscar para un sistema sin entorno gráfico (Y para accesos remotos en general) es /etc/pam.d/common-account

Configuración opcional del cliente LDAP

La configuración anterior es totalmente funcional. Sin embargo, aprovechando que estamos en esto, podría tomarse unos minutos para configurar el cliente ldap, para lo cual es conveniente instarlo previamente:

aptitude install ldap-utils

Luego, basta modificar el fichero de configuracion en /etc/ldap/ldap.conf de la siguiente forma

/etc/ldap/ldap.conf
BASE            dc=dominio,dc=gob,dc=sv
URI             ldap://ldap.dominio.gob.sv:389
TLS_CACERT      /etc/ssl/certs/CA-sv.crt


Si a configuraciones opcionales vamos, podría interesarle revisar Sudo por medio de LDAP en Debian, que extiende los permisos del usuario mediante esquemas sudo distribuidos mediante LDAP

Herramientas personales
Espacios de nombres

Variantes
Acciones
Navegación
Herramientas