10 configuraciones útiles de Sudoers para configurar sudo en Linux


En Linux y otros sistemas operativos similares a Unix, solo el usuario root puede ejecutar todos los comandos y realizar ciertas operaciones críticas en el sistema, como instalar y actualizar, eliminar paquetes, crear usuarios y grupos, modificar archivos de configuración importantes del sistema, etc.

Sin embargo, un administrador del sistema que asume el rol de usuario root puede permitir a otros usuarios normales del sistema con la ayuda del comando sudo y algunas configuraciones ejecutar algunos comandos, así como realizar una serie de operaciones vitales del sistema, incluidas las mencionadas anteriormente.

Alternativamente, el administrador del sistema puede compartir la contraseña del usuario raíz (que no es un método recomendado) para que los usuarios normales del sistema tengan acceso a la cuenta de usuario raíz a través del comando su.

sudo permite a un usuario autorizado ejecutar un comando como root (u otro usuario), según lo especificado por la política de seguridad:

  1. Lee y analiza/etc/sudoers, busca el usuario que invoca y sus permisos,
  2. luego solicita al usuario que lo invoca una contraseña (normalmente la contraseña del usuario, pero también puede ser la contraseña del usuario objetivo. O puede omitirse con la etiqueta NOPASSWD),
  3. después de eso, sudo crea un proceso hijo en el que llama a setuid() para cambiar al usuario objetivo
  4. luego, ejecuta un shell o el comando dado como argumentos en el proceso hijo anterior.

A continuación se muestran diez configuraciones de archivo/etc/sudoers para modificar el comportamiento del comando sudo utilizando las entradas predeterminadas.

$ sudo cat /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults	env_reset
Defaults	mail_badpass
Defaults	secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Defaults	logfile="/var/log/sudo.log"
Defaults	lecture="always"
Defaults	badpass_message="Password is wrong, please try again"
Defaults	passwd_tries=5
Defaults	insults
Defaults	log_input,log_output
Defaults                parameter,   parameter_list     #affect all users on any host
[email protected]_List      parameter,   parameter_list     #affects all users on a specific host
Defaults:User_List      parameter,   parameter_list     #affects a specific user
Defaults!Cmnd_List      parameter,   parameter_list     #affects  a specific command 
Defaults>Runas_List     parameter,   parameter_list     #affects commands being run as a specific user

Para el alcance de esta guía, reduciremos a cero hasta el primer tipo de Valores predeterminados en los formularios a continuación. Los parámetros pueden ser banderas, valores enteros, cadenas o listas.

Debe tener en cuenta que las banderas son implícitamente booleanas y se pueden desactivar usando el operador ! , y las listas tienen dos operadores de asignación adicionales, + u003d (agregar a la lista) y - u003d (eliminar de la lista).

Defaults     parameter
OR
Defaults     parameter=value
OR
Defaults     parameter -=value   
Defaults     parameter +=value  
OR
Defaults     !parameter       

1. Establecer una RUTA segura

Esta es la ruta utilizada para cada comando que se ejecuta con sudo, tiene dos importancias:

  1. Se usa cuando un administrador del sistema no confía en que los usuarios de sudo tengan una variable de entorno PATH segura
  2. Para separar la "ruta raíz" y la "ruta del usuario", solo los usuarios definidos por exet_group no se ven afectados por esta configuración.

Para configurarlo, agregue la línea:

Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

2. Habilite sudo en la sesión de inicio de sesión de usuario de TTY

Para permitir que sudo sea invocado desde un tty real pero no a través de métodos como cron o scripts cgi-bin, agregue la línea:

Defaults  requiretty   

3. Ejecute el comando Sudo usando un pty

Unas cuantas veces, los atacantes pueden ejecutar un programa malicioso (como un virus o malware) usando sudo, que nuevamente bifurcaría un proceso en segundo plano que permanece en el dispositivo terminal del usuario incluso cuando el programa principal ha terminado de ejecutarse.

