miércoles, 1 de enero de 2014

Conceptos Básicos: El Protocolo Kerberos Simplificado

Cerberus: el perro de tres cabezas

Kerberos es un protocolo distribuido cliente servidor que usa los servicios de DNS, cifrado de información, sincronización de tiempo e intercambio de etiquetas (billetes o tickets) para proporcionar servicios de autenticación de manera segura.

Del punto de vista de seguridad, Kerberos se alinea a los siguientes principios:
  • Mantiene la confidencialidad ya que las contraseñas nunca son transportadas en claro en la red.
  • Protege la integridad de las transacciones implementando mecanismos que aseguran que los intercambios no son modificados en el tránsito.
  • Provee alta disponibilidad (si es propiamente implementado) ya que se puede instalar de manera distribuida.
Para que Kerberos funcione debe haber
  1. Un servicio de resolución de nombres bien configurado y que funcione correctamente (como DNS).
  2. Hay que tener un servicio de directorio para almacenar los nombres de los actores principales (como un servicio LDAP) y que los atributos estén almacenados correctamente en el mismo.
  3. Debe haber un servicio de distribución de llaves (KDC abreviado en Inglés)
  4. El reloj de los participantes no puede tener una diferencia de mas de 5 minutos (o sea que servicios de entronización de tiempo deben ser implementados)
  5. El software del cliente y el servidor deben ser compilados con compatibilidad con Kerberos.
El Directorio Activo tiene todas estas capacidades, de hecho, cualquier red que usa Windows el día de hoy (desde la versión 2000) tiene una infraestructura que usa Kerberos; esto quiere decir que este protocolo es aprovechado por millones de usuarios empresariales día a día.  Una secuencia común es la siguiente:

a) Bob inicia una sesión en su computador Windows en el principio del día.
b) Al ser exitoso, se le otorga un billete especial llamado Ticket Granting Ticket o TGT en Inglés.  Este tiene una vigencia de 10 horas.
c) Cuando Bob abre su cliente de correo electrónico (Outlook) este accede a su buzón y puede empezar a trabajar en sus tareas pendientes.

Note que en esta secuencia, con una configuración normal, el cliente no tiene que ingresar su contraseña otra vez para acceder a su buzón, ya que su cliente de correos (Outlook) puede establecer la conexión con el servidor (Microsoft Exchange) y el Directorio Activo se encarga del resto.

Veamos en mas detalles las funciones proporcionadas por el Directorio Activo:
Función
Proveedor
Resolución de nombres (de hostname a dirección IP)
Servicio DNS del AD
Emite y valida billetes (tickets)
Controladora de Dominio del AD
Servicios de cifrado
Controladora de Dominio del AD
Define y hace cumplir las políticas de Kerberos
Directivas de Grupo del AD y el cliente de directivas de grupo del computador cliente.
Servicios de Directorio
El servicio LDAP proporcionado por el AD
Sincronización de tiempo
Servicio w32time de la controladora de dominio y los clientes - configurado automáticamente.
Alta disponibilidad y configuración uniforme
Servicios de replicación del AD
Cliente de correos con Kerberos
Windows 7, Microsoft Outlook
Servidor de correos con Kerberos
Microsoft Exchange

Ahora, contraste la fragmentación que existe para todos estos servicios en plataformas UNIX/Linux:

Función
Proveedor
Resolución de nombres (de hostname a dirección IP)
Servidor BIND
Emite y valida billetes (tickets)
Kerberos KDCs (MIT o Heimdal)
Servicios de cifrado
Para LDAP (SSL o TLS)
Para Kerberos (autenticación)
Define y hace cumplir las políticas de Kerberos
Archivos de configuración
Servicios de Directorio
OpenLDAP  (u otros paquetes)
Sincronización de tiempo
Servicio Network Time Service (NTP) configurado manualmente.
Alta disponibilidad y configuración uniforme
Múltiples proveedores:
-          LDAP Sync (para OpenLDAP)
-        BIND maestro/esclavo
-          Kerberos maestro/esclavo
-          Archivadores y carpetas exportadas con archivos de configuración
Cliente Kerberos de correos
Existen muchos clientes de correos, pero no todos son compatibles con Kerberos

Servidor de correos con Kerberos

Es válido notar la cantidad diferente de productos y las implicaciones a los procesos, gente y tecnología que se requiere para mantener esta capacidad.  Solo imagine que se necesite personal experto para Planear-Ejecutar-Verificar y Mantener la infraestructura, los procesos de operaciones necesitados todo esto con el simple propósito de proporcionar autenticación, esta es la definición del problema de la fragmentación de los servicios de TI.

Por eso es que en la  entrada anterior, el Gerente de informática está preocupado por la falta de flexibilidad que exhibe la organización.  Con tantos especialistas de soluciones de punta hay estrés en coordinación, cooperación y el nivel de especialización promueve la visión de túnel.

Los nombres de entidad de seguridad de servicio (SPN Service Principal Names en Inglés)

Estos son los nombres asociados con un servicio que se ejecutan en un contexto de seguridad  Ejemplos de servicios son servidores web, servidores de archivo, etc.
Su sintaxis es: < tipo de servicio >/< nombre de host >:< puerto TCP o UDP >

De manera práctica, si el servicio web (digamos el servidor Apache o httpd) va a usar Kerberos como autenticación, no solo debe estar compilado con apoyo a Kerberos, sino que el servidor (o host) debe tener un nombre de entidad de seguridad de servicio registrado en el servicio de directorio.  Por ejemplo, si el host es web.corp.contoso.com y servidor web está escuchando en el puerto 8080 su SPN es:
http/web.corp..contoso.com:8080

Si no se especifica un puerto, se asume el puerto por defecto del servidor.  En nuestro ejemplo, el servicio web usa el puerto TCP 80 por defecto.  Note que por el otro lado el cliente (navegador de Internet) debe también ser compatible con Kerberos.

Diagnóstico y Resolución de Problemas con Kerberos

El diagnostico y resolución de problemas con Kerberos es un tema que requiere de experiencia y destreza.  Sin embargo hay una serie de pasos básicos para empezar:
  1. ¿Están los servicios y clientes compilados con compatibilidad a Kerberos?
  2. ¿Funciona la resolución de nombre?  ¿Funciona tanto para el nombre completo (FQDN) como el nombre corto?
  3. Está el reloj sincronizado entre el cliente, servidor y KDC (el KDC es la controladora de dominio de AD)
  4. Se registraron correctamente los nombres de entidad de seguridad de servicio en el directorio (nombre completo (FQDN) y/o nombre corto)?
  5. Finalmente, el hecho de que el cliente se puede autenticar no implica que este esté autorizado para acceder!!!

No hay comentarios:

Publicar un comentario