DataSunrise Logra el Estado de Competencia en AWS DevOps en AWS DevSecOps y Monitoreo, Registro, Rendimiento

Configuración del Protocolo de Autenticación Kerberos

Configuración del Protocolo de Autenticación Kerberos

Llamado así por un perro de tres cabezas que custodiaba las puertas del Hades en los mitos de la Antigua Grecia, el protocolo Kerberos ofrece un servicio de autenticación seguro para redes de computadoras. Realiza una autenticación mutua entre el usuario y el servidor con la ayuda de un Centro de Distribución de Claves (KDC) de terceros de confianza que proporciona servicios de autenticación y concesión de tickets. Todos los sistemas operativos principales, incluidos Microsoft Windows, Linux, Apple OS X y FreeBSD, son compatibles con el protocolo Kerberos.

Los mensajes del protocolo Kerberos están protegidos contra ataques de repetición y escuchas mediante criptografía de clave secreta compartida. El propósito principal de Kerberos es evitar la transmisión de contraseñas encriptadas a través de la red. Elimina la amenaza de los escuchas de paquetes y mejora la seguridad general de la red.

Por qué es Importante la Autenticación Kerberos

La autenticación Kerberos es un protocolo fundamental para la verificación centralizada y segura de usuarios en redes empresariales. Permite una confianza mutua entre usuarios y servicios sin enviar contraseñas a través de la red, reduciendo la exposición al robo de credenciales y a ataques de intermediarios (man-in-the-middle).

Hoy en día, Kerberos se utiliza ampliamente en dominios de Active Directory, sistemas empresariales de inicio de sesión único (single sign-on) y entornos seguros en la nube. Su modelo basado en tickets garantiza una autenticación escalable y eficiente, especialmente en infraestructuras complejas y multinivel.

Herramientas como DataSunrise soportan la autenticación Kerberos actuando como un proxy seguro, aplicando las políticas de Active Directory mientras gestionan el acceso a activos de datos críticos, ya sea en las instalaciones o en la nube.

Aunque el proveedor de soporte de seguridad Kerberos trata eficazmente con amenazas de seguridad graves, puede ser difícil de implementar debido a una variedad de limitaciones:

  • Si el servidor Kerberos no está disponible, los usuarios no pueden iniciar sesión. El problema se puede resolver utilizando mecanismos de autenticación de respaldo y múltiples servidores Kerberos.
  • Los relojes de los hosts involucrados deben estar sincronizados. De lo contrario, la autenticación fallará, ya que los tickets de Kerberos tienen un período de validez determinado.
  • Kerberos no se puede usar cuando los usuarios quieren conectarse a servicios desde sistemas no confiables.
  • En caso de utilizar criptografía simétrica, la vulneración de la infraestructura de autenticación permitirá a un atacante suplantar a cualquier usuario.
  • Cada servicio de red que requiera un nombre de host diferente necesitará su propio conjunto de claves Kerberos.

Cómo Funciona la Autenticación Kerberos

kerberos

Un Centro de Distribución de Claves (KDC) se compone de un Servidor de Autenticación (AS) y un Servidor de Concesión de Tickets (TGS). TGT es un Ticket de Concesión de Tickets.

  1. El usuario ingresa su nombre de usuario y contraseña. La identificación del usuario en texto plano se envía al Servidor de Autenticación (AS) con una solicitud de servicios en nombre del usuario.
  2. El AS verifica si el nombre de usuario está en la base de datos. Si existe información sobre ese usuario, el AS puede generar una clave secreta del cliente de acuerdo con el ID y la contraseña del usuario. El AS envía al usuario:
    • La clave de sesión cliente/TGS (encriptada con la clave secreta del cliente);
    • El TGT que incluye el ID del usuario, la dirección de red y el período de validez del ticket + la clave de sesión cliente/TGS (encriptada con la clave secreta del TGS).
  3. El usuario descifra el primer mensaje pero no puede descifrar el segundo, ya que no posee la clave secreta del TGS. El cliente envía un mensaje al TGS:
    • El TGT recibido del AS + ID del servidor + la clave secreta TGS/cliente (encriptada con la clave secreta del TGS);
    • El autenticador que incluye el ID del cliente y la marca de tiempo (encriptado con la clave de sesión Cliente/TGS).
  4. El TGS descifra el primer mensaje, obtiene el TGT + la clave de sesión TGS/cliente, con la cual descifra el segundo mensaje. El TGS verifica si el ID del usuario del primer mensaje coincide con el ID del segundo mensaje y si la marca de tiempo no excede el período de validez del ticket. En caso de que todo sea correcto, el TGS envía al usuario:
    • El ID utilizado, la dirección de red, el período de validez del ticket + la clave de sesión cliente/servidor (encriptada con la clave secreta del servidor);
    • La clave de sesión cliente/servidor (encriptada con la clave secreta Cliente/TGS).
  5. El cliente envía lo siguiente al Servidor al que intenta acceder:
    • El ID utilizado, la dirección de red, el período de validez del ticket + la clave de sesión cliente/servidor (encriptada con la clave secreta del servidor);
    • El autenticador que incluye el ID y la marca de tiempo (encriptado con la clave de sesión Cliente/servidor).
  6. El servidor destino descifra los mensajes del usuario, verifica que el ID del usuario en ambos mensajes tenga el mismo valor y que el período de validez no haya expirado, luego envía al cliente el siguiente parámetro para confirmar su identidad:
    • Marca de tiempo + 1 (encriptado con la clave de sesión Cliente/servidor).

