¿Cómo es sudo más seguro que usar directamente su si el usuario tiene acceso a todos los comandos?

¿Cómo es sudo más seguro que usar directamente su si el usuario tiene acceso a todos los comandos?

He estado leyendo sobre las diferencias entre usar suy sudo, y todos parecen estar de acuerdo en que el sudoenfoque es más seguro que permitir el acceso a la cuenta raíz. Dicen que con la cuenta root podrías romper todo tu sistema con un solo comando. Esto lo entiendo. PERO el usuario inicial creado en el sistema también tiene acceso a todos los comandos usando sudo. Esto lo puedo averiguar ejecutando su -l. Si este es el caso, entonces simplemente puedo ejecutarlo sudo <game-ending command>para arruinar mi sistema. Entonces, ¿cómo es este enfoque mejor o más seguro que permitirme acceso directo a la cuenta de superusuario? Puedo ejecutar todos los mismos comandos...

¿Es porque al usar sudola línea de comando le estoy diciendo explícitamente a la computadora que creo que sé lo que estoy haciendo? ¿Creen que la gente olvidará que están bajo la cuenta de superusuario a menos que lo digan explícitamente?

La gente también afirma que si el sistema se viera comprometido y alguien extranjero ingresara, estar en la cuenta raíz les permitiría hacer cosas terribles en mi sistema. Pero me parece que si ya tienen acceso a mi cuenta y conocen mi contraseña, pueden hacer las mismas cosas terribles usando sudo e ingresando mi contraseña, ya que ni siquiera necesitan saber la contraseña del superusuario. ¿Qué no entiendo aquí?

Respuesta1

Personalmente no lo considero necesariamente más seguro y la mayoría de los beneficios (de sudo) se encuentran en un sistema multiusuario. En un sistema de un solo usuario, probablemente sea un lavado.

Los beneficios son (sin ningún orden en particular):

  • sudo tiene un registro superior. sudo registra cada comando.
  • sudo permite un control de grano más fino. Se puede configurar sudo para dar acceso de root a algunos pero no a todos los comandos.
  • sudo usa la contraseña de inicio de sesión. Esto evita tener que proporcionar la contraseña de root (como lo haría con su) y está relacionado con el punto anterior sobre el control/acceso más detallado a root.
  • En Ubuntu, de forma predeterminada, la cuenta raíz está bloqueada. Esto disuade a los piratas informáticos de iniciar sesión (de forma remota a través de, por ejemplo, ssh) y tienen que adivinar tanto un nombre de usuario como una contraseña. Si la cuenta raíz no está bloqueada, como es el caso de su, entonces sólo necesitan descifrar la contraseña de raíz.
  • sudo -ies probablemente el mejor método para aislar las variables ambientales de root de su usuario. Esto surge de vez en cuando pero es moderadamente esotérico. Verhttps://help.ubuntu.com/community/RootSudo#Special_notes_on_sudo_and_shells
  • algunas personassienten que tener que escribir sudo antes de cada comando que desean ejecutar como root o tener un tiempo de espera de sudo les permite detenerse y pensar con mayor claridad y reduce sus errores o la ejecución de comandos erróneos. Si hacerlo le ayuda, también sería un beneficio.

Probablemente haya más beneficios, pero esos son los principales, en mi humilde opinión.

Ver también -https://help.ubuntu.com/community/RootSudo

Para intentar responder algunos de sus otros pensamientos:

  • No hay nada en su o sudo que le impida ejecutar código malicioso siempre que conozca la contraseña. Ninguno de los dos es más seguro ni mejor.
  • Los crackers pueden obtener acceso al shell mediante varios métodos. Cuando vea "ejecutar código arbitrario" en un aviso de seguridad,https://usn.ubuntu.com/usn/- eso significa que un cracker puede ejecutar /bin/bash o cualquier otro código. Por lo tanto, un cracker, a través de varios exploits, puede obtener acceso al shell sin conocer su nombre de usuario o contraseña. Ni sudo ni su ayudan con esto.
  • Si un cracker tiene acceso de shell, puede causar mucho daño sin acceso de root. Por ejemplo, el ransomware que cifra todos sus datos personales.
  • Si un cracker tiene acceso de shell a una cuenta con acceso de root, ya sea a través de su o sudo, el cracker puede obtener acceso de root a través de varios métodos que están más allá del alcance de esta discusión. Ni sudo ni su son superiores a este respecto tampoco.

