Tengo un servidor sin cabeza que está conectado remotamente por varios usuarios. Ninguno de los otros usuarios está en el archivo sudoers, por lo que no pueden obtener la raíz a través de sudo
. Sin embargo, dado que los permisos su
están -rwsr-xr-x
activados, no hay nada que les impida intentar forzar por fuerza bruta la contraseña de root.
Se podría argumentar que si un usuario conoce la contraseña de root, puede comprometer el sistema de todos modos, pero no creo que este sea el caso. OpenSSH está configurado con PermitRootLogin no
y PasswordAuthentication no
, y ninguno de los otros usuarios tiene acceso físico al servidor. Por lo que puedo decir, el permiso de ejecución mundial /usr/bin/su
es la única vía para los usuarios que intentan obtener root en mi servidor.
Lo que me desconcierta aún más es que ni siquiera parece útil. Me permite correr su
directamente en lugar de tener que hacerlo sudo su
, pero esto no es un inconveniente.
¿Estoy pasando por alto algo? ¿Está el mundo ejecutando permiso su
solo por razones históricas? ¿Hay algún inconveniente para eliminar ese permiso que aún no he encontrado?
sudo
instalado? Yo diría que es un gran inconveniente allí;)Respuestas:
Un punto que falta en la respuesta de ilkkachu es que elevar a root es solo un uso específico para
su
. El propósito general de su es abrir un nuevo shell bajo la cuenta de inicio de sesión de otro usuario. Ese otro usuario podría serroot
(y quizás lo sea más a menudo), perosu
puede usarse para asumir cualquier identidad que el sistema local pueda autenticar.Por ejemplo, si he iniciado sesión como usuario
jim
y quiero investigar un problema que semike
ha informado, pero que no puedo reproducir, podría intentar iniciar sesión comomike
y ejecutar el comando que le está causando problemas.El uso de la
-l
opción desu
hace que simule un inicio de sesión completo (según laman
página).mike
Sin embargo, lo anterior requiere el conocimiento de la contraseña de. Si tengosudo
acceso, puedo iniciar sesiónmike
incluso sin su contraseña.En resumen, la razón por la que los permisos en el
su
ejecutable son como muestra, es porquesu
es una herramienta de propósito general que está disponible para todos los usuarios del sistema.fuente
sudo
, olvidé quesu
se puede usar para algo más que solosudo -s
. Y sin ser un sudoer, esta sería la única forma de cambiar de usuario sin alterar las claves ssh. Para mi caso de uso, esta es otra razón para eliminar el permiso, pero ahora entiendo por qué el permiso de ejecución mundial está configurado de forma predeterminada. ¡Gracias!sudo
también se puede usar para asumir la identidad de un usuario que no searoot
. Simplemente permite un control más preciso sobre quién puede hacer qué y quién, incluso asumir otra identidad sin la necesidad de la contraseña de esa identidad.su
significa "superusuario", lo que hace, cuando no se especifica ningún usuario (o la raíz es explícitamente especificada) pero también significa "cambiar de usuario". Este segundo uso de,su
por lo tanto, se olvida fácilmente.Históricamente (en unidades que no son GNU), no lo era, o al menos verificaba manualmente si estaba permitido en un grupo llamado "rueda"
su
. La versión de GNU desu
no reproducía esta funcionalidad debido a la ideología de RMS sobre el control de acceso en ese momento:Puede encontrar mucho más sobre el asunto buscando en Google "wheel group rms" o similar.
fuente
Sí. Suponiendo su sistema Linux habitual, el
pam_unix.so
módulo retrasa un intento de autenticación fallido en ~ dos segundos, pero no creo que haya nada que detenga los intentos simultáneos.Los intentos fallidos se registran, por supuesto:
Forzar una contraseña de forma bruta debería aparecer de manera prominente en los registros, si tiene algún tipo de sistema para monitorearlas. Y si tiene usuarios locales que no son de confianza, tal vez debería hacerlo. Los usuarios locales que no son de confianza también podrían intentar usar cualquier explotación de escalada de privilegios solo local, y son mucho más comunes que la escalada de privilegios remota.
Por supuesto, es útil, te permite elevarte a ti mismo
root
si conoces la contraseña.sudo su
Es algo redundante. No hay necesidad de usar dos programas destinados a permitirle ejecutar programas como otro usuario, uno es suficiente. Simplemente usesudo -i
osudo -s
(osudo /bin/bash
etc.) si desea ejecutar shell.Véase más arriba. Bueno, no todos los sistemas tienen
sudo
como alternativa, no estoy seguro si lo consideras histórico.En realidad no, no, que yo sepa. Creo que algunos sistemas se han
su
configurado para que solo los miembros de un grupo en particular ("wheel
") puedan ejecutarlo. Puedes hacer lo mismosudo
si quieres (chown root.sudousers /usr/bin/sudo && chmod 4710 /usr/bin/sudo
).O simplemente puede eliminar uno o ambos programas si no los necesita. Aunque en Debian,
su
viene con ellogin
paquete, por lo que probablemente no sea una buena idea eliminar el paquete como un todo. (Y el emparejamientologin
ysu
juntos de esa manera parece algo histórico).fuente
wheel
grupo para usarsu
. Hay algunos sistemas BSD (solo puedo hablar por OpenBSD) que no se envíansudo
en absoluto (es un paquete de terceros). OpenBSD tienedoas
una reimplementación de los conceptos básicos desudo
, pero está deshabilitado de forma predeterminada al instalar un sistema nuevo.wheel
si quieres rootearsu
. Cualquier cuenta puedesu
a cualquier cuenta no root para la que tienen la contraseña, independientemente de su membresía en elwheel
grupo.su
Limpia el medio ambiente entonces? No parece hacer eso en Debian ...Ya tienes algunas buenas respuestas, pero hay una parte de tu publicación que no abordan.
Esa es una suposición peligrosa. Si ha establecido una buena contraseña para root, entonces en la mayoría de los casos es mucho más probable que una escalada de privilegios exitosa se deba a la explotación de un error en el núcleo o un binario setuid (por supuesto, también puede eliminar el setuid poco de eso, pero
passwd
es setuid, y si desea una alta seguridad, también debe ofrecer eso a sus usuarios, y negarles la opción de cambiar su contraseña no es compatible con eso).fuente
su debe ser ejecutable en todo el mundo para que todos puedan ejecutarlo. En muchos sistemas, se puede usar para cambiar a otro usuario, proporcionando su contraseña.
Si le preocupa que alguien fuerce brutalmente la contraseña de root, puede deshabilitarla. (invalidar el hash para que ninguna contraseña dada pueda coincidir)
No sé sobre el consenso, pero consideraría poder iniciar sesión como root directamente, un problema de seguridad en sí mismo.
fuente
Las otras respuestas son correctas diciendo que "su" le permite iniciar sesión en cuentas que no sean root.
Sin embargo, una nota sobre "sudo su". En realidad, esto le permite iniciar sesión en la cuenta raíz sin conocer la contraseña de root. Debe saber la contraseña de la cuenta con la que ejecuta sudo, así como tener esa cuenta en el archivo sudoers.
fuente
sudoers
tienetargetpw
orootpw
establece.su
ser ejecutable por todos.