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 suestán -rwsr-xr-xactivados, 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 noy 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/sues 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 sudirectamente en lugar de tener que hacerlo sudo su, pero esto no es un inconveniente.
¿Estoy pasando por alto algo? ¿Está el mundo ejecutando permiso susolo por razones históricas? ¿Hay algún inconveniente para eliminar ese permiso que aún no he encontrado?

sudoinstalado? 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), perosupuede usarse para asumir cualquier identidad que el sistema local pueda autenticar.Por ejemplo, si he iniciado sesión como usuario
jimy quiero investigar un problema que semikeha informado, pero que no puedo reproducir, podría intentar iniciar sesión comomikey ejecutar el comando que le está causando problemas.El uso de la
-lopción desuhace que simule un inicio de sesión completo (según lamanpágina).mikeSin embargo, lo anterior requiere el conocimiento de la contraseña de. Si tengosudoacceso, puedo iniciar sesiónmikeincluso sin su contraseña.En resumen, la razón por la que los permisos en el
suejecutable son como muestra, es porquesues una herramienta de propósito general que está disponible para todos los usuarios del sistema.fuente
sudo, olvidé quesuse 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!sudotambié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.susignifica "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,supor 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 desuno 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.somó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
rootsi conoces la contraseña.sudo suEs algo redundante. No hay necesidad de usar dos programas destinados a permitirle ejecutar programas como otro usuario, uno es suficiente. Simplemente usesudo -iosudo -s(osudo /bin/bashetc.) si desea ejecutar shell.Véase más arriba. Bueno, no todos los sistemas tienen
sudocomo alternativa, no estoy seguro si lo consideras histórico.En realidad no, no, que yo sepa. Creo que algunos sistemas se han
suconfigurado para que solo los miembros de un grupo en particular ("wheel") puedan ejecutarlo. Puedes hacer lo mismosudosi 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,
suviene con elloginpaquete, por lo que probablemente no sea una buena idea eliminar el paquete como un todo. (Y el emparejamientologinysujuntos de esa manera parece algo histórico).fuente
wheelgrupo para usarsu. Hay algunos sistemas BSD (solo puedo hablar por OpenBSD) que no se envíansudoen absoluto (es un paquete de terceros). OpenBSD tienedoasuna reimplementación de los conceptos básicos desudo, pero está deshabilitado de forma predeterminada al instalar un sistema nuevo.wheelsi quieres rootearsu. Cualquier cuenta puedesua cualquier cuenta no root para la que tienen la contraseña, independientemente de su membresía en elwheelgrupo.suLimpia 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
passwdes 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
sudoerstienetargetpworootpwestablece.suser ejecutable por todos.