Configuración del inicio de sesión único SSO NTLM/Kerberos para UBUNTU/RHEL/CentOS
Resumen
La extensión SSO de Kerberos facilita la obtención de un ticket de concesión de tickets (TGT) de Kerberos desde el Active Directory de su organización u otro dominio de proveedor de identidad, lo que permite a los usuarios autenticarse en recursos como sitios web, aplicaciones y servidores de archivos.
Pasos para integrar Kerberos SSO LDAP para el inicio de sesión único (SSO)
Paso 1: Instalar las bibliotecas de cliente Kerberos en el servidor web
Para UBUNTU:
- Utilice el siguiente comando en su terminal para instalar las bibliotecas del cliente Kerberos.
sudo apt-get install krb5-user
Para RHEL/CentOS:
- Utilice el siguiente comando en su terminal para instalar las bibliotecas del cliente Kerberos.
yum install krb5-workstation krb5-libs krb5-auth-dialog
Paso 2: Configure el dominio de Active Directory en el archivo de configuración de Kerberos
Los siguientes pasos se utilizan para configurar los dominios de Active Directory en el archivo de configuración de Kerberos:
- Abra y edite el archivo /etc/krb5.conf.
- Agregue el siguiente fragmento de configuración al archivo krb5.conf.
- Guarde el archivo.
EXAMPLE.ORG= { kdc = <AD DOMAIN CONTROLLER IP/DNS> :88 }
NOTA: Vuelva a colocar la ANUNCIO CONTROLADOR DE DOMINIO IP/DNS con su dirección IP/DNS. Asegúrese EJEMPLO.ORG debe estar en mayúsculas.
Vuelva a colocar la EJEMPLO.ORG con el nombre de dominio de Active Directory.
Y asegúrese de que se pueda acceder al puerto 88 en el controlador de dominio AD desde este servidor.
Paso 3: Instalar el módulo auth_kerb para Apache
Para UBUNTU:
- Utilice el siguiente comando para instalar el módulo auth_kerb para Apache.
- Una vez instalado el módulo auth_kerb, debe habilitarse mediante el siguiente comando.
- Después de habilitarlo, reinicie Apache para que surta efecto.
sudo apt-get install libapache2-mod-auth-kerb
a2enmod auth_kerb
Para RHEL/CentOS:
- Utilice el siguiente comando para instalar el módulo auth_kerb para Apache.
- Reinicie Apache para que surta efecto.
yum install mod_auth_kerb
Paso 4: Crear un archivo Keytab en el controlador de dominio de AD
- En el controlador de dominio AD, ejecute el siguiente comando para crear el archivo Keytab.
ktpass -princ HTTP/<Server Host Name>@EXAMPLE.ORG -pass PASSWORD
-mapuser <svc@EXAMPLE.ORG> -Ptype KRB5_NT_PRINCIPAL -out "<PATH>\spn.keytab"
NOTA: Asegúrese de que EXAMPLE.ORG esté en mayúsculas.
| Nombre del host del servidor: | Es el nombre de host del sitio alojado en el servidor. |
| Nombre del host del servidor: | Es el nombre de host del sitio alojado en el servidor. |
| EJEMPLO.ORG: | Es el nombre de dominio de Active Directory. |
| CONTRASEÑA: | Es la contraseña de la cuenta de servicio utilizada anteriormente. |
| svc@EJEMPLO.ORG: | Es una cuenta de servicio en Active Directory. |
| ruta de acceso: | Ruta a una ubicación local que almacenará el archivo keytab. |
- La cuenta de servicio tiene algunos requisitos previos:
- La contraseña de la cuenta debe tener una contraseña configurada en no caducado.
- Se debe confiar en la cuenta para la delegación.
- Copia el tabla de claves archivo desde el controlador de dominio AD al servidor web alojado en Apache.
NOTA: El comando anterior crea un archivo keytab. Debe ubicarse en el servidor. El usuario que ejecuta Apache debe tener acceso total a este archivo. El usuario debe tener permiso para acceder al archivo keytab.
Paso 5: Configurar el SSO de Kerberos para el directorio del sitio
Para UBUNTU:
- Edite el archivo /etc/apache2/sites-enabled/000-default.conf.
- Agregue la siguiente sección en el directorio del sitio.
<Directory "/placeholder"> AuthType Kerberos KrbAuthRealms EXAMPLE.ORG KrbServiceName HTTP Krb5Keytab <PATH TO KEYTAB> KrbMethodNegotiate on KrbMethodK5Passwd on require valid-user </Directory>
Para RHEL/CentOS:
- Edite el archivo de configuración auth_kerb.conf en la carpeta /etc/httpd/conf.d/.
- Agregue la siguiente sección en el directorio del sitio.
LoadModule auth_kerb_module /usr/lib/apache2/modules/mod_auth_kerb.so <Directory "/placeholder"> AuthType Kerberos KrbAuthRealms EXAMPLE.ORG KrbServiceName HTTP Krb5Keytab <PATH TO KEYTAB> KrbMethodNegotiate on KrbMethodK5Passwd on require valid-user </Directory>
NOTA: Asegúrese de que EXAMPLE.ORG esté en mayúsculas.
Los siguientes son los componentes de la configuración anterior:
| EJEMPLO.ORG: | Este es el dominio de Active Directory configurado en krb5.conf. |
| RUTA A LA TECLA: | Ruta accesible a la tabla de claves en este servidor. |
- Después de esta configuración, es necesario reiniciar Apache para que los cambios surtan efecto.
Localización de averías
Estos son los mensajes de error más comunes:
- Permisos de sistema de archivos incorrectos para /etc/krb5.keytab, es decir, no legibles para el usuario de Linux del servidor web.
- Para cambiar los permisos del sistema de archivos, utilice $ chmod 400 nombre de archivo.
- Falta la entidad de servicio (posiblemente HTTP/webserver.yourdomain.com@YOURDOMAIN.COM) en /etc/krb5.keytab.
- El sitio web no está en la zona "Intranet local" en IE o IE está configurado incorrectamente, consulte La autenticación utiliza NTLM en lugar de Kerberos.
- Kvno o contraseña de máquina incorrectos en /etc/krb5.keytab → vuelva a crear la tabla de claves utilizando la información correcta.
- Problema con el caché de tickets de Kerberos local en su estación de trabajo, use Kerbtray.exe para purgar el caché de tickets y abrir el sitio web en IE nuevamente.
gss_acquire_cred() failed: Unspecified GSS failure. Minor code may provide more information (, Permission denied).
gss_acquire_cred() failed: Unspecified GSS failure. Minor code may provide more information (, Key table entry not found).
Warning: received token seems to be NTLM, which isn't supported by the Kerberos module. Check your IE configuration.
gss_accept_sec_context() failed: An unsupported mechanism was requested (, Unknown error)
gss_accept_sec_context() failed: Unspecified GSS failure. Minor code may provide more information (, ).