El cliente verifica que el valor de la marca de tiempo sea la marca de tiempo + 1, lo que demuestra la verdadera identidad del servidor. Si es así, el cliente puede confiar en el servidor y comenzar a trabajar con él.

Aplicaciones Modernas de Kerberos

Kerberos sigue siendo vital en los entornos empresariales actuales. Los proveedores de servicios en la nube integran Kerberos en sus servicios de identidad. La autenticación multifactorial mejora la postura de seguridad de Kerberos. Las soluciones de inicio de sesión único aprovechan Kerberos para un acceso sin interrupciones. Muchas aplicaciones en contenedores son compatibles con la autenticación Kerberos. Las canalizaciones DevOps utilizan Kerberos para flujos de trabajo CI/CD seguros. Los sistemas de gestión de dispositivos móviles incorporan principios de Kerberos. Las arquitecturas Zero Trust a menudo se basan en los fundamentos de Kerberos. Las soluciones de identidad federada extienden Kerberos a través de fronteras organizativas. La gestión automatizada de certificados simplifica el mantenimiento de Kerberos. Las implementaciones modernas abordan muchas de las limitaciones tradicionales de Kerberos.

Configuración del Protocolo de Autenticación Kerberos

Para configurar el protocolo Kerberos, debe hacer lo siguiente:

  1. Crear un usuario en Active Directory (también puede utilizar uno existente).
    • Inicie sesión en el servidor del controlador del dominio, haga clic en Inicio → Herramientas administrativas y abra Usuarios y Equipos de Active Directory.
    • Si aún no está seleccionado, haga clic en el nodo correspondiente a su dominio (domain.com).
    • Haga clic derecho en Usuarios, señale a Nuevo y luego haga clic en Usuario.
    • En el cuadro de diálogo Nuevo objeto → Usuario especifique los parámetros del nuevo usuario. Puede tratarse de un usuario regular, no es necesario otorgarle privilegios adicionales. La cuenta del usuario debe estar activa (la casilla La cuenta está deshabilitada sin marcar) y la contraseña de la cuenta debe ser perpetua (la casilla La contraseña nunca expira marcada).
  2. Asignar los nombres principales con las claves encriptadas en el controlador de dominio. Para máquinas con Linux, cree un archivo keytab que contenga pares de nombres principales de Kerberos y claves encriptadas. Un archivo keytab se utiliza para autenticarse en varios sistemas remotos usando Kerberos sin necesidad de ingresar una contraseña.
    • Crear un keytab con la primera entrada usando la herramienta ktpass: ktpass /princ [email protected] /mapuser user1_backend /pass /crypto all /ptype KRB5_NT_PRINCIPAL /out C:\Users\user1\Desktop \datasunrise.keytab -setupn
      /princEl nombre principal del servicio (SPN) en el siguiente formato: @
      /mapuserMapea el nombre del principal de Kerberos, que se especifica mediante el parámetro princ, a la cuenta de dominio especificada.
      /passEspecifica la contraseña para el nombre principal de usuario.
      /ptypeEspecifica el tipo de principal. Utilice KRB5_NT_PRINCIPAL.
      /cryptoEspecifica las claves que se generarán en el archivo keytab.
      /outAsigne un directorio y un nombre para el archivo de salida *.keytab.
      -setupnNo establece el nombre principal del usuario junto con el nombre principal del servicio.
    • Crear una segunda entrada en el archivo keytab para conectarse a la base de datos utilizando el usuario de AD. El ejemplo se muestra para crear entradas keytab para conectarse a una base de datos Vertica utilizando el usuario de AD. Para otras bases de datos o autenticación mediante GUI, ejecute el mismo comando con el nombre del servicio correspondiente en el parámetro /princ. ktpass /out ./datasunrise.keytab /princ vertica/[email protected] /mapuser user1 /mapop set /pass /ptype KRB5_NT_PRINCIPAL /crypto RC4-HMAC-NT
    • Será necesario transferir el archivo keytab a la máquina con Linux.
  3. Configurar la delegación en Active Directory.
    • En la máquina del controlador de dominio, vaya a Usuarios y Equipos de Active Directory y localice la cuenta de la máquina en la que desea configurar Kerberos.
    • En la sección Propiedades, vaya a la pestaña Delegación y seleccione Confiar en este equipo para la delegación solo a los servicios especificados y haga clic en Agregar.
    • En la ventana Usuarios y Equipos, especifique la cuenta de usuario que se ha utilizado para iniciar la base de datos o el nombre del servidor donde está instalado el RDBMS.
    • Opcionalmente, puede utilizar el botón Buscar nombres para comprobar si existe el usuario o equipo especificado y haga clic en Aceptar, luego seleccione el servicio requerido y haga clic en Aceptar.
  4. Instalar y configurar el cliente Kerberos en su máquina. sudo apt-get install krb5-user libpam-krb5 libpam-ccreds auth-client-config

    Edite el archivo /etc/krb5.conf para añadir el nombre de dominio completo, el nombre del controlador de dominio y el parámetro realm

    Importante: No deje ningún comentario etiquetado con el signo “#” en el archivo de configuración.

    [libdefaults]
        default_realm       =           DOMAIN.COM    # parámetro específico del dominio (nombre de dominio completo)
        clockskew           =           300
        ticket_lifetime     =           1d
        forwardable         =           true
        proxiable           =           true
        dns_lookup_realm    =           true
        dns_lookup_kdc      =           true
       
     
       [realms]
            DOMAIN.COM = {
            kdc            =       hostname.domain.com   # parámetro específico del dominio (nombre del controlador de dominio)
            admin_server   =       hostname.domain.com   # parámetro específico del dominio (nombre del controlador de dominio)
            default_domain =       DOMAIN.COM         # parámetro específico del dominio (nombre de dominio completo)
            }
     
    [domain_realm]
            .domain.com = DOMAIN.COM  # parámetro específico del dominio (nombre de dominio para nombres DNS)
            domain.com = DOMAIN.COM   # parámetro específico del dominio (nombre de dominio para nombres DNS)
     
    [appdefaults]
            pam = {
            ticket_lifetime         = 1d
            renew_lifetime          = 1d
            forwardable             = true
            proxiable               = false
            retain_after_close      = false
            minimum_uid             = 0
            debug                   = false
            }

