Los usuarios pueden convertirse en root usando "sudo sudo su -"

Los usuarios pueden convertirse en root usando "sudo sudo su -"

He otorgado los siguientes permisos en el archivo sudoers.

Cmnd_Alias      SUROOT=/bin/su "",\
                       /bin/su -,\
                       /bin/su - root,\
                       /bin/su root,\
                       /usr/bin/su "",\
                       /usr/bin/su -,\
                       /usr/bin/su - root,\
                       /usr/bin/su root
kj ALL = (ALL) ALL, !SUROOT

cuando intento acceder sudo su -esta bloqueado

kj@u1804-1:~$ sudo su -
[sudo] password for kj:
Sorry, user kj is not allowed to execute '/bin/su -' as root on u1804-1.

Pero cuando intento acceder sudo sudo su -me lo permite.

kj@u1804-1:~$ sudo sudo su -
[sudo] password for kj:
root@u1804-1:~#

Necesito bloquear el acceso al usuario root ¿Cómo puedo bloquear sudo sudoel comando?

Respuesta1

No puede lograr esto bloqueando comandos individuales. Hay decenas, si nocientos, de comandos que las personas pueden usar para convertirse en root a través de sudo:

sudo -s
sudo -i
sudo bash
sudo env su
sudo /bin/sh
sudo env sudo
sudo busybox sh
sudo unshare
sudo chroot /
sudo systemd-run --shell
sudo nvim -c ":terminal"
sudo perl -e 'exec("bash")'
sudo git -c protocol.ext.allow=always ls-remote ext::"bash -c sh<&2>&2"

Podrían cambiar el nombre de los comandos bloqueados:

sudo cp -a /sbin/su /sbin/really-not-su && sudo really-not-su

Simplemente podrían cambiar las reglas que has establecido:

sudo nano /etc/sudoers

Esperemos que se haya aclarado el punto: si le estás dando a la gente acceso root,les estás dando acceso de root.La única opción es tener una lista depermitidocomandos y bloquear todo lo demás, e incluso entonces, la mitad de esos comandos tendrán una manera de obtener acceso completo a la raíz.

(AppArmor o SELinux pueden ayudar aquí).

Respuesta2

Sugiero quizás el enfoque opuesto: en lugar de otorgar a algunas personas permisos de root ilimitados, permitirles ejecutar algunos comandos sin sudoespecificar la contraseña. Esto les permitiría ejecutar las operaciones que necesitan hacer, pero no más que eso.

El sudoersarchivo puede incluso definir los parámetros permitidos en los comandos, también con comodines para permitir la inclusión de cadenas en el comando.

Este enfoque se describe mejor en una respuesta de la publicación de Unix Stackexchange
Cómo ejecutar de forma remota el comando ssh un comando sudo sin contraseña.

puedes decirle a Sudo que omita la contraseña de algún comando.

por ejemplo en/etc/sudoers

archemar  ALL = (www-data) NOPASSWD: /bin/rm -rf /var/www/log/upload.*

esto me permite usar

sudo -u www-data /bin/rm -rf /var/www/log/upload.*

como archemar sin contraseña.

Tenga en cuenta que

sudo -u www-data rm -rf /var/www/log/upload.*

no funcionará (le pedirá una contraseña) a rmdiferencia de /bin/rm.

Asegúrese de editar /etc/sudoersusando visudoel comando.

Una vez que haya alcanzado el nivel avanzado, es posible que desee tener sus propios sudoarchivos en formato /etc/sudoers.d.

información relacionada