la guía completa para el Archivo Maestro Sudoers.

Harsha Koushik

Seguir

Abr 18, 2020 · 10 min de lectura

¿Qué es el Archivo Sudoers?

el archivo Sudoers es como cualquier otro archivo en el sistema operativo Linux., Pero juega un papel vital en la gestión de lo que un «usuario» o «usuarios en un grupo» puede hacer en el sistema.

¿por qué el nombre Sudoers?

la palabra Sudo es la abreviatura del término «Super User Do». Como sugiere claramente, es como decirle al Kernel / OS: «¡no tienes elección, solo hazlo!”. Así que los usuarios con permiso Sudo son llamados como usuarios Sudo. La gestión de todos estos usuarios de sudo se realiza a través de un archivo llamado archivo Sudoers. Este archivo también vive en el directorio / etc como cualquier otro archivo de configuración.,

Imagen-1. Archivo Sudoers en el directorio / etc. Sistema operativo: Kali Linux 2019.4

¿por qué el archivo Sudoers?

un usuario normal en Linux tendrá muchas restricciones en el sistema. Por ejemplo, el Usuario no podrá iniciar un servicio, cambiar un archivo de configuración o ejecutar un script en el sistema de forma predeterminada. Desde una perspectiva de seguridad, esto se ve perfecto.,

pero, tomemos un ejemplo de-usted como administrador del sistema tiene que administrar todos los usuarios y sus controles. Tiene un sitio web alojado en Apache en uno de sus servidores. Ya tiene un administrador Web para administrarlo. Se debe crear un usuario para él en el servidor Web. Este usuario debe poder hacer dos cosas que un usuario normal no puede hacer:

  • iniciar / reiniciar el servicio Apache en caso de que se detenga.
  • Editar el archivo de configuración de Apache.

tiene dos opciones de usuario por defecto:

  1. usuario Root que tiene todos los permisos en el sistema incluyendo Apache.,
  2. Un usuario normal, que por defecto no podrá iniciar un servicio o editar ningún archivo de configuración en el sistema.

Aquí es cuando un archivo sudoers le será útil. En el archivo Sudoers podemos definir exactamente:

  • El Usuario Administrador Web solo puede iniciar el servicio Apache &
  • solo puede editar el archivo de configuración de Apache.

jugando con el archivo Sudoers

suficiente teoría, vamos a empezar a hacer las cosas reales ahora. Explicaré cada sección en el archivo Sudoers con algunos ejemplos., De forma predeterminada, un archivo Sudoers se ve como este:

Imagen-2. Archivo Sudoers Sin Editar. Sistema operativo: Kali Linux 2019.4

principalmente podemos ver cinco secciones en el Archivo — las tres primeras secciones en el archivo están relacionadas con ALIAS de Host, Usuario y Cmnd., Hablaremos de ALIAS más tarde, primero hablemos de la sección principal :

# Especificación de privilegios de usuario

root ALL = (ALL:ALL) ALL

NOTA: ‘#’ indica comentario en el archivo, el sistema operativo ignorará esta línea mientras se ejecuta.,

sintaxis : User <space> OnHost = (Runas-User:Group) <space> comandos

ejemplo: root All = (All:All) All

read it as — user root puede ejecutar cualquier comando como cualquier usuario de cualquier grupo en cualquier host.

→ el primer todo se usa para definir HOSTS. Podemos definir Hostname / Ip-Address en lugar de ALL. Todo significa cualquier anfitrión.

→ segundo todo: tercero todo es usuario: grupo., En lugar de todo podemos definir usuario o usuario con el grupo como usuario: grupo. TODOS: Todos significa todos los usuarios y todos los grupos.

→ Last ALL es el comando. En lugar de todos, podemos definir un comando o conjunto de comandos. Todo significa todas las órdenes.

para ponerlo muy simple, Es «who where = (as_whom) what».

Nota: La mayoría de las personas entienden los HOSTS como HOSTS remotos. Es el nombre de host LOCAL / dirección IP., El campo HOSTS rara vez se usará, si desea saber más sobre los HOSTS en Sudoers, consulte → https://www.sudo.ws/man/1.7.10/sudoers.man.html

Básicamente podemos permitir que un usuario haga algo de solo dos maneras:

  1. darle directamente el permiso para ejecutar el comando modificando el permiso del archivo.
  2. Le permite ejecutar el comando como otro usuario que ya tiene el permiso para ejecutar este comando.

en el archivo Sudoers estaremos implementando este último.,

usaremos otro ejemplo para entender claramente los campos de la sintaxis:

Ejemplo : sysadmin ALL = (root)/usr/bin /cat/etc/shadow

lea esto como usuario «sysadmin» puede ejecutar el comando «/usr/bin /cat/etc / shadow» como usuario ROOT en todos los HOSTS.