Para evitar tal escenario, puede configurar sudo para ejecutar otros comandos solo desde un psuedo-pty usando el parámetro use_pty , ya sea que el registro de E/S esté activado o no de la siguiente manera:

Defaults  use_pty

4. Cree un archivo de registro de Sudo

De forma predeterminada, sudo registra a través de syslog (3). Sin embargo, para especificar un archivo de registro personalizado, use el parámetro logfile así:

Defaults  logfile="/var/log/sudo.log"

Para registrar el nombre de host y el año de cuatro dígitos en el archivo de registro personalizado, utilice los parámetros log_host y log_year respectivamente de la siguiente manera:

Defaults  log_host, log_year, logfile="/var/log/sudo.log"

A continuación se muestra un ejemplo de un archivo de registro de sudo personalizado:

5. Entrada/salida del comando Log Sudo

Los parámetros log_input y log_output permiten que sudo ejecute un comando en pseudo-tty y registre todas las entradas del usuario y todas las salidas enviadas a la pantalla de forma receptiva.

El directorio de registro de E/S predeterminado es/var/log/sudo-io, y si hay un número de secuencia de sesión, se almacena en este directorio. Puede especificar un directorio personalizado a través del parámetro iolog_dir.

Defaults   log_input, log_output

Se admiten algunas secuencias de escape como % {seq} que se expande a un número de secuencia base-36 que aumenta monótonamente, como 000001, donde cada dos dígitos se utilizan para formar un nuevo directorio, p. Ej. 00/00/01 como en el siguiente ejemplo:

$ cd /var/log/sudo-io/
$ ls
$ cd  00/00/01
$ ls
$ cat log

Puede ver el resto de los archivos en ese directorio usando el comando cat.

6. Lectura a los usuarios de Sudo

Para sermonear a los usuarios de sudo sobre el uso de contraseñas en el sistema, utilice el parámetro lecture como se muestra a continuación.

Tiene 3 valores posibles:

  1. siempre: siempre sermonear a un usuario.
  2. una vez: solo sermonear a un usuario la primera vez que ejecute el comando sudo (esto se usa cuando no se especifica ningún valor)
  3. nunca, nunca sermonee al usuario.

 
Defaults  lecture="always"

Además, puede configurar un archivo de clase personalizado con el parámetro lecture_file, escriba el mensaje apropiado en el archivo:

Defaults  lecture_file="/path/to/file"

7. Muestre un mensaje personalizado cuando ingrese una contraseña incorrecta de sudo

Cuando un usuario ingresa una contraseña incorrecta, se muestra un determinado mensaje en la línea de comando. El mensaje predeterminado es "lo siento, inténtalo de nuevo", puedes modificar el mensaje usando el parámetro badpass_message de la siguiente manera:

Defaults  badpass_message="Password is wrong, please try again"

8. Aumentar el límite de intentos de contraseña de sudo

El parámetro passwd_tries se usa para especificar la cantidad de veces que un usuario puede intentar ingresar una contraseña.

El valor predeterminado es 3:

Defaults   passwd_tries=5 

Para establecer un tiempo de espera de contraseña (el valor predeterminado es 5 minutos) usando el parámetro passwd_timeout, agregue la línea a continuación:

Defaults   passwd_timeout=2

9. Deje que Sudo lo insulte cuando ingrese una contraseña incorrecta

En caso de que un usuario escriba una contraseña incorrecta, sudo mostrará insultos en el terminal con el parámetro insultos. Esto desactivará automáticamente el parámetro badpass_message.

Defaults  insults 

Leer más: Deje que Sudo lo insulte cuando ingrese una contraseña incorrecta

10. Conozca más configuraciones de Sudo

Además, puede aprender más configuraciones de comandos sudo leyendo: Diferencia entre su y sudo y Cómo configurar sudo en Linux.

¡Eso es! Puede compartir otras configuraciones útiles de comandos sudo o trucos y consejos con los usuarios de Linux a través de la sección de comentarios a continuación.