Pero hay una solución que podría interesarle más: el registro de terminal.

Pero hay una solución que podría interesarle más: el registro de terminal.

Edito mi pregunta para dar el objetivo y no una suposición de la solución.

  • Distribuciones basadas en RHEL
  • El usuario root nunca se utiliza y su contraseña se mantiene en secreto.

Todos los comandos que se ejecutan sudose registran en /var/log/secure. Cuando un usuario cambia a root usando sudo su/sudo -i, todos los comandos ejecutados en la sesión no se registran.

Mi objetivo es estar atento a lo que hacen los administradores.


Ejemplo

Si un usuario hace:

alexis$ sudo visudo   # this is logged
alexis$ sudo su       # this is logged
root# visudo          # this isn't logged since it's run under root

El comando visudoy luego suse registran como iniciados por el usuario alexispero ejecutados con root. Sin embargo, todos los siguientes comandos no se registrarán porque se ejecutan como root en un shell raíz.

1 de noviembre 13:28:29 3020m sudo[6906]: alexis: TTY=pts/0 ; PWD=/casa/alexis ; USUARIO=raíz;COMANDO=/bin/su


En breve,No quiero que un usuario (administrador en rueda) pueda cambiar a un shell raíz. Si alguien quiere ejecutar un shell root, debe conocer la contraseña del root.

Respuesta1

No es posible; lea hasta el final. Si el usuario tiene acceso completo a Sudo, siempre puede usar sudo -i -u root, sudo /usr/bin/basho sudo /usr/bin/{ANY_OTHER_SHELL}escribir su propio script/programa que usará algunos comandos para obtener acceso completo al shell. Es trivial. También pueden revertir cualquier cambio de configuración que haya realizado, etc. Puede oscurecerlo un poco cambiando el shell raíz predeterminado a /sbin/nologin.

[vagrant@eurolinux8-vbuilder ~]$ sudo chsh root -s  /sbin/nologin 
Changing shell for root.
chsh: Warning: "/sbin/nologin" is not listed in /etc/shells.
Shell changed.
[vagrant@eurolinux8-vbuilder ~]$ sudo -i
This account is currently not available.

Pero cualquier usuario avanzado puede utilizar la invocación bash "desnuda" con sudo:

[vagrant@eurolinux8-vbuilder ~]$ sudo /usr/bin/bash
[root@eurolinux8-vbuilder vagrant]# 

Por lo tanto, ocultar el acceso /usr/sbin/nologinno es muy potente.

También puede agregar algún script a bash o cualquier otra configuración de shell para verificar si el usuario rootimprimirá mensajes como Please use sudoy cerrará sesión. Pero una vez más, los usuarios avanzados podrán usar cosas como --norcy --noprofile/o apuntar su propia configuración a bash. Para resumir, según mi mejor conocimiento, no es posible. Incluso compruebo si hay algunos casos excepcionales [por ejemplo, con PAM] cuando uso un usuario que normalmente es solo demonio (como httpd). Pero con httpdinstalado también puedes usar sudo -u apache /usr/bin/bash. Tal vez haya alguna solución basada en PAM, pero con google-fu no pude encontrarla. También es difícil porque estás interesado en desactivar el acceso interactivo. En otro caso (deshabilitar completamente el acceso a la raíz), bloqueará el sistema y tendrá que arreglarlo en modo de recuperación.

Pero hay una solución que podría interesarle más: el registro de terminal.

Quiere conocer el historial del terminal, no limitar el acceso por completo. Mientras tanto, debe saber que los usuarios con acceso completo de administrador pueden eliminar su registro; por lo que, por si acaso, debe usar rsyslog u otra solución de registro para colocar registros en el servidor diferente.

Debido a que está utilizando una distribución basada en RHEL, puede leer lo siguiente. https://www.redhat.com/sysadmin/terminal-logging

Respuesta2

Revertir los cambios a PAM. No los necesitas.

En su lugar, utilice visudopara editar el archivo /etc/sudoersy comentar las líneas que comienzan con %wheely/o %sudo. Esto dejará de permitir que los usuarios que están en esos grupos utilicen sudo.

Debe agregar una línea para usted antes de escribir los cambios. De lo contrario, asegúrese de tener una contraseña de root que funcione (sin su) sudoo algún otro medio sudopara obtener privilegios de root.

información relacionada