Búsqueda de sitios web

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, etc.

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. Lee y analiza /etc/sudoers, busca el usuario que invoca y sus permisos,
  2. luego solicita una contraseña al usuario que invoca (normalmente la contraseña del usuario, pero también puede ser la contraseña del usuario objetivo. O se puede omitir 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. a continuación, ejecuta un shell o el comando dado como argumentos en el proceso hijo anterior.

A continuación se muestran diez configuraciones de archivos /etc/sudoers para modificar el comportamiento del comando sudo usando entradas Defaults.

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

Tipos de entradas predeterminadas

Defaults                parameter,   parameter_list     #affect all users on any host
Defaults@Host_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 concentraremos en el primer tipo de valores predeterminados en los formularios siguientes. Los parámetros pueden ser indicadores, 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, += (agregar a la lista) y -= (eliminar de la lista).

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

1. Establezca una RUTA segura

Esta es la ruta utilizada para cada comando ejecutado con sudo, tiene dos importancias:

  1. Se utiliza 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 de usuario”, esta configuración solo no afecta a los usuarios definidos por exempt_group.

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 TTY

Para permitir que sudo sea invocado desde un tty real pero no a través de métodos como los scripts 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 malicioso (como un virus o malware) usando sudo, lo 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 como sigue:

Defaults  use_pty

4. Cree un archivo de registro Sudo

De forma predeterminada, sudo inicia sesión a través de syslog(3). Sin embargo, para especificar un archivo de registro personalizado, utilice 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 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 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

Hay algunas secuencias de escape compatibles, como %{seq}, que se expande a un número de secuencia de base 36 que aumenta monótonamente, como 000001, donde cada dos dígitos se utilizan para formar un nuevo directorio, p. 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. Dar una conferencia 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 lectura como se muestra a continuación.

Tiene 3 valores posibles:

  1. siempre: siempre sermonea a un usuario.
  2. una vez: solo sermonea a un usuario la primera vez que ejecuta el comando sudo (esto se usa cuando no se especifica ningún valor)
  3. Nunca – nunca sermonees al usuario.
 
Defaults  lecture="always"

Además, puede configurar un archivo de conferencia 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 mensaje determinado 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 utiliza 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 siguiente línea:

Defaults   passwd_timeout=2

9. Deja que Sudo te insulte cuando ingresas 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. Obtenga más información sobre las configuraciones de Sudo

Además, puede conocer más configuraciones del comando sudo leyendo: Diferencia entre su y sudo y Cómo configurar sudo en Linux.

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