¿Por qué necesito Kerberos cuando puedo usar un nombre de usuario y contraseña para acceder a los servicios?

35

He leído que Kerberos se usa para autenticar usuarios que desean acceder a servicios en varios servidores en una red empresarial, pero aún no entiendo el propósito de Kerberos. ¿Por qué el administrador del sistema no crea una cuenta de usuario para cada usuario en cada servidor, de modo que los usuarios puedan usar su nombre de usuario y contraseña para acceder a los recursos a los que desean acceder? ¿Por qué es necesario un protocolo de autenticación tan elaborado?

    
pregunta Minaj 20.07.2016 - 21:17
fuente

5 respuestas

41
  

¿Por qué el administrador del sistema no crea una cuenta de usuario para cada usuario en cada servidor, de modo que los usuarios puedan usar su nombre de usuario y contraseña para acceder a los recursos a los que desean acceder?

Imagina que tienes 50 usuarios y 50 servidores. En aras de la simplicidad, suponga que los 50 usuarios deben tener acceso a los 50 servidores, todos tienen los mismos privilegios en todos los servidores y nunca tenemos que cambiar estos privilegios. Esto es un total de 2.500 entradas de contraseña que deben crearse.

Agregando un nuevo usuario

Cuando agrega un nuevo usuario, el administrador tiene que ir a los 50 servidores y agregar ese usuario a todos ellos. Esto necesitaría que el administrador ejecute el comando Crear usuario en los 50 servidores. Ese bit se puede automatizar, pero la parte que no se puede automatizar de manera segura es que el usuario deberá ingresar su contraseña 50 veces, una vez por servidor.

¿Por qué este último problema? Porque los sistemas de autenticación de contraseña están diseñados para que no retengan una copia de la contraseña , ni siquiera una copia encriptada. Entonces, cuando el usuario ingresa su nueva contraseña en el servidor # 1, ese servidor olvida la contraseña de inmediato, por lo que tendría que ingresarla nuevamente para el servidor # 2 y # 3, etc.

Agregando un nuevo servidor

Tal vez ahora estás pensando que podrías escribir un script que:

  1. Se ejecuta en el servidor X;
  2. Le pide al nuevo usuario que ingrese su nueva contraseña;
  3. Pide al administrador su contraseña;
  4. Inicia sesión en los servidores del 1 al 50 y crea la cuenta de usuario en cada uno de ellos con la misma contraseña.

Eso es un poco arriesgado, pero incluso si lo intentas, todavía te queda otro problema más grande. Supongamos que su empresa compra un nuevo servidor y ahora necesitamos que nuestros 50 usuarios tengan acceso a este servidor. Bueno, dado que ninguno de los servidores contiene una copia de las contraseñas de los usuarios, el administrador tendría que ir a cada usuario y hacer que ingresen una contraseña para su cuenta en el nuevo servidor. Y no hay forma de evitar este a menos que haya guardado copias de las contraseñas de los usuarios, lo que, de nuevo, es una práctica insegura .

Base de datos de contraseñas centralizada

Para resolver estos problemas, realmente necesita que su base de datos de usuario / contraseña esté centralizada en un solo lugar, y que todos los servidores consulten esa base de datos para autenticar los nombres de usuario y las contraseñas. Esto es realmente lo mínimo que necesita para un entorno multiusuario / multiservidor manejable. Ahora:

  1. Cuando agrega un nuevo usuario, todos los servidores lo recogen automáticamente de la base de datos central.
  2. Cuando agrega un nuevo servidor, recoge automáticamente a todos los usuarios de la base de datos central.

Hay una variedad de mecanismos para hacer esto, aunque todavía no tienen lo que Kerberos ofrece.

Kerberos

Una vez que tenga una base de datos tan centralizada, tiene sentido ampliarla con más funciones, tanto por su facilidad de administración como por su comodidad. Kerberos agrega la capacidad de que, cuando un usuario ha iniciado sesión correctamente en un servicio, ese servicio "recuerda" el hecho y es capaz de "demostrar" a otros servicios que este usuario inició sesión correctamente. Así que esos otros servicios, presentados con tal prueba, permitirán al usuario ingresar sin pedirles una contraseña.

Esto ofrece una combinación de comodidad y seguridad:

  1. A los usuarios no se les pide su contraseña una y otra vez cuando ya han ingresado con éxito una vez ese día.
  2. Cuando tiene programadores que escriben programas que acceden a múltiples servidores, y esos servidores requieren autenticación, los programas ahora pueden autenticarse en esos servidores sin tener que presentar una contraseña, reutilizando las credenciales de la cuenta del servidor con la que se ejecutan.

