GNU/Linux >> Tutoriales Linux >  >> Linux

5 nuevas funciones de sudo que los administradores de sistemas deben conocer en 2022

Cuando desee otorgar acceso administrativo a algunos de sus usuarios mientras controla y verifica lo que hacen en sus sistemas, use sudo . Sin embargo, incluso con sudo , hay bastantes problemas que no se ven, solo piense en otorgar acceso de shell. sudo reciente lanza funciones adicionales que le permiten ver estos problemas e incluso controlarlos. Por ejemplo, puede activar mensajes de registro más detallados y fáciles de procesar y registrar cada comando ejecutado en una sesión de shell.

Algunas de estas características son completamente nuevas. Algunos de ellos se basan en características introducidas en la versión 1.9.0 o incluso anteriores. Por ejemplo, sudo podía grabar todo lo que sucedía en un terminal, incluso en la versión 1.8. Sin embargo, el sistema almacenaba estas grabaciones localmente y eran fáciles de eliminar, especialmente aquellas en las que las grabaciones eran más útiles:las sesiones de Shell. La versión 1.9.0 agregó una recopilación de grabaciones de sesión central, por lo que el usuario local no puede eliminar las grabaciones, y las versiones recientes agregaron retransmisiones, lo que hace que la recopilación sea aún más sólida.

Si solo conoce los conceptos básicos de sudo o usé solo la versión 1.8 anteriormente, recomiendo leer mi artículo anterior.

1. Registro con formato JSON

La primera característica nueva que quiero presentar es el registro en formato JSON. Soy un fanático de los registros (comencé a trabajar en syslog-ng hace doce años), y esta función es la primera que se presenta desde mi artículo de Opensource.com. Cuando está habilitado, sudo registra mucha más información y lo hace de una manera más fácil de analizar.

syslog tradicional mensajes de sudo son breves y contienen sólo la cantidad mínima de información necesaria. Esto se debe a las restricciones del antiguo syslog implementaciones:Los mensajes de más de 1k de tamaño fueron descartados o truncados:

Jan 28 13:56:27 localhost.localdomain sudo[10419]: czanik : TTY=pts/0 ; PWD=/home/czanik ; USER=root ; COMMAND=/bin/bash

syslog más reciente Las implementaciones pueden manejar tamaños de mensaje mucho más grandes. syslog-ng acepta mensajes de registro de hasta 64k de tamaño de forma predeterminada (pero, por supuesto, puede ser más pequeño o más grande, según la configuración actual).

El mismo evento contiene mucha más información si se registra en formato JSON. Más no significa más difícil de manejar:los mensajes con formato JSON son más fáciles de analizar por muchas aplicaciones de software de administración de registros. Aquí hay un ejemplo:

Jan 28 13:58:20 localhost.localdomain sudo[10518]: @cee:{"sudo":{"accept":{"uuid":"616bc9efcf-b239-469d-60ee-deb5af8ce6","server_time":{"seconds":1643374700,"nanoseconds":222446715,"iso8601":"20220128125820Z","localtime":"Jan 28 13:58:20"},"submit_time":{"seconds":1643374700,"nanoseconds":209935349,"iso8601":"20220128125820Z","localtime":"Jan 28 13:58:20"},"submituser":"czanik","command":"/bin/bash","runuser":"root","runcwd":"/home/czanik","ttyname":"/dev/pts/0","submithost":"localhost.localdomain","submitcwd":"/home/czanik","runuid":0,"columns":118,"lines":60,"runargv":["/bin/bash"],"runenv":["LANG=en_US.UTF-8","HOSTNAME=localhost.localdomain","SHELL=/bin/bash","TERM=xterm-256color","PATH=/home/czanik/.local/bin:/home/czanik/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin","MAIL=/var/mail/root","LOGNAME=root","USER=root","HOME=/root","SUDO_COMMAND=/bin/bash","SUDO_USER=czanik","SUDO_UID=1000","SUDO_GID=1000"]}}}

Puede habilitar los mensajes de registro con formato JSON en sudoers archivo:

Defaults log_format=json

Puede obtener más información sobre cómo trabajar con mensajes de registro con formato JSON en sudo de mi blog syslog-ng.

2. Recopilación de registros de forma centralizada mediante sudo_logsrvd

Otra característica relacionada con el registro en 1.9.4 es recopilar todos los sudo registrar mensajes (incluyendo fallas) usando sudo_logsrvd . Anteriormente, el sistema solo registraba sesiones exitosas cuando sudo_logsrvd en realidad hizo una grabación. El registro todavía se realiza a través de syslog por defecto al final.

