Cómo configurar y administrar los permisos de Sudo

¿Qué es Sudo?

crédito a: XKCD

Sudo es un programa de Linux destinado a permitir que un usuario use privilegios de root por un período de tiempo limitado para los usuarios y registre la actividad de root. El pensamiento básico es otorgar la menor cantidad de privilegios posible a un usuario mientras se le permite realizar una tarea. El término “Sudo” significa s sustituir tu ser, y hacer . Es un programa utilizado para la gestión de permisos de usuario basado en un archivo de configuración del sistema. Permite a los usuarios ejecutar programas con los privilegios de otro usuario, por defecto, el superusuario. El programa se proporciona para la mayoría de los sistemas operativos basados ​​en UNIX y Linux.

Sintaxis

los sudo El comando se suele llamar así.

                      
                        [[email protected] ~]# sudo <command>
                      
                    

Seguridad

Muchos expertos afirman que no deberíamos trabajar con privilegios de root elevados de forma predeterminada. Esto se debe a posibles problemas relacionados con la seguridad y los errores que pueden ocurrir al usar este nivel de permiso elevado. Debido a que el usuario raíz tiene pleno acceso para crear, modificar o eliminar configuraciones, archivos y carpetas, cualquier error cometido por el usuario raíz tendrá repercusiones globales.

Muchos piensan que el sudo El comando se ocupa de la restricción de acceso, pero ocurre lo contrario. Sudo nos permite ejecutar comandos y programas con privilegios elevados o de superusuario (como root). A través del uso de la sudo La configuración, los programas y los propios comandos se configuran para un usuario específico. En comparación con las ventanas, sudo similar a utilizar la opción ‘ejecutar como’. Además, debemos tener en cuenta que, bajo ciertas condiciones, es posible ejecutar programas o comandos con los privilegios de cualquier persona especificada en la configuración de ese usuario.

En Ubuntu , el sudo El comando siempre está configurado de forma predeterminada, ya que no hay una contraseña de root hasta que creamos una. El usuario inicial (que se creó durante la instalación) puede hacer cualquier cosa a través de sudo ya que actuarán como usuario root. Los desarrolladores de Ubuntu crearon este sistema a propósito de esta manera para que los nuevos usuarios puedan comenzar a utilizar prácticas de seguridad correctas al trabajar con servidores.

Instalación

los sudo El programa está instalado por defecto en casi todas las distribuciones de Linux. Las distribuciones que no lo son son Arch Linux, Gentoo y la familia de distribuciones BSD.

Si necesitamos instalar sudo en Debian /Ubuntu, usaríamos el siguiente comando.

                      
                        apt-get install sudo
                      
                    

Si necesitamos instalar sudo en CentOS , usaríamos este comando.

                      
                        yum install sudo
                      
                    

Configuración

Sudo

los sudoEl archivo .conf contiene información para configurar el sudo Interfaz. Contiene variables de complemento relacionadas con la política de seguridad y las opciones de registro.

aquí hay una muestra sudoarchivo .conf.

                      
                        #
# Sample /etc/sudo.conf file
#
# Format:
#   Plugin plugin_name plugin_path plugin_options ...
#   Path askpass /path/to/askpass
#   Path noexec /path/to/sudo_noexec.so
#   Debug sudo /var/log/sudo_debug [email protected]
#   Set disable_coredump true
#
# Sudo plugins:
#
# The plugin_path is relative to ${prefix}/libexec unless fully qualified.
# The plugin_name corresponds to a global symbol in the plugin
#   that contains the plugin interface structure.
# The plugin_options are optional.
#
# The sudoers plugin is used by default if no Plugin lines are present.
Plugin sudoers_policy sudoers.so
Plugin sudoers_io sudoers.so

#
# Sudo askpass:
#
# An askpass helper program may be specified to provide a graphical
# password prompt for "sudo -A" support.  Sudo does not ship with its
# own askpass program but can use the OpenSSH askpass.
#
# Use the OpenSSH askpass
                      
                    

Complementos

los sudo la configuración también admite el uso de complementos que pueden aumentar su funcionalidad si es necesario sin alterar el original sudo funcionalidad. Los usuarios pueden crear complementos de terceros que permitan satisfacer necesidades específicas.

Inicio sesión