aquí en el ejemplo anterior, en la sección de comandos-he añadido algo más que un comando, esto es para mostrar la flexibilidad del archivo Sudoers. La parte «/ usr / bin / cat » es un ejecutable binario o comando utilizado para ver el contenido de un archivo., La parte » /etc / shadow «es un archivo confidencial que almacena contraseñas, por lo que significa que el usuario» sysadmin «solo puede ejecutar» /usr/bin/cat «en el archivo» /etc/shadow», si este usuario intenta ver el contenido de cualquier otro archivo en el que no tenga permisos de lectura, no podrá hacerlo.,

sintaxis de Sudo comando: sudo <comando>

Ejemplo: sudo cat /etc/shadow

ahora si el usuario «sysadmin» usa sudo antes que cualquier comando, os primero le preguntará la contraseña del usuario, verificará la contraseña y luego irá al archivo sudoers y comprobará si se le permite emitir este comando como cualquier usuario. Si se le permite-success, de lo contrario se informará de una de estas dos cosas —

→ El Usuario no está en el archivo Sudoers. Este incidente será reportado.,

Note : You can see this reported incident in /var/log/auth.log

Image-3. Incident Report — Sudoers. Operating System: Kali Linux 2019.,4

→Sorry, user <username> is not allowed to execute <command> as <User> on <hostname>

Image-4. Cannot Execute Command in Sudoers. Operating System: Kali Linux 2019.,4

Aquí, el usuario webadmin solo puede ejecutar»cat /etc/shadow». Pero intentó ejecutar el comando ‘ cat ‘ en «/ etc / gshadow», lo cual no está permitido.

como tenemos suficiente control sobre los campos en la sintaxis del archivo Sudoers, avancemos y entendamos otras secciones del archivo. Todas las demás secciones dependerán de la sección central que ya hemos discutido.,

la siguiente sección es la sección de grupo, que es

#permite a los miembros del grupo sudo ejecutar cualquier comando

%sudo ALL = (ALL:ALL) ALL

el símbolo de percentil ‘%’ se usa para representar un grupo en el archivo Sudoers. Todos los campos y sus funcionalidades en esta sección son exactamente los mismos que se discutieron en la sección anterior: la sección Usuario. Podemos asignar los mismos privilegios Sudo a un grupo en lugar de a un usuario especificando el nombre del grupo — %<nombre del grupo>., Así que todos los miembros del grupo heredarán los mismos privilegios dados al grupo.

por defecto existe un grupo SUDO definido en el archivo Sudoers. Podemos ver que estos permisos son exactamente los mismos que los permisos de usuario ROOT en el archivo. Así que si un usuario es miembro de este grupo SUDO, puede ejecutar todos los comandos que un usuario ROOT puede ejecutar.

definamos un grupo personalizado y entendamos la sintaxis más claramente. Tomemos el mismo viejo ejemplo de administrador del sistema para hacerlo. Asume el no. de los empleados son más ahora, por lo que los administradores del sistema son 3 ahora., Cada uno de ellos necesita los mismos permisos exactos que le habíamos dado al primer administrador del sistema. Una cosa que podemos hacer para lograr esto es tener tres entradas para los tres administradores del sistema en el archivo Sudoers. Si vamos con este enfoque, estamos insultando las capacidades de un archivo Sudoers.

lo mejor es agrupar a los tres administradores del sistema en un grupo llamado ‘SystemAdminGroup’., Vamos a definir los permisos requeridos en este grupo con –

%SystemAdminGroup ALL = (root) /usr/bin/cat /etc/shadow

ahora los tres administradores pueden ejecutar el comando privilegiado. Hicimos esto de una sola vez usando la definición de grupo.

el archivo Sudoers es capaz de hacer que todo este proceso sea más eficiente utilizando varias funcionalidades. Las tres primeras secciones — alias se utilizan para lograr esto., Como la palabra ya sugiere, usamos un ALIAS para algo que podemos usar en todo el archivo, es como una VARIABLE GLOBAL en un Script. ¿Cómo hace esto que todo sea más eficiente? Podemos definir conjunto de comandos, hosts y usuarios en una línea, asignamos esta línea a un nombre de ALIAS, este alias se utilizará cuando y donde sea necesario sin definir todos los comandos / hosts / usuarios de nuevo.

Quiero incluir un ALIAS más que no aparece en el archivo Sudoers por defecto que es «Run_as ALIAS»., Ahora tenemos cuatro alias —

  1. User ALIAS as User_Alias
  2. Run-as ALIAS as Runas_Alias
  3. Host ALIAS as Host_Alias
  4. Command ALIAS as Cmnd_Alias

Nota : El nombre del Alias debe definirse en mayúsculas y puede contener número, alfabeto y subrayado (_). El nombre de Alias debe comenzar con alphabet.,3e»>ALIAS Name> = <username>,<username>, <username>example

Ejemplo: user_alias sysadmins = John,Tim,Tom

uso: sysadmins all = (root) /usr/bin/cat /etc/shadow

