Búsqueda de sitios web

Entendiendo Kerberos: ¿Qué es? ¿Como funciona?


En la mitología griega, Kerberos es un perro de múltiples cabezas que guarda las puertas del inframundo. El significado de Kerberos en tecnología es análogo: Kerberos es un protocolo de autenticación que protege la red al permitir que los sistemas y los usuarios demuestren su identidad entre sí antes de que se les otorgue acceso a los recursos. Continúe leyendo para saber cómo funciona la autenticación Kerberos y obtener valiosos consejos para evitar problemas.

Estructura y funcionamiento de Kerberos

Kerberos recibió su nombre del perro de tres cabezas debido a los tres actores diferentes en el protocolo:

  • Cliente: La entidad que busca proporcionar su identidad
  • Servidor de aplicaciones (AP): el servicio al que el cliente o usuario desea acceder
  • Centro de distribución de claves (KDC): un tercero de confianza que emite tickets

La compatibilidad con Kerberos se encuentra en casi todos los sistemas operativos, incluidos Apple OSX/iOS y muchas distribuciones de UNIX y Linux. Sin embargo, Microsoft Active Directory es la implementación de Kerberos más consumida. Se basa en el servicio de autenticación de red Kerberos (V5).

Microsoft amplió la especificación del protocolo base y agregó una serie de extensiones para implementar funciones específicas de Active Directory y los sistemas operativos Windows Server.

En Active Directory, cada controlador de dominio actúa como un KDC y proporciona dos servicios principales:

  • Servicio de autenticación (AS): autentica a los clientes y les emite tickets.
  • Servicio de concesión de entradas (TGS): acepta clientes autenticados y les emite entradas para acceder a otros recursos.

Los billetes utilizan tecnología de cifrado simétrico. Ciertas contraseñas de usuario se utilizan para cifrar y firmar tickets específicos, pero la raíz de la seguridad de Kerberos es una clave que sólo conoce el tercero de confianza que emite los tickets.

Proceso de autenticación Kerberos

Cada paso de la autenticación Kerberos emplea criptografía para proteger los paquetes contra modificaciones o lecturas y proporcionar autenticación mutua. Un cliente solicita un ticket para un usuario del KDC, utilizando la contraseña del usuario para cifrar la solicitud. Si el KDC puede descifrar la solicitud con la contraseña del usuario que ha almacenado, sabrá que el cliente ha proporcionado la contraseña correcta para el usuario. El KDC crea un ticket de concesión de tickets (TGT) para el usuario, lo cifra con la contraseña del usuario y lo devuelve al cliente. Si el cliente puede descifrar ese ticket con la contraseña del usuario, sabrá que el KDC es legítimo.

Un cliente solicita un boleto para un servicio del KDC presentando su TGT y una solicitud de servicio de concesión de boletos (TGS) que incluye el nombre principal del servicio al que desea acceder. El KDC crea un ticket de servicio (TGS) que se cifra con el hash de contraseña del servicio (clave secreta TGS), cifra el ticket y el mensaje del autenticador con la clave de sesión compartida del servicio de concesión de tickets y, finalmente, envía el TGS de vuelta al cliente.

Un cliente solicita acceso a un servidor de aplicaciones (servicio) presentando el ticket de servicio que obtuvo del KDC al servidor de aplicaciones, que descifra el mensaje utilizando su propio hash de contraseña. Si descifra correctamente el TGS, el servidor de aplicaciones concede acceso al cliente.

Pasos de autenticación Kerberos

Figura 1: Flujo de autenticación Kerberos

  1. KRB_AS_REQ: Solicitar TGT del Servicio de autenticación (AS)

La solicitud del cliente incluye el nombre principal de usuario (UPN) del usuario y una marca de tiempo. Se cifra mediante el hash de contraseña del usuario.

  1. KRB_AS_REP: TGT recibido del servicio de autenticación

El KDC utiliza UPN para buscar el cliente en su base de datos y utiliza el hash de contraseña del usuario para intentar descifrar el mensaje.

AS genera un TGT que contiene el ID del cliente, la dirección de red del cliente, la marca de tiempo, la vida útil y una clave de sesión (SK1).

Si el KDC descifra exitosamente la solicitud TGT y si la marca de tiempo está dentro del desfase temporal configurado por el KDC, la autenticación es exitosa.

Se devuelven al cliente una clave de sesión TGT y TGS. La clave de sesión TGS se utiliza para cifrar solicitudes posteriores.

  1. KRB_TGS_REQ: Presentar solicitud TGT y TGS

El cliente presenta su TGT junto con una solicitud que incluye el SPN del servicio al que desea acceder. La solicitud TGS se cifra con la clave de sesión TGS.

  1. KRB_TGS_REP: recibir TGS de KDC

El KDC intenta validar el TGT; si tiene éxito, genera un TGS que contiene información sobre el solicitante, como su SID y membresías de grupo, y está cifrado con el hash de contraseña del servicio.

El TGS y las claves de sesión de servicio se cifran con la clave de sesión de TGS y se envían de vuelta al cliente.

  1. KRB_AP_REQ: presentar TGS al servidor de aplicaciones para su autorización