Para las máquinas con sistema operativo Windows, no es necesario instalar y configurar el protocolo Kerberos, pero debe estar en el dominio de Active Directory. Además, para establecer los nombres principales de servicio se utiliza el comando setspn. A continuación se muestra un ejemplo de configuración de una máquina con Windows para conectarse a la base de datos MS SQL Server utilizando las credenciales del usuario de AD.

La dirección del proxy debe coincidir con el SPN registrado del servicio MSSQLSvc. Utilice la herramienta SetSPN para registrar los dos SPN requeridos para la cuenta de la computadora para la cual ha permitido la delegación:

setspn -A MSSQLSvc/proxy-host:proxy-port proxy-host setspn -A MSSQLSvc/full-fqdn-proxy-host:proxy-port proxy-host

La lista de todos los SPN registrados se puede obtener mediante el siguiente comando:

setspn -L proxy-host

Para eliminar el SPN proxy, haga lo siguiente:

setspn -D MSSQLSvc/proxy-host:proxy-port proxy-host

Para probar el esquema de autorización, ejecute el siguiente comando después de conectarse al servidor:

select auth_scheme from sys.dm_exec_connections where session_id=@@spid

El resultado corresponderá al esquema de autenticación que ha sido utilizado por el servidor: SQL, NTLM o KERBEROS.

En caso de recibir el error “Cannot generate SSPI context”, consulte las instrucciones de soporte de Microsoft sobre cómo solucionar el problema con la interfaz de proveedor de soporte de seguridad.

DataSunrise puede funcionar como un proxy de autenticación para bases de datos en la nube y locales para minimizar los riesgos de acceso no autorizado de usuarios, manteniendo las políticas de autenticación de Microsoft Active Directory y el protocolo Kerberos.

¿Contiene su base de datos o almacenamiento en la nube información sensible que requiere protección? ¿Necesita cumplir con las regulaciones GDPR, SOX o HIPAA? Descubra las soluciones de vanguardia de DataSunrise para la auditoría, la seguridad y el enmascaramiento de datos. Pruebe nuestro software de forma gratuita o programe una demostración en línea hoy mismo.

Siguiente

Creación de una Máquina Virtual DataSunrise en Microsoft Azure

Creación de una Máquina Virtual DataSunrise en Microsoft Azure

Más información

¿Necesita la ayuda de nuestro equipo de soporte?

Nuestros expertos estarán encantados de responder a sus preguntas.

Información general:
[email protected]
Servicio al Cliente y Soporte Técnico:
support.datasunrise.com
Consultas sobre Asociaciones y Alianzas:
[email protected]