GNU/Linux >> Tutoriales Linux >  >> Linux

10 configuraciones útiles de Sudoers para configurar 'sudo' en Linux

En Linux y otros sistemas operativos similares a Unix, solo la raíz el usuario 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 importantes de configuración del sistema, 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 lleven a cabo 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 del usuario raíz a través de su. comando.

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 invoca una contraseña (normalmente la contraseña del usuario, pero también puede ser la contraseña del usuario de destino. O se puede omitir con la etiqueta NOPASSWD),
  3. después de eso, Sudo crea un proceso secundario en el que llama a setuid() para cambiar al usuario objetivo
  4. a continuación, ejecuta un shell o el comando proporcionado como argumentos en el proceso secundario anterior.

A continuación hay diez /etc/sudoers configuraciones de archivo para modificar el comportamiento de sudo comando usando Valores predeterminados entradas.

$ 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

Tipos de entradas predeterminadas

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 centraremos en el primer tipo de 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, += (añadir 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. Establecer una RUTA segura

Esta es la ruta utilizada para cada comando ejecutado 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 exempt_group no se ven afectados por esta configuración.

Para establecerlo, 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 habilitar la invocación de sudo desde un tty real pero no a través de métodos como cron o cgi-bin scripts, 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 use_pty parámetro, si el registro de E/S está activado o no de la siguiente manera:

Defaults  use_pty

4. Crear un archivo de registro de Sudo

De forma predeterminada, sudo inicia sesión a través de syslog(3). Sin embargo, para especificar un archivo de registro personalizado, use el parámetro del archivo de registro de la siguiente manera:

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 log_host y año_de_registro parámetros 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

El log_input y salida_de_registro Los parámetros 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 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 almacena en este directorio. Puede especificar un directorio personalizado a través de iolog_dir parámetro.

Defaults   log_input, log_output

Se admiten algunas secuencias de escape, 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 usan 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. Conferencia de usuarios de Sudo

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

Tiene 3 valores posibles:

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

Además, puede establecer un archivo de conferencia personalizado con lecture_file parámetro, 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 badpass_message parámetro 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 passwd_timeout parámetro, 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 badpass_message parámetro.

Defaults  insults 

Leer más :Deja que Sudo te insulte cuando ingreses una contraseña incorrecta

10. Más información sobre configuraciones de Sudo

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

¡Eso es todo! 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.


Linux
  1. Cómo encontrar todos los usuarios de Sudo en Linux

  2. Ejemplos de comandos sudo en Linux

  3. PYTHONPATH no funciona para sudo en GNU/Linux (funciona para root)

  4. UAC de Windows frente a Linux sudo

  5. Configuración de sudo sin contraseña en distribuciones de Linux

Algunas herramientas útiles para administradores de sistemas Linux

Cómo habilitar Sudo sin contraseña para usuarios en Linux

Cómo agregar un usuario a Sudoers o Sudo Group en Rocky Linux 8

Guía para configurar el servidor SFTP en Linux

Linux – Agregar usuario a la lista de Sudoers

Configuración de la zona horaria en Linux