¿Deberíamos deshabilitar al usuario root?

21

¿Deberíamos eliminar la contraseña de root, deshabilitar el inicio de sesión remoto y básicamente exigir a los administradores que utilicen sudo para realizar acciones administrativas?

texto alternativo

jldugger
fuente

Respuestas:

16

Todos mis servidores tienen la cuenta raíz deshabilitada ( sp_pwdpestablecida en *). Esto es necesario sudopara todos los accesos a la raíz. [1] El propósito de esto es auditar todas las actividades del superusuario, para que las personas puedan ver lo que se ha hecho al sistema.

Para una opción más hardcore, puede sudoescribir en un archivo de registro (en lugar de syslog) y hacer que el archivo solo se agregue (usando chattren Linux o chflagsen BSD). De esta manera, nadie puede editar la auditoría después.

[1] También tengo la política de no ejecutar un shell raíz o hacer escapes de shell desde un proceso raíz. (Sin sudo sh -c '...'embargo, está bien usarlo para hacer tuberías o redirecciones).

Chris Jester-Young
fuente
3
"¡Tampoco correr conchas!" Uhm, ¿sabes cuántos programas tienen un comando "soltar al shell"? Incluso antes de empezar a buscar en el control de trabajos cáscara ...
womble
Estoy hablando de "no shell" como una política, no como una opción de sudo. (sudo tiene una opción noexec, pero obviamente que no es estanco a no ser que se restringen los programas específicos que un usuario es capaz de ejecutar.)
Chris Jester-Young
¿Es posible configurar sudo para que no se puedan usar "sudo -s"? Solo he usado sudoers para configurar comandos individuales.
@Graham: Puedes. Sin embargo, como puede ver en los comentarios anteriores, eso no detiene nada, si sus usuarios pueden ejecutar cualquier cosa. La única solución a prueba de agua es un enfoque de lista blanca, donde se enumeran programas específicos que los usuarios pueden ejecutar, y todos deben estar vinculados dinámicamente (para que la opción "noexec" pueda hacer lo suyo).
Chris Jester-Young
Como política en la que confías en los administradores, esto es bueno. Puede ver qué comandos ejecuta la gente, lo que puede ser realmente útil al tratar de resolver lo que ha cambiado.
Hamish Downer
15

Recomiendo enfáticamente no deshabilitar al usuario root. Las conexiones de root Deshabilitar o restringir (vía securetty y vía sshd_config y vía PAM y a través de lo que sea) Si el sistema lo permite, los privilegios de superusuario límite o divide el papel de la raíz (similar a la forma en RSBAC lo hace.) Pero, por favor, por favor , haga no deshabilite la cuenta raíz eliminando la contraseña, de lo contrario será imposible iniciar sesión en el sistema a través de sulogin. sulogines utilizado por todos los initscripts que conozco en caso de errores graves informados por fsck, y eso significa que se bloqueará el sistema si el sistema de archivos raíz se corrompe.

Para aclarar: "deshabilitando la cuenta raíz eliminando la contraseña" me refiero a los diversos mecanismos que terminan en a! o un * en el campo de contraseña de / etc / shadow, o similar. No quiero decir "cambiar el mecanismo de inicio de sesión raíz para que no se le solicite una contraseña".

