Integrar NIS con Active Directory

En este tema, se describe cómo integrar NIS con Windows Active Directory (AD) en Linux VDA mediante SSSD. Linux VDA es un componente de Citrix XenApp y XenDesktop. Por eso, encaja bien en el entorno de Active Directory (AD) de Windows.

Para usar NIS como un proveedor de UID y GID en lugar de Active Directory, se necesita que la información de cuenta (la combinación de nombre de usuario y contraseña) sea la misma tanto en AD como en NIS.

Nota:

El servidor de Active Directory sigue encargándose de la autenticación. No se admite NIS+. Si se utiliza NIS como el UID y el proveedor GID, ya no se usan los atributos de POSIX procedentes del servidor Windows.

Sugerencia:

Este método representa un modo ya obsoleto de implementar Linux VDA, que solo debe usarse en casos especiales. Para una distribución RHEL/CentOS, siga las instrucciones de Instalar Linux Virtual Delivery Agent para RHEL/CentOS. Para una distribución Ubuntu, siga las instrucciones de Instalar Linux Virtual Delivery Agent para Ubuntu.

¿Qué es SSSD?

SSSD es un demonio del sistema, cuya función principal es ofrecer acceso para identificar y autenticar recursos remotos en un marco común que incluya almacenamiento en caché y respaldo sin conexión para el sistema. Proporciona los módulos PAM y NSS y, más adelante, respaldará interfaces D-BUS para ofrecer más información al usuario. También incluye una base de datos mejor para almacenar cuentas de usuarios locales y datos de usuario extendidos.

Software requerido

El proveedor de AD se introdujo por primera vez con SSSD 1.9.0.

Se han probado y verificado los siguientes entornos con las instrucciones de este artículo:

  • RHEL 7.3 o posterior
  • CentOS 7.3 o posterior

Integrar NIS con AD

Para integrar NIS con AD, haga lo siguiente:

  1. Agregar Linux VDA como cliente NIS
  2. Unirse al dominio y crear un keytab de host usando Samba
  3. Configurar SSSD
  4. Configurar NSS/PAM
  5. Verificar la configuración de Kerberos
  6. Verificar la autenticación de usuarios

Agregar Linux VDA como cliente NIS

Configure el cliente NIS:

yum –y install ypbind rpcbind oddjob-mkhomedir

Establezca el dominio NIS:

ypdomainname nis.domain
echo "NISDOMAIN=nis.domain" >> /etc/sysconfig/network

Agregue la dirección IP para el cliente y el servidor NIS en /etc/hosts:

{NIS server IP address}   server.nis.domain nis.domain

Configure NIS con authconfig:

sudo authconfig --enablenis --nisdomain=nis.domain --nisserver=server.nis.domain --enablemkhomedir --update

nis.domain representa el nombre de dominio del servidor NIS. server.nis.domain es el nombre de host del servidor NIS, que puede ser también la dirección IP del servidor NIS.

Configure los servicios de NIS:

sudo systemctl start rpcbind ypbind
sudo systemctl enable rpcbind ypbind

Compruebe que la configuración de NIS es correcta:

ypwhich

Valide que la información de la cuenta esté disponible desde el servidor NIS:

getent passwd nisaccount

Nota:

El valor de nisaccount representa la verdadera cuenta de NIS en el servidor NIS. Compruebe que el GID, el UID, el directorio principal y el shell de inicio de sesión están configurados correctamente.

Unirse al dominio y crear un keytab de host usando Samba

SSSD no proporciona funciones de cliente de Active Directory para unirse al dominio y administrar el archivo de sistema keytab. Existen varios métodos para conseguir estas funciones:

  • adcli
  • realmd
  • Winbind
  • Samba

En esta sección, se describe solo el enfoque de Samba. Para realmd, consulte la documentación de RHEL o CentOS. Debe seguir estos pasos para configurar SSSD.

Unirse al dominio y crear un keytab de host usando Samba:

En el cliente Linux, con archivos correctamente configurados:

  • /etc/krb5.conf
  • /etc/samba/smb.conf:

Configure la máquina para la autenticación Kerberos y Samba:

sudo authconfig --smbsecurity=ads --smbworkgroup=domain --smbrealm=REALM --krb5realm=REALM --krb5kdc=fqdn-of-domain-controller --update

Donde REALM es el nombre del territorio Kerberos en mayúsculas y domain es el nombre NetBIOS del dominio.

Si se necesitan las búsquedas basadas en DNS del nombre de territorio Kerberos y del servidor KDC, agregue las dos opciones siguientes al comando anterior:

--enablekrb5kdcdns --enablekrb5realmdns

Abra /etc/samba/smb.conf y agregue las siguientes entradas en la sección [Global], pero después de la sección que haya generado la herramienta authconfig:

kerberos method = secrets and  keytab