Podemos agregar una variable en el /etc/sudoArchivo .conf que registrará todas las interacciones del usuario en un archivo u otras salidas. El registro de Sudo se divide en 4 partes.

  • Depurar
  • Programa
  • Ubicación del archivo de registro
  • Subsistema y nivel

Podemos configurar el registro para incluir la siguiente información.

  • para registrar lo que sudo hizo – /var/log/auth.log
  • Para depurar cualquier problema con sudo – /var/log/sudo_debug
  • Para capturar un completo sudo sesión – /var/log/sudo-I

Para configurar esta opción añadiríamos el siguiente parámetro.

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

Por defecto, el sudo los registros se escriben en el archivo syslog. Además, podemos especificar dónde se enviará la salida de registro.

                      
                        Defaults log_input, log_output
                      
                    

Este parámetro dice sudo para escribir el texto de la sesión del usuario. Hay un registro de comandos, mensajes de canales de entrada/salida estándar (stdin, stderr, stdout) y un registro con tty/pty.

Depurar

Esta opción se puede configurar para capturar problemas cuando ocurren ciertos eventos.

Otros ajustes

Sudo puede habilitar configuraciones adicionales como:

  • Disable_coredump
  • Modo desarrollador
  • origen_del_grupo

Para nombrar unos pocos.

Sudoers

Después sudo está instalado, comenzaríamos por editar el archivo de configuración, que se encuentra aquí.

                      
                        /etc/sudoers
                      
                    

Originalmente, todas las configuraciones predeterminadas de los programas se incluyeron en un solo archivo sudoers. Más tarde, los desarrolladores del programa agregaron la opción de usar declaraciones de inclusión, lo que permitió la opción de mantener un archivo sudoer base o predeterminado, al tiempo que permitía la integración adicional de configuraciones más granulares en el archivo sudoers principal. La configuración principal para el sudo El comando se encuentra en el /etc/sudoers expediente. Dentro de este archivo hay variables individuales o configuraciones que definen cómo ciertos usuarios o grupos pueden acceder a los comandos. Se pueden almacenar configuraciones adicionales en el directorio /etc/sudoers.d. Los archivos de configuración ubicados dentro del directorio sudoers.d se incluyen en el archivo sudoers utilizando el

                      
                        #includedir /etc/sudoers.d 
                      
                    

variable. Podemos crear una configuración para un usuario o grupo de usuarios dentro del directorio /etc/sudoers.d que se consideraría como parte del archivo sudoer.

Estructura de archivos

Abramos el archivo /etc/sudoers para ver qué incluye. Revisaremos el archivo usando nuestro editor nano. En ubuntu, el archivo predeterminado contiene la siguiente información.

                      
                        [[email protected] ~]# nano /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:/snap/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d
                      
                    

Hay una amplia gama de parámetros y configuraciones que se pueden agregar, pero intentaremos centrarnos en los más relevantes para que tengamos una comprensión sólida de cómo funciona este sistema. Cabe señalar que si es necesario realizar ediciones en el archivo, se debe utilizar el comando ‘visudo’. Además, el formato del archivo sudoers DEBE ser sintácticamente correcto para que el programa funcione.

valores predeterminados

En el archivo sudoers, hay secciones que comienzan con ‘Predeterminados’. Estas son las variables preseleccionadas donde el programa no especifica ninguna alternativa. Estos ajustes son comunes a todos los usuarios.

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

Valores predeterminados env_reset : esta configuración hace que los comandos se ejecuten con un entorno nuevo y mínimo.

Mail_badpass por defecto : Esta configuración envía correo al usuario mailto si el usuario que ejecuta sudo no ingresa la contraseña correcta.

ruta_segura predeterminada : Esta configuración indica la ‘Ruta’ que se usará para cada comando que se ejecute desde sudo. Si no confiamos explícitamente en los usuarios que ejecutan sudopodemos usar esta variable para tener una variable de entorno PATH alternativa que limite.

Alias

Hay cuatro tipos de especificaciones de alias que se utilizan en la configuración.

                      
                        # Host alias specification
# User privilege specification
# Cmnd alias specification
# User privilege specification
root    ALL=(ALL:ALL) ALL
                      
                    
  • Host_Alias: una lista de nombres de host, direcciones IP, redes o grupos de red
  • User_Alias: esta opción especifica un grupo de usuarios
  • Cmnd_Alias: una lista o grupo de comandos y directorios. Este alias incluirá cualquier archivo dentro de un directorio definido, pero no en ningún subdirectorio.
  • Runas_Alias: este alias es casi el mismo que los alias de usuario, pero podemos especificar usuarios por uid