Mihai Limbăşan
fuente
¿Es este un problema en sistemas como Ubuntu que nunca establecen una contraseña de root? Parece que puedo ejecutar "sudo sulogin", pero quizás no entiendo un aspecto crítico.
jldugger
Desafortunadamente, no estoy familiarizado con la forma en que Ubuntu maneja la raíz. Pero si puede hacer "sudo sulogin" y obtener un shell de root sin que se le solicite una contraseña de root, entonces no, no es un problema, ya que posiblemente se aplicará el mismo mecanismo en el arranque. Puede intentar buscar greogin sulogin a través de los initscripts para verificar cuándo y cómo se invoca.
Mihai Limbăşan
1
Ubuntu no usa sulogin. Si entra en modo de usuario único, obtiene un shell raíz de inmediato. Sin embargo, lea mi comentario (en mi publicación) para ver por qué esto no es un problema, en la mayoría de los casos.
Chris Jester-Young
Además, hay afirmaciones de que tener suo sudoen su sistema disponible para los usuarios significa más riesgos de seguridad que puede evitar si solo tiene usuarios root dedicados. Esa es una posición defendida por los autores de la distribución segura de Owl (y el diseñador Solar entre ellos): unix.stackexchange.com/questions/8581/… intenta presentar su posición con referencias.
imz - Ivan Zakharyaschev
Acabo de tener este mismo problema: bloqueé mi usuario root y se forzó un fsck debido a un restablecimiento completo. Afortunadamente pude arrancar mi Linux defectuoso con la fastbootopción, desbloquear la cuenta raíz y reiniciar para finalmente ejecutarlo fsckmanualmente.
tommyd
3

Tengo la cuenta raíz habilitada en todos mis servidores. Todos los administradores tienen su propio usuario y tienen que iniciar sesión a través de eso. Desde allí cambian a root. (root ssh está deshabilitado)

Mantenga el recuento de administrador bajo. Solo las personas que realmente necesitan acceso root en ese servidor tienen la contraseña.

No soy fanático del sudo. Es demasiado fácil simplemente hacer 'sudo bash' para un shell raíz. Sé que esto se puede desactivar, pero ¿por qué molestarse? Simplemente limite los usuarios que pueden realizar tareas de administrador y hablar entre ellos. Tenemos una política para no permitir que los terminales raíz se abran sin supervisión. Entonces es iniciar sesión, su, hacer el trabajo, cerrar sesión.

Nota: Trabajo en una empresa bastante pequeña (50 empleados) y nos movemos con solo 2 administradores a tiempo parcial (1 windows / 1 linux). Es posible que esta forma de hacer las cosas no sea la mejor cuando tiene órdenes de magnitud de más usuarios. Yo personalmente todavía no usaría sudo. Hay otras formas de registrar la actividad raíz.

Gert M
fuente
Si desea root shell desde una consola, puede hacer 'sudo -i' en lugar de abrirlo desde sudo bash. Personalmente, realmente no me gusta la idea de iniciar sesión como usuario root directamente, ya que es demasiado riesgoso para la cacería maliciosa (es decir, dejar accidentalmente la computadora desbloqueada con el shell raíz abierto).
Spoike
Sin embargo, pierde el registro / auditoría con eso. Haga que todos usen sudo y prohíba a las personas que hagan sudo bash, o sudo -i, o sudo -s con la política corporativa. Eso le brinda un seguimiento de auditoría, y si está empujando todos sus registros a un registro central, es fácil verificar que las personas estén siguiendo las políticas.
Christopher Cashell
Ese es el enfoque adoptado y defendido por los autores de la distribución segura de Owl (y el diseñador Solar entre ellos): unix.stackexchange.com/questions/8581/… intenta presentar su posición con referencias.
imz - Ivan Zakharyaschev
2

Desactivar la contraseña de root es, en mi opinión, una falsa "buena idea". El día que lo necesite, realmente lo necesitará. (de acuerdo con su configuración, es posible que lo necesite para iniciar sesión en modo de usuario único, por ejemplo)

La desactivación del inicio de sesión remoto root puede ser relevante, pero solo si puede iniciar sesión localmente.

Y sí, sudo debería instalarse en cada uno de sus servidores. Es útil y fácil de configurar. ¿Por qué te gustaría no usarlo?

Benoit
fuente
¿Qué pasa si arrancar en modo de usuario único es una opción de grub?
jldugger
¿Cuál es el objetivo de deshabilitar la cuenta raíz? ¿Qué harás si rompes tu binario o configuración sudo (o cualquier herramienta que uses)?
Benoit
Disabling root remote login might be relevant but only if you are able to log on locally.Esto es descaradamente falso. Puede iniciar sesión de forma remota con cualquier cuenta; deshabilitar el inicio de sesión remoto de root no lo limita al acceso local.
Dan
2

