¿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:
- Se ejecuta en el servidor X;
- Le pide al nuevo usuario que ingrese su nueva contraseña;
- Pide al administrador su contraseña;
- 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:
- Cuando agrega un nuevo usuario, todos los servidores lo recogen automáticamente de la base de datos central.
- 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:
- 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.
- 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 .