¿Porque es esto importante? En primer lugar, puede recopilar cualquier cosa relacionada con sudo en un solo lugar:Tanto las grabaciones de la sesión como todos los mensajes de registro correspondientes. En segundo lugar, también puede garantizar el registro adecuado de todos los sudo -eventos relacionados, como sudo puede negarse a ejecutar comandos si sudo_logsrvd es inaccesible.

Puede habilitar el registro en sudo_logsrvd con la siguiente configuración en sudoers archivo (por supuesto, reemplace la dirección IP):

Defaults log_servers=172.16.167.150

Si desea mensajes de registro con formato JSON, necesita la siguiente configuración en el [eventlog] sección de sudo_logsrvd configuración:

log_format = json

De lo contrario, sudo_logsrvd usa el tradicional sudo formato de registro con una simple modificación:También incluye información sobre el host de donde proviene el registro:

Nov 18 12:40:16 centos8splunk.localdomain sudo[21028]:   czanik : 3 incorrect password attempts ; HOST=centos7sudo.localdomain ; TTY=pts/0 ; PWD=/home/czanik ; USER=root ; COMMAND=/bin/bash
Nov 18 12:40:23 centos8splunk.localdomain sudo[21028]:   czanik : HOST=centos7sudo.localdomain ; TTY=pts/0 ; PWD=/home/czanik ; USER=root ; TSID=00000A ; COMMAND=/bin/bash
Nov 18 12:40:30 centos8splunk.localdomain sudo[21028]:   czanik : command rejected by I/O plugin ; HOST=centos7sudo.localdomain ; TTY=pts/0 ; PWD=/home/czanik ; USER=root ; COMMAND=/bin/bash

Más sobre administradores de sistemas

  • Habilitar el blog de administrador del sistema
  • La empresa automatizada:una guía para administrar TI con automatización
  • Libro electrónico:Automatización de Ansible para administradores de sistemas
  • Historias del campo:una guía del administrador de sistemas para la automatización de TI
  • eBook:Una guía de Kubernetes para SRE y administradores de sistemas
  • Últimos artículos de administrador de sistemas

3. Relés

Cuando introdujeron originalmente sudo_logsrvd (versión 1.9.0) para la recopilación de grabaciones de sesiones centrales, los clientes solo podían enviar grabaciones directamente. La versión 1.9.7 introdujo el concepto de relés. Con relevos, en lugar de enviar grabaciones directamente, puede enviar grabaciones a múltiples niveles de hosts intermedios, que estructuran su red.

¿Porque es esto importante? En primer lugar, los repetidores permiten recopilar grabaciones de sesiones incluso si el host central no está disponible debido a problemas de red o mantenimiento. Por defecto, sudo se niega a ejecutarse cuando no puede enviar grabaciones, por lo que los relés pueden garantizar que pueda usar sudo todo el día.

En segundo lugar, también le permite tener controles más estrictos en su red:en lugar de abrir el firewall para todos los hosts al sudo_logsrvd central , solo necesita permitir el paso de su retransmisión.

Finalmente, le permite recopilar grabaciones de sesiones de redes sin acceso directo a Internet, como redes privadas de AWS, donde puede instalar sudo_logsrvd en modo de retransmisión en el host de la puerta de enlace.

Cuando usa relés, configurando el sudo clientes y el sudo_logsrvd central sigue siendo el mismo. En el host de retransmisión, agregue la siguiente línea a [relay] sección de sudo_logsrvd.conf :

relay_host = 172.16.167.161

Si se sabe que la conexión de red hacia el servidor central es problemática, puede configurar el relé para almacenar grabaciones antes de reenviarlas:

store_first = true

4. Registro de subcomandos

¿Alguna vez quiso saber qué sucede dentro de una sesión de shell iniciada a través de sudo? ? Sí, las grabaciones de sesiones están ahí, pero mirar horas de grabaciones solo para ver un par de comandos ejecutados es aburrido y una gran pérdida de tiempo. Afortunadamente, la versión 1.9.8 introdujo subcomandos de registro. Ahora es suficiente revisar sus mensajes de registro con regularidad y ver las grabaciones solo cuando ocurre algo sospechoso.

Ni siquiera necesita una regla para permitir el acceso de shell para tener acceso de shell, solo acceda a un editor. La mayoría de los editores pueden ejecutar comandos externos. Mi editor favorito es JOE, y esto es lo que puedes ver cuando lo inicio a través de sudo :

Aug 30 13:03:00 czplaptop sudo[10150]:   czanik : TTY=pts/1 ; PWD=/home/czanik ; USER=root ; COMMAND=/usr/bin/joe

Nada interesante, solo un editor, incluso si genero un shell y elimino algunos archivos y particiones de ese shell. Ahora veamos qué sucede cuando habilita los subcomandos de registro:

Aug 30 13:13:14 czanik : TTY=pts/1 ; PWD=/home/czanik ; USER=root ; COMMAND=/usr/bin/joe
Aug 30 13:13:37 czanik : TTY=pts/1 ; PWD=/home/czanik ; USER=root ; COMMAND=/bin/sh -c /bin/bash
Aug 30 13:13:37 czanik : TTY=pts/1 ; PWD=/home/czanik ; USER=root ; COMMAND=/bin/bash
Aug 30 13:13:37 czanik : TTY=pts/1 ; PWD=/home/czanik ; USER=root ; COMMAND=/usr/bin/readlink /proc/10889/exe
[...]
Aug 30 13:13:37 czanik : TTY=pts/1 ; PWD=/home/czanik ; USER=root ; COMMAND=/usr/bin/sed -r s@/*:|([^\\]):@\1\n@g;H;x;s@/\n@\n@
Aug 30 13:13:37 czanik : TTY=pts/1 ; PWD=/home/czanik ; USER=root ; COMMAND=/usr/bin/tty
Aug 30 13:13:42 czanik : TTY=pts/1 ; PWD=/home/czanik ; USER=root ; COMMAND=/usr/bin/id
Aug 30 13:13:56 czanik : TTY=pts/1 ; PWD=/home/czanik ; USER=root ; COMMAND=/usr/bin/ls -A -N --color=none -T 0 /usr/share/syslog-ng/include/scl/

Omití docenas de líneas para ahorrar espacio, pero aún puede ver que comencé un shell y los comandos ejecutados por bash_profile también están disponibles en los registros.

Puede habilitar los subcomandos de registro en sudoers archivo usando la siguiente configuración:

Defaults log_subcmds

En el tradicional sudo logs, se puede ver desde el sudo ID de proceso que estos registros son del mismo sudo sesión. Si activa el registro en formato JSON, como se muestra anteriormente, sudo registra mucha más información en los registros, lo que facilita su análisis.

5. Interceptar subcomandos

Los subcomandos de registro eliminan la mayoría de las áreas problemáticas ocultas de sudo , pero hay situaciones en las que no solo desea observar lo que sucede, sino también controlar el flujo de eventos. Por ejemplo, debe otorgar acceso de shell a un usuario pero aún desea evitar que ejecute un comando específico. La interceptación es ideal en tales casos. Existen, por supuesto, algunas limitaciones, como que no puede limitar los comandos integrados de los shells.

Digamos el who El mando es peligroso. Puede habilitar la interceptación en dos pasos:el primero lo habilita, el segundo lo configura. En este caso, mi usuario no puede ejecutar who :

Defaults intercept
czanik ALL = (ALL) ALL, !/usr/bin/who

Esto es lo que sucede cuando inicio una sesión de shell raíz a través de sudo e intente ejecutar who :

$ sudo -s
# who
Sorry, user czanik is not allowed to execute '/usr/bin/who' as root on czplaptop.
bash: /usr/bin/who: Permission denied

Puede deshabilitar fácilmente la ejecución de shells por completo:

Defaults intercept
Cmnd_Alias SHELLS=/usr/bin/bash, /usr/bin/sh, /usr/bin/csh
czanik ALL = (ALL) ALL, !SHELLS

Sin embargo, también significa que no puede iniciar sesiones de shell a través de sudo . No solo eso, sino que tampoco puede ejecutar comandos externos desde editores. Esto es lo que sucede cuando trato de iniciar el ls comando desde dentro de vi :

$ sudo vi /etc/issue
Sorry, user czanik is not allowed to execute '/bin/bash -c /bin/ls' as root on czplaptop.
Cannot execute shell /bin/bash
Press ENTER or type command to continue

¿Qué sigue?

Espero que la lectura de mi artículo te haga querer probar estas nuevas funciones por ti mismo. Puede instalar el último sudo en muchas distribuciones de Linux y variantes de UNIX desde su administrador de paquetes, o use un instalador binario disponible en el sitio web de Sudo.

Este artículo le proporciona solo una descripción general de las nuevas posibilidades. Si desea obtener más información sobre estas funciones, visite el sitio web, que alberga páginas de manuales, y también el blog de Sudo.


Linux
  1. Lo que los administradores de sistemas deben saber sobre el uso de Bash

  2. Los administradores de sistemas reales no sudo

  3. 6 opciones para tcpdump que necesitas saber

  4. Cómo saber si un usuario tiene derechos Sudo

  5. Las mejores prácticas de prueba de penetración que necesita saber

9 nuevas funciones en Ubuntu 18.10 Cosmic Cuttlefish

Compresión de archivos de Linux:todo lo que necesita saber

Lo que necesita saber sobre IPv6

Todo lo que necesita saber sobre el sistema operativo Linux Zorin

Todo lo que necesita saber sobre el sistema operativo Peppermint Linux

¡Linux Kernel 5.0 lanzado, nuevas características y mejoras!