GNU/Linux >> Tutoriales Linux >  >> Linux

Asegure Linux con el archivo Sudoers

En Linux, el archivo sudoers es donde otorga a los usuarios privilegios elevados. De forma predeterminada, solo el usuario root tiene estos privilegios. Pero, en algunos casos, puede ser necesario que los usuarios regulares también tengan privilegios elevados.

¿No eres un lector? ¡Mira este video tutorial relacionado! ¿No ve el video? Asegúrate de que tu bloqueador de anuncios esté deshabilitado.

El archivo sudoers es principalmente para que lo administren los administradores del sistema y puede ser un poco desalentador para los recién llegados. ¡No dejes que eso te desanime! Con paciencia y atención a los detalles, cualquiera puede aprender a administrar el archivo sudoers de manera efectiva.

Esta guía le enseñará cómo editar los sudoers y otorgar a los usuarios privilegios elevados de forma segura. También aprenderá algunas de las mejores prácticas para tener en cuenta al trabajar con sudoers. No vayas a ninguna parte; ¡prepárese para llevar su administración de privilegios de usuario de Linux al siguiente nivel!

Requisitos

Este tutorial será una demostración práctica. Si desea seguir, asegúrese de tener un sistema Linux con una cuenta de usuario regular que pueda usar. Esta guía usa un sistema Ubuntu 20.04, pero cualquier otra distribución de Linux también debería funcionar.

Resumen del archivo Sudoers de Linux

El archivo sudoers se encuentra en /etc/sudoers, un archivo de texto sin formato que contiene las políticas sobre los privilegios que obtiene un usuario al ejecutar el comando sudo. Antes de continuar, es esencial que se familiarice con las secciones y los contenidos predeterminados del archivo sudoers.

La siguiente captura de pantalla muestra el contenido del archivo sudoers predeterminado en Ubuntu 20.04. El contenido predeterminado del archivo sudoers puede diferir entre las distribuciones de Linux.

El siguiente es un resumen rápido de las secciones en el archivo sudoers.

Sección de valores predeterminados

  • Defaults env_reset - Executing commands with sudo creates a new environment with minimal or default environment variables. In most Linux distros, sudo will load the environment variable in the /etc/environment file.
  • Por defecto mail_badpass:esta línea activa el envío de un correo electrónico a la raíz cuando un usuario ingresa una contraseña incorrecta con sudo.
  • Defaults secure_path - This line defines the PATH environment variable that sudo uses instead of the user’s PATH environment.

Privilegios de Sudo de usuario y grupo

Esta línea define los privilegios de sudo para usuarios específicos o miembros de grupos.

Nota:el % al principio indica que la política se aplica a los miembros del grupo.

  • El primer campo define que su política se aplica al root usuario y los miembros del admin y sudo grupos.
  • El primer ALL significa que la regla se aplica a todos los hosts.
  • El segundo ALL permite el root cuenta para ejecutar comandos como cualquier usuario.
  • El tercer ALL permite el root cuenta para ejecutar comandos como cualquier grupo.
  • El último ALL significa que esta política se aplica a los comandos de comando.

Incluir directivas

Al final del archivo, verá una línea que parece un comentario pero no lo es. Las líneas que comienzan con #include y #includedir se denominan directivas de inclusión.

#includedir /etc/sudoers.d:esta línea le dice a sudo que busque en /etc/sudoers.d directorio para cualquier archivo de configuración adicional.

Editar el archivo Sudoers con la herramienta adecuada

El archivo sudoers es un archivo de texto sin formato que puede abrir con su editor de texto preferido, pero no es recomendable hacerlo. ¿Por qué? Debido a que el contenido del archivo sudoers sigue una sintaxis específica, un editor de texto regular no tiene garantías para evitar que estropee el archivo sudoers.

La configuración incorrecta puede provocar problemas de seguridad; lo que es peor, cada usuario puede perder la capacidad de elevar sus privilegios.

¿Cuál es la herramienta correcta? — visudo . Esta herramienta abre el archivo sudoers en el editor de texto predeterminado. Además, visudo evita la edición simultánea y realiza una verificación de errores antes de salir.

En Ubuntu 20.04, el editor predeterminado es vim , pero puede configurar un editor alternativo, como nano , si lo prefieres.

1. Abra una sesión de terminal o SSH en su máquina Linux.

2. Ejecute el siguiente comando para enumerar los editores de texto disponibles en su computadora.

sudo update-alternatives --config editor

Como puede ver, el editor predeterminado actual es la selección 5, que es vim. Suponga que prefiere mantener el valor predeterminado, presione Entrar. Si prefiere otro editor, presione el número de selección correspondiente, como 0 para nano, y presione Entrar.

3. Ahora, ejecute el siguiente comando para abrir el archivo sudoers en el editor predeterminado.

sudo visudo

Si el archivo sudoers está abierto en otra sesión, verá el siguiente error y visudo le impedirá abrir el archivo. De esta manera, dos usuarios no pueden realizar cambios conflictivos al mismo tiempo.

visudo:/etc/sudoers ocupado, vuelva a intentarlo más tarde

4. Una vez que el archivo sudoers esté abierto, provoque deliberadamente un error de sintaxis eliminando la última instancia de ALL, luego guarde y salga del editor.

5. visudo will warn you that there’s a syntax error and asks, “What now?”. At this point, you have three options.

  • Escriba e y presione Entrar para volver a editar el archivo. Esta opción le permite volver a corregir el archivo sudoers en el editor.
  • Escriba x y presione Entrar para descartar los cambios y salir visudo .
  • Escriba Q, presione Entrar para ignorar el error, guarde el archivo sudoers y salga de visudo. No elija esta opción a menos que esté seguro de las consecuencias.