Entonces, si bien ha observado problemas o fallas con sudo, su tiene exactamente las mismas vulnerabilidades y su no es superior a sudo en esos aspectos, en mi humilde opinión.

Respuesta2

Imagina que tienes 20 minutos para hacer algo complejo. Tienes un poco de resaca y tienes que darte prisa. "Usemos su", dices. “Ahorrará algo de tiempo” es su razonamiento.

Por accidente escribes

rm -rf /*

en lugar de

rm -rf ./*

Su sistema ahora se está bloqueando y tiene 10 minutos hasta la fecha límite.

Si elige explícitamente cuándo necesita root, puede minimizar la posibilidad de que esto suceda. Es posible que Root no sea necesario, rm -r ./*entonces, ¿por qué usarlo? ¿Por qué correr el riesgo?

Eso es lo que significa aquí "seguridad". Minimizar el riesgo de que los usuarios (todos los usuarios, no sólo los principiantes) cometan un error fatal.

Por supuesto, este es un ejemplo extremo que no se debe permitir que suceda en un entorno de producción (te garantizo que ha sucedido en un entorno de producción).

En cuanto a la seguridad, hay algunas cosas para las que sudo también es mejor. Como@Pantera dice- registro, restricciones, contraseña de root es SPOF, etc.)

Respuesta3

Quiero agregar un poco de perspectiva histórica a las otras respuestas. Desafortunadamente, no tengo ninguna fuente disponible excepto mis propios recuerdos de discusiones de Usenet y artículos de revistas.

Hace algún tiempo, en la década de 1990, las distribuciones hacían que fuera más fácil instalar Linux en su propio hardware, incluso sin muchos conocimientos de informática.¹ Así, Linux comenzó a atraer cada vez a más personas que, sorprendentemente, no habían sido capacitadas anteriormente como administradores de sistemas en algún dialecto UN*X. En cambio, muchos estaban acostumbrados a sistemas (de usuario único) como Windows 95/98. Y aprendieron que la mayoría de las tareas de administración del sistema Linux hacían necesario trabajar bajo esa extraña cuenta "root".

Por lo tanto, algunos usuarios simplemente iniciaron sesión comoraízy utilizó esa cuenta para todo su trabajo diario. ¿Por qué deberían tener que escribir suy elraízcontraseña una y otra vez o iniciar sesión en un nuevo tty solo para algunos comandos de administrador? Pero usandoraízPorque, por supuesto, no todo es una buena idea, ya que podrías causar mucho más daño a tu sistema con algún comando descuidado en el lugar equivocado. Esto incluso llevó a alguna distribución (¿era SuSE?) a modificar el fondo del escritorio para elraízusuario para mostrar una gran advertencia de que debe usar esa cuenta solo para tareas administrativas.

Entonces, la forma Ubuntu sudotiene algunas ventajas (además de las que yalistado por pantera).

  • No puedes iniciar sesión directamente en elraízcuenta.² :-)
  • El proceso de instalación no le pedirá una contraseña de root (adicional), sólo necesita una contraseña (la de su usuario).
  • sudoalmacena en caché sus credenciales, por lo que para múltiples comandos de administrador en secuencia, solo tiene que ingresar su contraseña una vez (a diferencia de su). Esto reduce la necesidad de simplemente abrir un shell o una nueva terminal conraízprivilegios.
  • Y hace que sea más fácil decirles a los usuarios en línea y en la documentación qué comandos deben ingresar como administrador y cuáles no.³

¹ Y para aquellos que no se atrevían a hacerlo ellos mismos, hubo fiestas de instalación.
² Pero túpoderuse un comando como sudo -io sudo su - rootpara obtener un shell raíz después de iniciar sesión como usuario normal.
³ Pero sabes, por supuesto, queno debería simplemente copiar y pegar comandos de Internet, ¿bien?

Respuesta4

Dependiendo de la configuración, sudo <game ending command>no necesariamente funcionará. Por supuesto, si la sudoersconfiguración dice "usuario TODOS=(TODOS) TODOS", sudono ofrecerá protección adicional. Sin embargo, puede especificar una lista de comandos privilegiados que necesita ejecutar con frecuencia, como instalar nuevos paquetes, y omitir comandos peligrosos como rm.

De esta manera, puede ejecutar todos los comandos si inicia sesión como root, pero como solo lo necesitará ocasionalmente, el riesgo de ejecución <game ending command>se reducirá sustancialmente.

información relacionada