¿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? significassustituirtúser, yhacer. 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í.
[root@host ~]# 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 all@warn
# 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:
- Desactivar_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/sudoersexpediente. 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 eldirectorio /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.
[root@host ~]# 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 deparámetrosyconfiguracionesque 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 de 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.
[root@host ~]# sudo -k
15 ejemplos de Sudo
Aquí hay algunos sudo ejemplos que puedes usar.
Reinicie el sistema.
[bob@host ~]# sudo shutdown -r now
Enumere los archivos en la carpeta public_html del usuario bob.
[bob@host ~]# sudo -u bob ls /home/bob/public_html
Revalida o amplía la franja horaria de los usuarios actuales sudo sesión.
[bob@host ~]# sudo -v
La bandera -k (matar) esencialmente finaliza el sudo sesión para ese usuario.
[bob@host ~]# 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,
[bob@host ~]# vim /etc/file.conf
:w !sudo tee %
Ejecute el comando 251 en nuestro archivo de historial como root.
[bob@host ~]# sudo !251
¿Olvidaste ejecutar el último comando como root? Vuelva a ejecutarlo fácilmente usando el siguiente comando.
[bob@host ~]# sudo !!
Lee un archivo protegido.
[bob@host ~]# sudo cat /etc/passwd
Agregue un repositorio a nuestro /etc/apt/sources.list
[bob@host ~]# 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.
[bob@host ~]# sudo cp /etc/apt/sources.list /etc/apt/sources.list.bk
Enumere qué archivos se han modificado en los últimos 60 minutos
[bob@host ~]# sudo find / -mmin 60 -type f
Limite la cantidad de uso de la CPU para un proceso
[bob@host ~]# sudo cpulimit -p pid -l 50
Establecer una bandera inmutable en un archivo.
[bob@host ~]# sudo chattr +i <file>
Utilizar sudo para ejecutar varios comandos.
[bob@host ~]# sudo -s <<< 'apt update -y && apt upgrade -y'
Cambie a la cuenta de superusuario.
[bob@host ~]# 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 unacharlaro 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.