En este ejemplo, presione x para descartar los cambios y conservar el contenido del archivo sudoers anterior.

Como puede ver, sería difícil estropear el archivo sudoers con visudo permanentemente.

Concesión de privilegios específicos

Es factible realizar cambios directamente en el archivo sudoers, pero puede volverse inmanejable a medida que crecen las políticas y las reglas. La mejor alternativa es usar directivas include en su lugar. De esta forma, puede crear varios archivos de configuración que contengan diferentes políticas y reglas personalizadas.

Suponga que desea dar a un grupo de usuarios la ejecución de comandos de red específicos como raíz. Para hacerlo, deberá crear un archivo en el directorio /etc/sudoers.d que contenga las reglas personalizadas para ese grupo.

1. Primero, cree el grupo que desea que sea el objetivo de la regla personalizada. En este ejemplo, el nombre del grupo es netadmin.

sudo addgroup netadmin

2. A continuación, cree una cuenta de usuario normal y conviértala en miembro del grupo de administradores de red.

sudo adduser ata
sudo usermod -aG netadmin ata
id ata

3. Ahora, cree un nuevo archivo sudoers llamado /etc/sudoers.d/networking y ábralo con visudo.

sudo visudo -f /etc/sudoers.d/networking

4. Copie y pegue las siguientes líneas en redes archivo.

Cmnd_Alias     CAPTURE = /usr/sbin/tcpdump
Cmnd_Alias     SERVERS = /usr/sbin/apache2ctl, /usr/bin/htpasswd
Cmnd_Alias     NETALL = CAPTURE, SERVERS
%netadmin ALL=NETALL

Las líneas Cmnd_Alias ​​crean alias para los comandos. En este ejemplo, asigna el alias CAPTURE para el comando tcpdump y SERVERS para los comandos apache2ctl y htpasswd. Piense en estas líneas como agrupando comandos y dándoles un nombre colectivo.

La última línea especifica que los miembros del grupo netadmin pueden ejecutar cualquier comando en el alias NETALL como root. Esta línea debe ir después de las líneas Cmnd_Alias.

5. Para probar los privilegios sudo de la cuenta ata, cambie a la cuenta de usuario ata.

su - ata

6. Ahora, ejecute uno de los comandos a los que el usuario tiene acceso sudo, como tcpdump.

sudo tcpdump -c 5

Como puede ver a continuación, el comando sudo debería funcionar porque la cuenta tiene acceso para ejecutarlo.

7. A continuación, pruebe y confirme que la cuenta no puede ejecutar ningún otro comando que no esté en la regla personalizada, como lshw.

sudo lshw

Como resultado, el intento de sudo falla porque su cuenta no tiene el privilegio de ejecutar el comando como root.

8. Por último, vuelva a su cuenta ejecutando el siguiente comando.

exit

Reforzar la seguridad con la opción passwd_tries

No puede permitir que nadie intente ingresar una contraseña incorrecta con sudo con la frecuencia que desee; eso sería una invitación abierta para ataques de fuerza bruta o de rociado de contraseñas. Como medida preventiva, debe establecer el número máximo de reintentos agregando la opción passwd_tries dentro del archivo sudoers.

1. Primero, abra el archivo sudoers personalizado con visudo.

sudo visudo -f /etc/sudoers.d/networking

2. Agregue la siguiente línea al final del archivo sudoers. Esta línea permitirá hasta cuatro intentos de contraseña de sudo incorrectos antes de evitar más intentos.

Defaults passwd_tries=4

Los archivos sudoers personalizados ahora deberían tener el mismo aspecto que la captura de pantalla a continuación. Asegúrese de guardar el archivo y salir del editor.

3. Ahora, cambie a la cuenta de usuario ata y vuelva a ejecutar el comando tcpdump como root. Pero esta vez, ingrese una contraseña incorrecta hasta que finalice la solicitud de contraseña.

sudo tcpdump

Después de su cuarto intento con una contraseña incorrecta, verá que sudo le impide ingresar otra contraseña por quinta vez.

Conclusión

En este tutorial, aprendió los conceptos básicos del archivo sudoers predeterminado. Creó reglas personalizadas en un archivo sudoers separado para otorgar privilegios personalizados. Crear y aplicar reglas personalizadas es más seguro que agregar usuarios al sudo grupo.

También aprendió cómo aplicar la opción passwd_tries para especificar cuántos intentos de contraseñas incorrectas puede hacer un usuario antes de que sudo finalice el intento de autenticación. Puede aumentar el control granular de qué usuarios tienen acceso a qué comandos.

¡No te detengas aquí! Puede hacer mucho más con el archivo sudoers, como agregar un archivo de lectura para mejorar la experiencia sudo del usuario. ¡Gracias por leer y diviértase asegurando su sistema Linux!


Linux
  1. Verifique el estado del archivo en Linux con el comando stat

  2. Copiar archivos en la terminal de Linux

  3. Cambiar el nombre de un archivo en la terminal de Linux

  4. Ejemplos esenciales del comando de archivo en Linux

  5. Permisos de archivo en Linux con ejemplo

Introducción al sistema de archivos de Linux

Comando de cola de Linux con ejemplos

Comando WC de Linux con ejemplos

Cómo asegurar servidores Linux con SE Linux

El archivo de hosts en Linux

Uso del comando Linux mv con ejemplos