He trabajado en organizaciones en las que, en lugar de crear un nuevo usuario de Ubuntu por persona que quiera iniciar sesión en una máquina, los administradores de sistemas simplemente agregan la clave ssh de cada usuario a .ssh/authorized_keys
, y todos ssh
a la máquina como ( por ejemplo ) ubuntu@host
o ec2-user@host
. (Por cierto, también he visto esto practicado en Mac minis compartidos en un entorno de laboratorio). ¿Es esta práctica aceptada o un antipatrón?
Los hosts en cuestión se usan principalmente para las pruebas, pero también se toman medidas que generalmente requieren una configuración por usuario y se realiza un seguimiento como lo realiza un usuario específico, como la creación y la inserción de git commits, que actualmente se realizan utilizando un git genérico usuario.
fuente
Respuestas:
Sí, es un mal hábito. Se basa en la suposición básica de que nadie malicioso está (o estará) presente y que nadie comete errores. Tener una cuenta compartida hace que sea trivial que las cosas sucedan sin responsabilidad y sin ningún límite: un usuario que rompe algo lo rompe para todos.
Si la razón de este esquema de intercambio de UID es simplemente reducir el costo administrativo de crear nuevas cuentas y compartir la configuración, entonces quizás los administradores deberían invertir algo de tiempo en un sistema de automatización como Ansible , Chef , Puppet o Salt que hace cosas como crear usuarios cuentas en múltiples máquinas extremadamente simples.
fuente
Para empezar, esto no me sorprende, y trabajo en un entorno extremadamente seguro. Cada uno tiene su propio usuario y máquina y clave ssh, y para trabajar en un servidor ingresamos, como root u otro usuario, a través de un relé de registro si es necesario. Todo lo que hacemos se registra como hecho por el propietario de la clave ssh, por lo que la responsabilidad está bien.
¿Cuál sería la alternativa? Se deben hacer muchas cosas como un usuario determinado, sin mencionar root. Sudo? Eso está bien para ciertas tareas muy restringidas, pero no para administrar el sistema.
Sin embargo, no estoy seguro acerca de su último párrafo, ¿quiere decir que alguien podría empujar un git commit a un usuario genérico? Eso rompería la responsabilidad, y romper la responsabilidad es malo. Hacemos git desde la máquina donde iniciamos sesión y nos autenticamos en git con nuestra clave ssh ...
Autenticación, autorización y contabilidad (AAA) es la expresión clásica: está autenticado con su clave ssh, está autorizado a hacer cualquier cosa que el usuario genérico pueda hacer porque su clave está en las claves autorizadas, y necesita contabilidad para que lo que haga Puede ser revisado después del hecho.
fuente
sudo
aceptable para la administración general de una máquina?Claramente depende del caso de uso del sistema. Si es un sistema para probar de vez en cuando, está bien para mí. También tenemos tales sistemas. Si la empresa no tiene ningún tipo de gestión de identidad (LDAP, IPA), crear un nuevo usuario sin ningún control remoto en un sistema aleatorio es una gran carga.
Pero para el trabajo diario cuando el error de alguien hace que toda la empresa no pueda operar, no es una buena idea.
fuente
Todas esas respuestas abordan la preocupación de la responsabilidad, que es un problema importante y real en sí mismo, pero el uso de una cuenta compartida también permite ataques no tan sutiles a otros usuarios:
Considere un atacante que crea un
ssh
script malicioso que registra la contraseña ingresada y la colocaPATH
para el usuario compartido (lo cual se hace fácilmente). Ahora la siguiente persona que inicia sesión en esa máquina con el usuario compartido y decidessh
a otro lugar (esta vez con su cuenta personal, no compartida) puede tener una desagradable sorpresa.Básicamente, usar una cuenta compartida en una computadora es como beber del baño de pies en la piscina pública.
fuente
En general, compartir una cuenta es una mala idea por las siguientes razones:
Y por supuesto seguro que hay aún más desventajas ... Pero no quiero profundizar más.
El punto es que podría estar enfrentando la necesidad de compartir una cuenta para administrar un servicio que se ejecuta bajo una cuenta de usuario determinada a la que todos los administradores deberían poder acceder.
En dicha configuración, tiene la posibilidad de compartir esta cuenta para iniciar sesión (por las razones anteriores, preferiría no hacerlo) o iniciar sesión individualmente y cambiar el usuario a la cuenta compartida (sugeriría eso).
Las herramientas de auditoría aún le permitirán rastrear quién ha ejecutado qué pero aún comparte la misma cuenta.
fuente