Para unirse a un dominio Windows, el controlador de dominio debe ser accesible y usted debe tener una cuenta de usuario de Active Directory con permisos para agregar máquinas al dominio:

sudo net ads join REALM -U user

Donde REALM es el nombre del territorio Kerberos en mayúsculas, y user es un usuario de dominio con permisos para agregar equipos al dominio.

Configurar SSSD

Configurar SSSD consta de los siguientes pasos:

  • Instalar los paquetes sssd-ad y sssd-proxy en la máquina cliente Linux.
  • Realizar cambios de configuración en varios archivos (por ejemplo, sssd.conf).
  • Iniciar el servicio sssd.

/etc/sssd/sssd.conf

A continuación, se ofrece un ejemplo de configuración de sssd.conf (se pueden agregar opciones adicionales, según sea necesario):

[sssd]
config_file_version = 2
domains = example
services = nss, pam

[domain/example]
# Uncomment if you need offline logins
# cache_credentials = true
re_expression = (((?P<domain>[^\\]+)\\(?P<name>.+$))|((?P<name>[^@]+)@(?P<domain>.+$))|(^(?P<name>[^@\\]+)$))
id_provider = proxy
proxy_lib_name = nis
auth_provider = ad
access_provider = ad

# Should be specified as the lower-case version of the long version of the Active Directory domain.
ad_domain = ad.example.com

# Kerberos settings
krb5_ccachedir = /tmp
krb5_ccname_template = FILE:%d/krb5cc_%U

# Uncomment if service discovery is not working
# ad_server = server.ad.example.com

# Comment out if the users have the shell and home dir set on the AD side
default_shell = /bin/bash
fallback_homedir = /home/%d/%u

# Uncomment and adjust if the default principal SHORTNAME$@REALM is not available
# ldap_sasl_authid = host/client.ad.example.com@AD.EXAMPLE.COM

Reemplace ad.domain.com, server.ad.example.com por el valor correspondiente. Para obtener más información, consulte sssd-ad(5) - Linux man page.

Establezca la pertenencia y los permisos de archivos en sssd.conf:

chown root:root /etc/sssd/sssd.conf
chmod 0600 /etc/sssd/sssd.conf
restorecon /etc/sssd/sssd.conf

Configurar NSS/PAM

RHEL/CentOS:

Use authconfig para habilitar SSSD. Instale oddjob-mkhomedir para que la creación del directorio de inicio sea compatible con SELinux:

authconfig --enablesssd --enablesssdauth --enablemkhomedir --update
sudo systemctl start sssd
sudo systemctl enable sssd

Sugerencia:

Al configurar Linux VDA, tenga en cuenta que, para SSSD, no hay ninguna configuración especial para el cliente Linux VDA. Para soluciones adicionales en el script ctxsetup.sh, use el valor predeterminado.

Verificar la configuración de Kerberos

Para verificar que Kerberos está configurado correctamente para su uso con Linux VDA, compruebe que el archivo del sistema keytab se ha creado y contiene claves válidas:

sudo klist -ke

Muestra la lista de las claves disponibles para las distintas combinaciones de nombres principales y conjuntos de cifrado. Ejecute el comando kinit de Kerberos para autenticar la máquina en el controlador de dominio con estas claves:

sudo kinit –k MACHINE\$@REALM

Los nombres de máquina y territorio deben especificarse en mayúsculas. Debe anteponerse la barra diagonal inversa (\) al signo de dólar ($) para evitar la sustitución del shell. En algunos entornos, el nombre de dominio DNS difiere del nombre del territorio Kerberos. Compruebe que se usa el nombre del territorio Kerberos. Si la operación de este comando se realiza correctamente, no aparece ningún resultado.

Compruebe que el vale de concesión de vales de la cuenta de la máquina se ha almacenado en caché:

sudo klist -ke

Verificar la autenticación de usuarios

Use el comando getent para saber si se admite el formato del inicio de sesión y si funciona NSS:

sudo getent passwd DOMAIN\\username

El parámetro DOMAIN indica la versión corta del nombre de dominio. Si se necesita otro formato de inicio de sesión de Citrix Receiver, compruébelo primero con el comando getent.

Los formatos de inicio de sesión admitidos son:

  • Nombre de inicio de sesión de nivel inferior: DOMAIN\username
  • UPN: username@domain.com
  • Formato del sufijo NetBIOS: username@DOMAIN

Para verificar que el módulo SSSD PAM está configurado correctamente, use una cuenta de usuario de dominio para iniciar sesión en Linux VDA. La cuenta de usuario de dominio no se ha utilizado anteriormente.

sudo localhost –l DOMAIN\\username
id -u

Compruebe que se ha creado el archivo de caché con las credenciales de Kerberos para el uid devuelto por el comando:

ls /tmp/krb5cc_{uid}

Compruebe que los vales que se encuentran en la memoria caché de credenciales de Kerberos son válidos y no han caducado:

klist

Integrar NIS con Active Directory