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 sistemas importantes archivos de configuración y así sucesivamente.

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

Alternativamente, el administrador del sistema puede compartir la contraseña del usuario root (que no es un método recomendado) para que los usuarios normales del sistema tengan acceso a la cuenta del usuario root mediante el 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. It reads and parses /etc/sudoers, looks up the invoking user and its permissions,
  2. then prompts the invoking user for a password (normally the user’s password, but it can as well be the target user’s password. Or it can be skipped with NOPASSWD tag),
  3. after that, sudo creates a child process in which it calls setuid() to switch to the target user
  4. next, it executes a shell or the command given as arguments in the child process above.

A continuación se incluyen diez configuraciones de archivos /etc/sudoers para modificar el comportamiento del comando sudo mediante las entradas Predeterminados .

$ sudo cat /etc/sudoers

/etc/sudoers File

#
# 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, nos reduciremos al 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 con el operador '!' , y las listas tienen dos operadores de asignación adicionales, + = (agregar a la lista) - = (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 ejecutado con sudo, tiene dos importancias:

  1. Used when a system administrator does not trust sudo users to have a secure PATH environment variable
  2. To separate “root path” and “user path”, only users defined by exempt_group are not affected by this setting.

Para configurarlo, agregue la línea:

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

2. Habilitar sudo en sesión de inicio de sesión de usuario TTY

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

Defaults  requiretty   

3. Ejecute el comando sudo usando un pty

Algunas veces, los atacantes pueden ejecutar un programa malintencionado (como un virus o malware) usando sudo, lo que nuevamente mantendrí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 psuedo-pty usando el parámetro use_pty , ya sea que el registro de E/S esté activado o no como sigue:

Defaults  use_pty

4. Crear un archivo de registro de Sudo

Por defecto, los registros de sudo 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, use 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. Registrar entrada / salida del comando sudo

Los parámetros log_input y log_output permiten a sudo ejecutar un comando en pseudo-tty y registrar todas las entradas del usuario y todos los resultados enviados a la pantalla de manera 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 guarda 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 usan para formar un nuevo directorio, por ejemplo. 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. Lecture Sudo Users

Para enseñar a los usuarios de sudo sobre el uso de la contraseña en el sistema, use el parámetro lectura como se muestra a continuación.

Tiene 3 valores posibles:

  1. always – always lecture a user.
  2. once – only lecture a user the first time they execute sudo command (this is used when no value is specified)
  3. never – never lecture the user.
 
Defaults  lecture="always"

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

Defaults  lecture_file="/path/to/file"

7. Mostrar mensaje personalizado cuando ingresa una contraseña sudo incorrecta

Cuando un usuario ingresa una contraseña incorrecta, se muestra un determinado mensaje en la línea de comandos. 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 sudo Contraseña Tries Limit

El parámetro passwd_tries se usa para especificar el número 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) con el parámetro passwd_timeout , agregue la línea a continuación:

Defaults   passwd_timeout=2

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

En caso de que un usuario escriba una contraseña incorrecta, sudo mostrará los 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. Aprende 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 de sudo o trucos y consejos con los usuarios de Linux a través de la sección de comentarios a continuación.