Instalación Común
C@mpus - @cademia Linux

Introducción

El siguiente procedimiento se deberá hacer en cada uno de los servidores, independientemente de la función que desempeñen.

La instalación común consiste en configurar a los servidores para permitir la autenticación vía LDAP o Kerberos (en caso de estar habilitada). 

Toda la documentación está basada en el dominio de Internet linuxchange.com, dominio de Windows LXE y realm de kerberos LINUXCHANGE.COM;  deberá entenderse que sólo es necesario el cabrio de los valores para aplicarse a otros dominios.

Se recomienda altamente leer la documentación sobre cómo instalar el servidor de directorio antes de continuar con esta página.



Paquetes necesarios

  • OpenLDAP-clients
  • nss_ldap
  • pam_ldap
  • NSCd
  • SUdo
  • OpenSSH

Configuración

El núcleo de la autenticación en los sistemas Linux basados en PAM está contenido en el directorio /etc/pam.d/ y los archivos /etc/nsswitch.conf y /etc/ldapl.conf (algunas versiones también necesitan una copia de ldap.conf en el directorio /etc/openldap/).

Los ejemplos mostrados aquí muestran al configuración mínima para operar y sin significar que se deban reemplazar los archivos tal cual.  Se recomienda altamente solo añadir y/o modificar las líneas mostradas dejando las configuraciones lo mas aproximadamente a la forma en la que operan en la distribución original.


/etc/ldap.conf
host 127.0.0.1
base dc=linuxchange,dc=com
# Opcional, no recomendado
rootbinddn cn=root,dc=linuxchange,dc=com

scope sub
pam_filter objectclass=posixaccount
pam_login_attribute uid
pam_member_attribute gid
pam_template_login_attribute uid
pam_password exop
exop_arguments id

nss_base_passwd ou=People,dc=linuxchange,dc=com?one
nss_base_shadow ou=People,dc=linuxchange,dc=com?one
nss_base_group ou=Group,dc=linuxchange,dc=com?one
nss_base_hosts ou=Hosts,dc=linuxchange,dc=com?one
nss_base_services ou=Services,dc=linuxchange,dc=com?sub
nss_base_networks ou=Networks,dc=linuxchange,dc=com?one
nss_base_protocols ou=Protocols,dc=linuxchange,dc=com?sub
nss_base_rpc ou=Rpc,dc=linuxchange,dc=com?one
nss_base_aliases ou=Aliases,dc=linuxchange,dc=com?one

Es importante tener en cuenta que el servidor LDAP que se especifique en el parámetro host deberá ser una dirección IP o un nombre de máquina que se pueda resolver. Se recomienda utilizar un direccionamiento numérico.

El parámetro base podrá ser cualquier combinación de los siguientes tokens o, dc o c; refiriéndose a una organización (o), unidad de dominio de Internet (dc) y país (c) respectivamente. Una vez elegida la base esta deberá ser la misma en todos los servidores que estén inscritos al dominio de LXE.

El siguiente parámetro, rootbinddn, indicará al sistema de autentificación con que se entrará en la base de datos LDAP. La contraseña estará inscrita en el archivo /etc/ldap.secret en texto plano y deberá terminar en un retorno de carro, Para resolver este detalle hacer un echo contraseña > /etc/ldap.secret resolverá el problema. Por motivos de seguridad, debido a que no está cifrada la red será muy importante darle permisos de lectura solamente al usuario root. Las versiones proporcionadas por LXE de NSS y PAM no necesitan este parámetro y realizan autenticación anónima frente al directorio.

El atributo scope, como su nombre lo indica define el alcance por defecto que tendrán las búsquedas en caso de no definirlo. Bajo LDAP existen las opciones de one, base y sub; la primera se refiere a que se la búsqueda estará limitada exclusivamente a la base que se le manda a buscar. El valor de base indica a la búsqueda que buscará sólo un nivel debajo de la rama del árbol especificada a contra parte de sub que indica nivel de profundidad infinito.

La opción pam_filter indica que las fichas que se buscarán deberán tener al menos la condición indicada. En este caso se utiliza objectclass=posixaccount que es un valor definido para indicar que son usuarios de sistemas operativos compatibles con POSIX (Linux es uno de ellos).

Tanto las opciones pam_login_attribute, pam_member_attribute y pam_template_login_attribute se utilizan para definir los atributos que se buscarán para autentificar usuarios y grupos. Es muy recomendable dejar estos valores puesto que la autentificación en los sistemas POSIX está basada en uid (nombre de usuario) y gid (nombre de grupo).

El atributo pam_password indica al sistema de autentificación en qué formato estarán las contraseñas cifradas. Linux en sus últimas versiones utiliza un sistema críptico llamado cyper md5, que es una variante entre el crypt convencional de los sistemas UNIX y el hash MD5. Aunque LDAP no soporta nativamente las contraseñas bajo este algoritmo, LXE proporciona la forma de hacer sincronía entre los diferentes atributos que contengan contraseñas como se verá más adelante.  Se especificará el parámetro exop que le indica a LDAP que se utilizarán métodos externos.

Los valores pasados a los parámetros nss_base_passwd, nss_base_shadow, nss_base_group, nss_base_hosts, nss_base_services, nss_base_protocols y nss_base_aliases indican la base del árbol en donde se encontrará la información de usuarios, contraseñas, grupos, servidores, servicios, protocolos y aliases respectivamente. Estos valores pueden ser personalizables sin embargo recomendamos dejar separadas las ramas como se muestran.


NSSwitch 

El archivo /etc/nsswitch.conf indica al sistema de autentificación los métodos y el orden en el que buscará, pudiendo tener orden de archivos, bases de datos y por supuesto LDAP. Se tendrá que añadir o modificar las siguientes líneas para contener lo siguiente.