Si quiero un conjunto de permisos sudo definidos para los usuarios — John, Tim y Tom, no necesito definirlo tres veces, en su lugar puedo definir un alias y usar este nombre de alias mientras delego el acceso sudo a ellos.,

Image-5. User Alias in Sudoers File. Operating System: Kali Linux 2019.,figcaption>

Run As ALIAS Syntax —

Runas_Alias <ALIAS Name> =<username>,<username>,<username>…

Example: Runas_Alias MGRS = root,sradmin

Usage: systemadmin ALL = (MGRS) /usr/bin/cat /etc/shadow

If i want to define the set of users a user can run a command as, i can use Runas_Alias., No te confundas aquí, solo recuerda el mantra maestro-who where = (as_whom) what. Estamos usando un alias aquí para incluir no. de usuarios en el campo «as_whom».

Imagen-6. Alias de Runas en el archivo Sudoers. Sistema Operativo: Kali Linux 2019.,4

Host alias Syntax –

Uso: systemadmin HOSTS = (root)/usr/bin /cat/etc/shadow

Si necesito definir un conjunto de nombres de host, direcciones ip o rango de direcciones ip en el que se permite a un usuario emitir los comandos privilegiados / Sudo, puedo lograr esto utilizando el alias de Host. Una vez más, esta parte pertenece al campo «dónde» en la frase maestra.

Imagen-7. Alias de Host en el archivo Sudoers., Sistema Operativo: Kali Linux 2019.,iv id=»1ffdf0e914″>

Cmnd_Alias <ALIAS Name> = <cmd1>,<cmd2>, <cmd3>…

Example: Cmnd_Alias SYSADMIN = /usr/sbin/apache2, /usr/bin/cat

Usage: systemadmin ALL = (root) SYSADMIN

If i need to permit a user to execute a set of commands as SUDO, i can define them under a Cmnd_Alias Section and use this ALIAS name while delegating the access., Esta parte pertenece al campo » qué » en la frase maestra.

Imagen-8. Alias Cmnd en el archivo Sudoers. Sistema operativo: Kali Linux 2019.4

Nopasswd Mode:

Esta es una característica especial más en Sudoers que permitirá a un usuario en el archivo Sudoers ejecutar un comando privilegiado sin ingresar la contraseña., Esto es muy útil cuando se ejecutan scripts automatizados en el sistema como un usuario normal, el script puede tener que ejecutar un comando privilegiado. Pero ya sabemos lo que sucede si cualquier usuario utiliza SUDO, tendrá que introducir su contraseña!

recuerde que, incluso si es un script o proceso, debe ejecutarse como un usuario, no puede ejecutarse por sí solo.

Todos los scripts automatizados no son lo suficientemente inteligentes como para introducir la contraseña cuando se le solicite. Pero es posible introducir automáticamente la contraseña. Por ahora no pensemos en guiones inteligentes., Así que para concluir, un comando privilegiado puede ser utilizado por un usuario sin introducir la contraseña.

Ejemplo de un script que necesita Nopasswd: Supervisor en Linux.Discutiremos sobre Supervisor en otro artículo.

sintaxis : sysadmin ALL = (root) NOPASSWD:/usr/sbin/apache2

exclusión de parámetros en Alias

También podemos agregar parámetros que deben excluirse en los alias. Por ejemplo —

User_Alias EXCEPT_ROOT = ALL, !,root

sysadmin ALL = (EXCEPT_ROOT)/usr/sbin/apache2

Este User_Alias se puede usar para asegurarse de que un usuario puede ejecutar el comando especificado como «todos los usuarios excepto ROOT».

Este tipo de exclusión se puede hacer en todos los alias, no solo en User_Alias. En cualquier ALIAS, la sintaxis de exclusión sigue siendo la misma.

manejando el archivo Sudoers con cuidado

Por ahora debe haber entendido lo que un archivo Sudoers puede hacer y lo importante que es manejar el archivo con cuidado. Linux ya implementa un mecanismo para asegurarse de que el archivo Sudoers sea manejado correctamente.,

siempre se recomienda no editar el archivo/etc / sudoers directamente. Hay una herramienta llamada «visudo». Esto se utiliza para realizar cambios de forma segura en un archivo sudoers. Cuando edita el archivo sudoers usando visudo, visudo tiene una funcionalidad incorporada para verificar la sintaxis antes de guardar el archivo, si comete un error, inmediatamente señalará la línea donde la sintaxis no es adecuada. Esta funcionalidad de visudo evitará causar cualquier daño accidental al archivo y al sistema.

conclusión:

el archivo Sudoers siempre juega un papel importante en la gestión del control de usuarios., Si bien hay muchas maneras de administrar y controlar lo que un usuario puede y no puede hacer en el sistema, el método Sudoers siempre será lo suficientemente eficiente y robusto como para administrar y controlar cualquier no. de usuarios. Un método más similar a este que vale la pena mencionar es SUID y SGID. Hablaremos sobre SUID y SGID en otro artículo.