El cliente envía el TGS que recibió del KDC al servidor de aplicaciones, junto con un mensaje de autenticación cifrado con la clave de sesión del servicio.

  1. KRB_AP_REP: otorgar acceso al cliente al servicio

El cliente recibe el mensaje y lo descifra con la clave de sesión del servicio.

El servidor de aplicaciones extrae el Certificado de atributo de privilegio (PAC) del ticket de servicio para verificar su contenido con un controlador de dominio.

La validación del boleto y del PAC ocurre únicamente cuando el TGT tiene más de 20 minutos.

Factores que afectan el funcionamiento de Kerberos

Hay un puñado de factores que generan problemas si no se tienen en cuenta lo suficiente.

  • Se requiere replicación entre controladores de dominio.
    Si se implementan varios controladores de dominio (y, por lo tanto, varios KDC), la replicación debe habilitarse y realizarse de manera oportuna. Si la replicación falla o se retrasa, es posible que se produzcan errores de autenticación cuando un usuario cambia su contraseña.
  • Los clientes y los KDC deben utilizar NetBIOS y resolución de nombres DNS.
    Los nombres principales del servicio Kerberos normalmente incluyen direcciones NetBIOS y DNS, lo que significa que tanto el KDC como el cliente deben poder resolver esos nombres de la misma manera. En determinadas situaciones, las direcciones IP también se pueden utilizar en los nombres principales del servicio.
  • Los clientes y los KDC deben tener sus relojes sincronizados.
    La medición precisa del tiempo es importante para evitar ataques de repetición. Kerberos admite un intervalo de tiempo configurable (5 minutos de forma predeterminada), fuera del cual fallará la autenticación del cliente.
  • Los clientes y los KDC deben poder comunicarse en la red.
    El tráfico Kerberos se produce en el puerto TCP y UDP 88, al que deben ser accesibles desde todos los clientes hasta al menos un KDC.
  • Los clientes, usuarios y servicios deben tener nombres únicos.
    Las credenciales duplicadas para computadoras, usuarios o nombres principales de servicios pueden causar una autenticación Kerberos inesperada

Kerberos frente a LDAP

Cuando lea sobre el protocolo Kerberos, verá con frecuencia menciones del Protocolo ligero de acceso a directorios (LDAP). Kerberos y LDAP se usan comúnmente juntos (incluso en Microsoft Active Directory) para proporcionar un directorio de usuarios centralizado (LDAP) y servicios de autenticación segura (Kerberos).

LDAP almacena información sobre usuarios, grupos y otros objetos (como computadoras) en una ubicación central. También puede proporcionar una autenticación sencilla; sin embargo, este protocolo, a diferencia de Kerberos, generalmente requiere que el secreto del usuario (es decir, la contraseña) se transmita a través de la red. Cada recurso al que el usuario desee acceder debe manejar la contraseña del usuario y autenticar al usuario por separado en el directorio.

A diferencia de LDAP, Kerberos proporciona la funcionalidad de inicio de sesión único. Una vez que un usuario se ha autenticado en el KDC, ningún otro servicio (como un sitio de intranet o un recurso compartido de archivos) necesita la contraseña del usuario. El KDC es responsable de emitir billetes en los que confía cada servicio.

La combinación de LDAP y Kerberos proporciona autenticación y administración de usuarios centralizadas y, en redes más grandes, Kerberos proporciona importantes beneficios de seguridad.

¿Cómo puedo ver mis tickets de Kerberos?

Es fácil ver sus tickets de Kerberos. En una computadora con Microsoft Windows, puede usar el programa klist.exe para enumerarlos abriendo un símbolo del sistema o PowerShell y ejecutando el comando klist tickets. En el siguiente ejemplo, puede ver que Joe tiene un ticket para el servicio CIFS, que es acceso a archivos compartidos, a un servidor llamado fileserver1.

PS C:Windowssystem32> klist tickets
Current LogonId is 0:0xe67df
Cached Tickets: (4)
#0>     Client: Joe @ domain.local
        Server: cifs/fileserver1.domain.local/domain.local @ DOMAIN.LOCAL
        KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96
        Ticket Flags 0x60a10000 -> forwardable forwarded renewable pre_authent name_canonicalize
        Start Time: 7/10/2020 12:33:49 (local)
        End Time:   7/10/2020 22:32:13 (local)
        Renew Time: 7/17/2020 12:32:13 (local)
        Session Key Type: AES-256-CTS-HMAC-SHA1-96
        Cache Flags: 0x40 -> FAST
        Kdc Called: DC1.domain.local

Conclusión

Kerberos es un protocolo de autenticación muy conocido y utilizado. Debido a que se encuentra en el corazón de Microsoft Active Directory, se ha convertido en uno de los protocolos más objeto de abuso por parte de adversarios de todos los matices. Netwrix se dedica a ayudar a las empresas a protegerse y detectar ataques en Active Directory. Para obtener más información, visite el catálogo de ataques de Netwrix o visite nuestro sitio web para explorar nuestra cartera de soluciones.

Artículos relacionados