4.2. Configuración de un host RHEL para utilizar AD como proveedor de autenticación

Realice este procedimiento para que el usuario denominado AD_user pueda iniciar sesión en el sistema rhel8_host utilizando la contraseña establecida en la base de datos de usuarios AD de Active Directory en el dominio example.com. En este ejemplo, el dominio EXAMPLE.COM Kerberos corresponde al dominio example.com.

Requisitos previos

  • Tienes acceso de root a rhel8_host.
  • La cuenta de usuario AD_user existe en el dominio example.com.
  • El ámbito de Kerberos es EXAMPLE.COM.
  • rhel8_host no se ha unido a AD mediante el comando realm join.

Procedimiento

  1. Cree la cuenta de usuario AD_user localmente sin asignarle una contraseña:

    # useradd AD_user
  2. Abra el archivo /etc/nsswitch.conf para editarlo y asegúrese de que contiene las siguientes líneas:

    passwd:     sss files systemd
    group:      sss files systemd
    shadow:     files sss
  3. Abra el archivo /etc/krb5.conf para editarlo y asegúrese de que contiene las siguientes secciones y elementos:

    # To opt out of the system crypto-policies configuration of krb5, remove the
    # symlink at /etc/krb5.conf.d/crypto-policies which will not be recreated.
    includedir /etc/krb5.conf.d/
    
    [logging]
        default = FILE:/var/log/krb5libs.log
        kdc = FILE:/var/log/krb5kdc.log
        admin_server = FILE:/var/log/kadmind.log
    
    [libdefaults]
        dns_lookup_realm = false
        ticket_lifetime = 24h
        renew_lifetime = 7d
        forwardable = true
        rdns = false
        pkinit_anchors = /etc/pki/tls/certs/ca-bundle.crt
        spake_preauth_groups = edwards25519
        default_realm = EXAMPLE.COM
        default_ccache_name = KEYRING:persistent:%{uid}
    
    [realms]
     EXAMPLE.COM = {
         kdc = ad.example.com
         admin_server = ad.example.com
     }
    
    [domain_realm]
     .example.com = EXAMPLE.COM
     example.com = EXAMPLE.COM
  4. Cree el archivo /etc/sssd/sssd.conf e inserte en él las siguientes secciones y líneas:

    [sssd]
        services = nss, pam
        domains = EXAMPLE.COM
    
    [domain/EXAMPLE.COM]
        id_provider = files
        auth_provider = krb5
        krb5_realm = EXAMPLE.COM
        krb5_server = ad.example.com
  5. Cambie los permisos del archivo /etc/sssd/sssd.conf:

    # chmod 600 /etc/sssd/sssd.conf
  6. Inicie el demonio de servicios del sistema de seguridad (SSSD):

    # systemctl start sssd
  7. Activar SSSD:

    # systemctl enable sssd
  8. Abra el archivo /etc/pam.d/system-auth y modifíquelo para que contenga las siguientes secciones y líneas:

    # Generated by authselect on Wed May  8 08:55:04 2019
    # Do not modify this file manually.
    
    auth        required                                     pam_env.so
    auth        required                                     pam_faildelay.so delay=2000000
    auth        [default=1 ignore=ignore success=ok]         pam_succeed_if.so uid >= 1000 quiet
    auth        [default=1 ignore=ignore success=ok]         pam_localuser.so
    auth        sufficient                                   pam_unix.so nullok try_first_pass
    auth        requisite                                    pam_succeed_if.so uid >= 1000 quiet_success
    auth        sufficient                                   pam_sss.so forward_pass
    auth        required                                     pam_deny.so
    
    account     required                                     pam_unix.so
    account     sufficient                                   pam_localuser.so
    account     sufficient                                   pam_succeed_if.so uid < 1000 quiet
    account     [default=bad success=ok user_unknown=ignore] pam_sss.so
    account     required                                     pam_permit.so
    
    password    requisite                                    pam_pwquality.so try_first_pass local_users_only
    password    sufficient                                   pam_unix.so sha512 shadow nullok try_first_pass use_authtok
    password    sufficient                                   pam_sss.so use_authtok
    password    required                                     pam_deny.so
    
    session     optional                                     pam_keyinit.so revoke
    session     required                                     pam_limits.so
    -session    optional                                     pam_systemd.so
    session     [success=1 default=ignore]                   pam_succeed_if.so service in crond quiet use_uid
    session     required                                     pam_unix.so
    session     optional                                     pam_sss.so
  9. Copie el contenido del archivo /etc/pam.d/system-auth en el archivo /etc/pam.d/password-auth. Introduzca yes para confirmar la sobreescritura del contenido actual del archivo:

    # cp /etc/pam.d/system-auth /etc/pam.d/password-auth
    cp: overwrite '/etc/pam.d/password-auth'? yes

Pasos de verificación

  1. Solicite un ticket Kerberos (TGT) para AD_user. Introduzca la contraseña de AD_user tal y como se solicita:

    # kinit AD_user
    Password for AD_user@EXAMPLE.COM:
  2. Muestra el TGT obtenido:

    # klist
    Ticket cache: KEYRING:persistent:0:0
    Default principal: AD_user@EXAMPLE.COM
    
    Valid starting     Expires            Service principal
    11/02/20 04:16:38  11/02/20 14:16:38  krbtgt/EXAMPLE.COM@EXAMPLE.COM
    	renew until 18/02/20 04:16:34

AD_user se ha conectado con éxito a rhel8_host utilizando las credenciales del dominio Kerberos EXAMPLE.COM.