En su mayor parte, se gana poco al deshabilitar los inicios de sesión raíz remotos. Ayuda marginalmente a aplicar una política que los administradores inician sesión a través de sus propias cuentas y su
enrutar según sea necesario (o usar sudo
posiblemente con sudosh
... dependiendo de sus políticas).
La creación de contraseñas raíz extremadamente largas y engorrosas (efectivas siempre y cuando todavía no esté utilizando el antiguo deshilachado de sal DES + de 12 bits para sus contraseñas) es tan eficaz para hacer cumplir dicha política.
Un sitio con el que estoy familiarizado tenía un sistema mediante el cual las contraseñas únicas se generaban aleatoriamente para cada host, se almacenaban en una base de datos y se enviaban a los sistemas. Los administradores debían usar ssh
con sus cuentas normales y sudo
para la mayoría de las operaciones. Sin embargo, la contraseña de root estaba disponible para ellos a través de un servicio web interno basado en SSL (que además requería su token y PIN RSA SecurID). Obtener una contraseña de root implicaba ingresar una justificación (generalmente un enlace a un número de ticket de Remedy (TM)) y accesos donde se audita periódicamente. Una de las pocas razones aceptables para usar la contraseña de root directamente fue en aquellos casos en que se detuvo un sistema fsck
durante el proceso de arranque ... ysulogin
requería una contraseña raíz real para ejecutar manualmente la verificación del sistema de archivos y los procesos de reparación. (Hubo una discusión sobre métodos alternativos para esto --- que son relativamente fáciles para Linux, pero se vuelven mucho más difíciles a medida que intenta extender sus procedimientos para tener en cuenta los muchos sistemas heredados HP-UX, AIX y SunOS y Solaris anteriores que todavía estaban en producción en ese ambiente).
Hay casos en los que es necesaria una contraseña de root, o al menos es la mejor alternativa disponible. Mantenerlo disponible mientras lo hace lo suficientemente robusto contra los tipos de amenazas que puede anticipar es generalmente su mejor estrategia.
Otro sitio que conozco tiene un enfoque bastante elegante para la administración descentralizada de cuentas. Tienen paquetes user- * y sudo- * (piense en RPM) que se instalan en los sistemas utilizando los procedimientos normales de gestión de paquetes y la infraestructura de automatización. En su caso, el paquete sudo- * depende del paquete user- * correspondiente. Esto es bueno porque le permite tener grupos de máquinas con cuentas localizadas (todas las cuentas son administradores, desarrolladores, personal de soporte o cuentas "sin cabeza") y elimina la dependencia de LDAP / NIS u otros servicios de identidad y autenticación en red. (Esto reduce el acoplamiento entre sistemas los hace significativamente más robustos).
Una cosa que me gusta de ese enfoque es que brinda flexibilidad. Cualquier persona con sudo
acceso puede emitir un comando para agregar un usuario normal u otra sudo
cuenta de usuario. Entonces, si estoy trabajando en un ticket, cualquiera de las personas que ya tienen acceso a un sistema me puede dar acceso fácilmente. No hay demoras mientras un ticket para agregarme a alguna lista de control de acceso en alguna base de datos central se procesa a través de un proceso de aprobación centralizado y finalmente propaga un cambio de regreso al sistema en cuestión. Cualquiera de los sudo
usuarios autorizados en el sistema puede darme acceso y luego eliminarme. (Sí, si fuera malvado y me juegansudo
Podría modificar maliciosamente cosas para retener el acceso ... de hecho, hay algunas cosas que podría hacer como usuario normal para retener el acceso después de dicha eliminación. Sin embargo, esa no es la amenaza que les preocupa. Mi acceso todavía está limitado a un número relativamente menor de sistemas en general; por lo que el impacto de una cuenta comprometida es aún más limitado que la mayoría de los esquemas similares que he visto.