Simplemente desactivo el acceso SSH para root y solicito a los usuarios (a menudo solo desarrolladores) que usen claves ssh. Hay demasiados ataques de diccionario y cambiar el puerto SSH no es una opción para nosotros.

De esa manera, no tiene que confiar en la capacidad de nadie para escribir una buena contraseña. Una vez dentro, solo los administradores tienen permisos para sudo.

pablasso
fuente
Cambiar el puerto SSH no tiene sentido de todos modos. Un simple escaneo de puertos lo regala fácilmente. Cuando hago telnet al puerto 22 en mi máquina, obtengo SSH-2.0-OpenSSH_4.7p1 Debian-8ubuntu1.2
Matt Simmons
@MattSimmons Sí, pero la mayoría de los ataques de diccionario son automáticos y muy elementales. No se molestan con el escaneo de puertos; intentan conectarse a direcciones IP aleatorias en el puerto 22 y, si se agota el tiempo de espera, pasan a la siguiente IP de su lista. No es una medida de seguridad, solo ayuda a deshacerse de los ataques automáticos del puerto 22. Obviamente, un ataque dirigido es un juego de pelota completamente diferente.
Dan
2

Sé que este hilo es muy antiguo, pero hay algunos defectos importantes en la lógica de los artículos vinculados y me siento "rant'ie": sudo permite tanto las listas blancas como las listas negras. No solo en negro como se especifica en el artículo vinculado: esto omite la idea de AAA (Autenticación, Autorización y Auditoría): su & sudo permite la autenticación y la responsabilidad graduadas.

Escenario 1 Un administrador introduce accidentalmente un código falso en un sistema, inicia sesión como root, el código tiene acceso completo y es posible que el administrador nunca sepa qué sucedió. Al menos con los inicios de sesión graduados (por ejemplo, su / sudo), se le solicitará al administrador que se autentique si el código falso intenta usar derechos elevados ... Si no se eleva, se limita a los derechos de los usuarios, lo que debería causar un daño mínimo.

Escenario 2 Un administrador deshonesto quiere obtener información / hacer un cambio. Se conectan a la consola (acceso físico a la consola, HP iLo / similar o acceso a la consola vGuest), inician sesión como root y hacen lo que quieran. A menos que se use una cuenta / tarjeta de acceso con nombre para obtener acceso a la consola, probablemente no haya mucha pista de auditoría.

  1. Asegúrese de que realmente sean quienes dicen ser. El robo de identidad no es el problema, la verificación de identidad sí lo es.
  2. Verifique su autorización, solo deles lo que necesitan en ese momento. La autorización gradual les permite elevarse cuando lo necesitan.
  3. Audítelo todo, tenga un registro para saber quién, qué, cuándo y dónde. Preferiblemente por qué también
Micro
fuente
1

Debe exigir a todos que usen sudo para cada comando raíz como política. Nunca hay una razón para ejecutar "sudo bash" o similar, es solo por conveniencia, debido a la ignorancia, o para cubrir las huellas.

Si deshabilita los inicios de sesión en la cuenta raíz directamente, limita su capacidad de arreglar el sistema cuando hay problemas graves.

Si no puede convencer a sus administradores de que inicien sesión como ellos mismos y ejecuten sudo para cada comando que se ejecute como root, y que no se divida en un shell, tiene serios problemas para los que no hay una solución técnica.

carlito
fuente
1

Los autores de Owl Secure Distribuion (y Solar Designer) tienen un punto de vista opuesto cuidadosamente justificado; vea, por ejemplo, la respuesta /unix/8581/which-is-the-safest-way-to-get-root-privileges-sudo-su-or-login/8660#8660 para Una presentación de sus reclamos. El problema de auditar las acciones del superusuario (qué persona hizo qué) también se aborda en su punto de vista (básicamente, la solución es tener varios usuarios root con diferentes nombres).

imz - Ivan Zakharyaschev
fuente