autenticacion
Kerberos
- SSO Single Sign-On
- ticketing
- Active Directory
- ticketing
- Protocolos
Conceptos Fundamentales
- Basado en criptografía simétrica y emisión de tickets.
- Diseñado originalmente por el MIT.
- Implementación predominante: Kerberos v5.
- Es un mecanismo esencial en entornos corporativos Windows mediante Active Directory (AD).
- Permite autenticación sólida y SSO dentro de redes internas confiables.
Componentes Principales
KDC (Key Distribution Center)
El corazón del sistema. Consta de dos servicios:
- AS (Authentication Server): autentica al usuario y entrega el Ticket-Granting Ticket (TGT).
- TGS (Ticket Granting Server): emite tickets de servicio basados en el TGT.
Principal
- Identidad única dentro del sistema Kerberos.
- Puede ser un usuario, servicio o equipo.
- Formato típico:
usuario@REALMoservicio/host@REALM.
Realm
- Dominio lógico de administración para Kerberos.
- Suele escribirse en mayúsculas:
EMPRESA.LOCAL.
Tickets
- TGT (Ticket-Granting Ticket): permite solicitar otros tickets sin reautenticar.
- ST (Service Ticket): permite acceder a un servicio específico.
- Ambos están cifrados y tienen expiración definida.
Flujo de Autenticación Kerberos
Proceso General
- El usuario se autentica ante el AS con su secreto (contraseña o clave derivada).
- El AS entrega un TGT cifrado.
- El usuario solicita al TGS un ticket de servicio usando el TGT.
- El TGS emite un Service Ticket para el servicio solicitado.
- El usuario presenta el Service Ticket al servicio objetivo.
- El servicio valida el ticket y concede acceso sin pedir contraseña nuevamente.
Integración con SSO
- Kerberos facilita SSO en redes Windows mediante Active Directory.
- Los usuarios autenticados en un dominio no deben volver a introducir credenciales al acceder a servicios integrados.
- Utiliza validación mutua para evitar ataques de impersonación.
Ventajas
- Muy seguro: basado en claves simétricas y tickets temporales.
- Prevención contra replay: incluye timestamps y nonce.
- SSO nativo en redes corporativas.
- Mutual authentication entre cliente y servicio.
Desventajas
- Requiere reloj sincronizado (tolerancia típica: ±5 minutos).
- Dependencia crítica del KDC (punto único de fallo si no hay redundancia).
- Complejo en entornos heterogéneos fuera de AD.
- Difícil de integrar con aplicaciones modernas externas a la red interna.
Kerberos en Active Directory
Características
- AD actúa como KDC.
- Utiliza SPNs (Service Principal Names) para identificar servicios.
- Los controladores de dominio gestionan claves, políticas y tickets.
SPN (Service Principal Name)
- Mapea servicios a cuentas.
- Ejemplo:
HTTP/webserver.empresa.local@EMPRESA.LOCAL.
Casos de Uso
Redes Corporativas
- Autenticación para:
- Windows login.
- SMB y CIFS.
- Servicios corporativos internos.
- Aplicaciones web integradas mediante Kerberos Delegation.
Delegación Kerberos
- Constrained Delegation: el servicio solo puede actuar en nombre del usuario hacia servicios específicos.
- Protocol Transition (S4U): permite crear tickets sin credenciales explícitas del usuario.
Ataques Comunes Relacionados
Kerberoasting
- Ataque donde se solicitan Service Tickets y se crackean offline.
- Mitigación: contraseñas robustas para cuentas de servicio; usar Managed Service Accounts.
Pass-the-Ticket
- Reutilización de tickets capturados.
- Mitigación: cifrado fuerte, rotación, controles de endpoint.
Golden Ticket
- Ataque donde se genera un TGT falso si el atacante roba la clave
krbtgt. - Mitigación: rotar periódicamente la contraseña de
krbtgt.
Comparación con Otros Protocolos
Kerberos vs SAML
- Kerberos: entorno interno, tickets simétricos.
- SAML: federación externa, XML, firmado asimétrico.
Kerberos vs OIDC/OAuth2
- Kerberos no se basa en tokens JWT ni JSON.
- OIDC se orienta a aplicaciones modernas y servicios externos.
- Kerberos se usa principalmente en AD e intranets.
Ejemplo de Configuración Básica (Linux krb5.conf)
Código
```ini [libdefaults] default_realm = EMPRESA.LOCAL
[realms] EMPRESA.LOCAL = { kdc = kdc1.empresa.local admin_server = kdc1.empresa.local }
[domain_realm] .empresa.local = EMPRESA.LOCAL empresa.local = EMPRESA.LOCAL
¿Te gusta este contenido? Suscríbete vía RSS