/etc/nsswitch.conf
passwd:     files ldap nisplus
shadow:     files ldap nisplust;br /> group:      files ldap nisplus

hosts:      files nisplus nis dns wins

bootparams: nisplus [NOTFOUND=return] files

ethers:     files
netmasks:   files
networks:   files ldap
protocols:  files ldap
rpc:        files ldap
services:   files ldap

netgroup:   nisplus

publickey:  nisplus

automount:  files nisplus
aliases:    ldap files nisplus

Es muy importante observar la línea referente al parámetro hosts que no contiene ningún valor conteniendo ldap. Esta observación es importante debido a que en caso de querer poder buscar hosts (que seria el equivalente al archivo /etc/hosts) por medio del directorio habría que sincronizar el archivo con el árbol, el proceso puede ser complicado habiendo más servidores en el dominio.


PAM 

La distribución de Linux que se esté utilizando tenga soporte para PAM. De esta forma la autentificación por el árbol de LDAP podrá ser hecha. Para esto modificaremos los archivos /etc/pam.d/system-auth y /etc/pam.d/passwd. Empezando con system-auth que es el archivo donde estarán las políticas de autentificación por defecto deberá tener las siguientes líneas:

/etc/pam.d/system-auth
#%PAM-1.0

auth required pam_env.so
#auth sufficient pam_krb5.so
#auth sufficient pam_ldap.so use_first_pass
auth sufficient pam_ldap.so
auth sufficient pam_unix.so use_first_pass likeauth nullok
auth required pam_deny.so

#account sufficient pam_krb5.so
account optional pam_unix.so
account [default=bad success=ok user_unknown=ignore service_err=ignore system_err=ignore] pam_ldap.so

password required pam_cracklib.so retry=3 minlen=2 dcredit=0 ucredit=0 ucredit=0
#password sufficient pam_krb5.so use_authtok
password sufficient pam_ldap.so use_authtok
password sufficient pam_unix.so nullok use_authtok md5 shadow
password required pam_deny.so

session optional pam_mkhomedir.so skel=/etc/skel/ umask=0022
session required pam_limits.so
#session optional pam_krb5.so
session sufficient pam_ldap.so
session sufficient pam_unix.so

Es importante incluir la línea session requiered /lib/security/pam_mkhomedir.so que creará los directorios hogar de cada usuario ante su primer acceso. Esta línea es requerida puesto que la base de usuarios esta en un directorio externo, los directorios hogar no son creados en los servidores y esto garantiza el correcto acceso de un usuario a cualquier servicio inscrito a LXE.

En algunas instalaciones como en Mandrake 10 el archivo de configuración de pam no contendrá rutas absolutas, esto es otra forma de escribir los datos.


El archivo passwd permitirá que un usuario utilizando el comando análogo passwd pueda cambiar su contraseña, sin las modificaciones hechas, el comando tratará de buscar al usuario en el archivo local /etc/shadow mandando un error.

/etc/pam.d/passwd
#%PAM-1.0
auth       required     pam_stack.so service=system-auth
account    required     pam_stack.so service=system-auth
password   required     pam_stack.so service=system-auth

Es importante que las líneas que hacen referencia al módulo pam_ldap.so aparezcan puesto que estás son las que hacen la sincronización.

Una vez realizado este procedimiento, los sistemas estarán listos para autentificarse vía LDAP. Pero sin embargo es importante tener el servidor LDAP corriendo, para no tener el problema de esperar a que los tiempos de espera terminen.

Algunas versiones de PAM, incluyendo la distribuida en Mandrake 10, no requieren rutas absolutas para nombrar las librerías .SO. De esta forma en lugar de nombrar /lib/security/pam_ldap.so se podrá poner sólo pam_ldap.so.


Caché 

NSCd es un demonio que se encarga de hacer caché de la base de datos de usuarios para hacer más rápida la entrada a los diferentes servicios. La utilización de este demonio conlleva a dos puntos muy importantes.

  1. La velocidad de autentificar un servicio será mucho más rápida,
  2. El cambio de la base de datos de usuario no serán relejados inmediatamente en los servidores.

Para configurar este servicio modificaremos o añadiremos las siguientes líneas al archivo /etc/nscd.conf. El archivo incluido en Mandrake 10 puede ser utilizado tal cual está siendo este totalmente operable.

/etc/nscd.conf
#       logfile                 /var/log/nscd.log
#       threads                 6
#       max-threads             128
        server-user             nscd
#       stat-user               somebody
        debug-level             0
#       reload-count            5
        paranoia                no
#       restart-interval        3600

        enable-cache            passwd          yes
        positive-time-to-live   passwd          600
        negative-time-to-live   passwd          20
        suggested-size          passwd          211
        check-files             passwd          yes
        persistent              passwd          yes
        shared                  passwd          yes

        enable-cache            group           yes
        positive-time-to-live   group           3600
        negative-time-to-live   group           60
        suggested-size          group           211
        check-files             group           yes
        persistent              group           yes
        shared                  group           yes

        enable-cache            hosts           no
        positive-time-to-live   hosts           3600
        negative-time-to-live   hosts           20
        suggested-size          hosts           211
        check-files             hosts           yes
        persistent              hosts           yes
        shared                  hosts           yes

Habrá que los tiempos en segundos y el parámetro a la opción enable-cache hosts deberá estar en no. Esto es para evitar problemas con la resolución de nombres vía DNS.

En algunas ocasiones el log podrá marcar un error diciendo que no se puede iniciar como un usuario, para evitar esto podremos darle atributos de súper usuario añadiendo en el inicio del archivo la línea server-user root. Además es necesario para la futura autenticación con Kerberos.