Lo último es importante porque minimiza o elimina una práctica insegura pero muy común: programas automatizados que requieren que pongas copias de los nombres de usuario y contraseñas en los archivos de configuración. Una vez más, una idea clave de la administración segura de contraseñas es no almacenar copias de contraseñas, ni siquiera copias encriptadas .

    
respondido por el Luis Casillas 20.07.2016 - 22:55
fuente
27

En pocas palabras, eso sería una pesadilla administrativa.

Kerberos les permite a los administradores hacer que cualquier número de empleados utilicen las mismas credenciales para iniciar sesión en los recursos en todo su dominio.

Digamos que esto no existía en una red simple.

  1. El usuario ingresa la contraseña para desbloquear su computadora.
  2. El usuario desea asignar una unidad de red. Ahora deben volver a ingresar su contraseña
  3. El usuario quiere recibir un correo electrónico. Abren Outlook y luego necesitan ingresar otra contraseña.
  4. El usuario debe iniciar sesión en la intranet de la empresa. Esa es otra contraseña.

Tienes la idea. No usar Kerberos significa que el usuario debe mantener las contraseñas de todos los servidores que hospedan servicios a los que necesitan acceder. Esto sería un dolor de cabeza para los usuarios y administradores por igual. La mayoría de las políticas corporativas establecen que los usuarios deben cambiar su contraseña cada X días. ¿Te imaginas ser un usuario final y necesitar cambiar tu contraseña en 5 servidores cada vez que lo necesites?

Desde una perspectiva de seguridad, el administrador obtiene todos sus intentos de inicio de sesión (exitosos y fallidos) en un solo lugar en lugar de iniciar sesión en 5 servidores diferentes. Esto ayuda tanto a la solución de problemas de inicio de sesión (es decir, a los bloqueos) como a la simplificación de los registros de auditoría.

    
respondido por el DKNUCKLES 20.07.2016 - 21:27
fuente
12

Kerberos no está ahí para su comodidad, es una medida de seguridad mejorada. La conveniencia es un beneficio secundario.

Una gran explicación es Diseño de un sistema de autenticación: un diálogo en cuatro escenas

Básicamente, en lugar de simplemente pasar un token mágico (es decir, su contraseña), obtiene un "ticket", que está firmado por una fuente confiable de la verdad (es decir, KDC de Kerberos, Microsoft AD, etc.). Su boleto le dice a los servicios quiénes son y a qué grupos de derechos pertenece. Piense en ello como comprar un boleto de admisión a un parque de diversiones en lugar de darle dinero a un asistente en cada paseo en un parque.

    
respondido por el duffbeer703 20.07.2016 - 22:47
fuente
8

Para evitar escalada lateral .

La complejidad administrativa de la administración de contraseñas se puede reducir utilizando una base de datos de contraseñas centralizada, como LDAP. Sin embargo, hacerlo crea el riesgo de una escalada lateral. Si un atacante toma el control de un servidor, puede permanecer en silencio y rastrear las contraseñas. Estas contraseñas se pueden usar para comprometer otros servidores: escalamiento lateral.

Kerberos intenta resolver esto: los usuarios no envían su contraseña a cada servidor; solo lo envían al servidor de autenticación y presentan un ticket a otros servidores. En los últimos tiempos, se han identificado algunas fallas que son explotadas por Herramientas como mimikatz. Sin embargo, al menos Kerberos está diseñado para prevenir la escalada lateral; LDAP no hace nada para detenerlo.

    
respondido por el paj28 21.07.2016 - 20:55
fuente
0

El beneficio principal de Kerberos es permitir que el cambio de cuenta y el cambio de contraseña se sincronicen de inmediato.

Tengo soluciones disponibles para la administración centralizada de cuentas distribuidas, y agentes de contraseñas del lado del cliente que responden al 99% de las solicitudes de contraseña después del inicio de sesión, pero todos suponen que los cambios de contraseña del usuario son raros y que podemos esperar hasta que Trabajo por lotes nocturno para que el cambio de contraseña tenga efecto. Lo mismo ocurre con los cambios de permisos en la mayoría de los casos; Si necesitamos un cambio de permiso para que surta efecto ahora, las herramientas menores no pueden hacerlo.

Kerberos muestra en sus capacidades la capacidad de autenticar conexiones de manera segura sin encriptarlas. Esto demuestra ser poco deseable en la práctica y no se debe confiar en esa capacidad. El robo de boletos Kerberos fue la esencia de un ataque a SMB hace un año que proporcionaría todo el acceso como usuario siempre y cuando el usuario estuviera usando cualquier recurso compartido de red en cualquier lugar.

    
respondido por el Joshua 21.07.2016 - 18:35
fuente

Lea otras preguntas en las etiquetas