La opción principal que debería preocuparnos es el siguiente parámetro.

                      
                        # User privilege specification
  root   ALL=(ALL:ALL) ALL
                      
                    

Para definir mejor esta configuración, explicaremos más a fondo.

  • El primer TODO son los usuarios autorizados a usar el sudo mando.
  • El segundo ALL define los hosts (servidores) en los que sudo puede ser empleado
  • El tercer TODO es el usuario con el que está ejecutando el comando.
  • El último ALL define los comandos permitidos.

Esta opción indica que cualquier usuario puede ejecutar un comando desde cualquier terminal, actuando como TODOS (o cualquier) usuario, y puede ejecutar cualquiera o TODOS los comandos.

Para ejecutar comandos a través de sudo, el usuario deberá ingresar una contraseña. Esto crea un sudo sesión de usuario en la que no se volverá a solicitar la contraseña durante X minutos. El tiempo de vida de la sesión lo establece el administrador del servidor a través del sudo configuración. Si un usuario necesita cerrar sesión o finalizar el sudo sesión, pueden usar el siguiente comando.

                      
                        [[email protected] ~]# sudo -k
                      
                    

15 ejemplos de Sudo

Aquí hay algunos sudo ejemplos que puedes usar.

Reinicie el sistema.

                      
                        [[email protected] ~]# sudo shutdown -r now
                      
                    

Enumere los archivos en la carpeta public_html del usuario bob.

                      
                        [[email protected] ~]# sudo -u bob ls /home/bob/public_html
                      
                    

Revalida o amplía la franja horaria de los usuarios actuales sudo sesión.

                      
                        [[email protected] ~]# sudo -v
                      
                    

La bandera -k (matar) esencialmente finaliza el sudo sesión para ese usuario.

                      
                        [[email protected] ~]# sudo -k
                      
                    

Después de abrir y editar un archivo como usuario en vim, usando este sudo El comando en vim guarda el archivo como usuario raíz sin perder nuestros cambios,

                      
                        [[email protected] ~]# vim /etc/file.conf

:w !sudo tee %
                      
                    

Ejecute el comando 251 en nuestro archivo de historial como root.

                      
                        [[email protected] ~]# sudo !251
                      
                    

¿Olvidaste ejecutar el último comando como root? Vuelva a ejecutarlo fácilmente usando el siguiente comando.

                      
                        [[email protected] ~]# sudo !!
                      
                    

Lee un archivo protegido.

                      
                        [[email protected] ~]# sudo cat /etc/passwd
                      
                    

Agregue un repositorio a nuestro /etc/apt/sources.list

                      
                        [[email protected] ~]# sudo sh -c 'echo "deb https://us.archive.ubuntu.com/ubuntu/ focal universe" >> /etc/apt/sources.list'
                      
                    

Haga una copia de seguridad de nuestro /etc/apt/sources.list.

                      
                        [[email protected] ~]# sudo cp /etc/apt/sources.list /etc/apt/sources.list.bk
                      
                    

Enumere qué archivos se han modificado en los últimos 60 minutos

                      
                        [[email protected] ~]# sudo find / -mmin 60 -type f
                      
                    

Limite la cantidad de uso de la CPU para un proceso

                      
                        [[email protected] ~]# sudo cpulimit -p pid -l 50
                      
                    

Establecer una bandera inmutable en un archivo.

                      
                        [[email protected] ~]# sudo chattr +i <file>
                      
                    

Utilizar sudo para ejecutar varios comandos.

                      
                        [[email protected] ~]# sudo -s <<< 'apt update -y && apt upgrade -y'
                      
                    

Cambiar a cuenta de superusuario.

                      
                        [[email protected] ~]# sudo su
                      
                    

Conclusión

En este tutorial, hemos aprendido lo que sudo es, cómo está configurado y revisado cómo distribuye derechos específicos a los usuarios.

¿Le gustaría aprender más sobre los disponibles en su servidor? Llámanos al 800.580.4985 o abre una chat o solicite un ticket con nosotros para hablar hoy mismo con uno de nuestros expertos especialistas en soporte técnico o un administrador de sistemas con experiencia.

Related Posts