Todo el mundo sabe sudo , ¿derecho? Esta herramienta se instala de forma predeterminada en la mayoría de los sistemas Linux y está disponible para la mayoría de las variantes comerciales y BSD de Unix. Aún así, después de hablar con cientos de sudo usuarios, la respuesta más común que recibí fue que sudo es una herramienta para complicarse la vida.
Existe un usuario root y existe el su comando, entonces, ¿por qué tener otra herramienta? Para muchos, sudo era solo un prefijo para los comandos administrativos. Solo unos pocos mencionaron que cuando tiene varios administradores para el mismo sistema, puede usar sudo registros para ver quién hizo qué.
Entonces, ¿qué es sudo? ? Según el sudo sitio web:
"Sudo permite que un administrador del sistema delegue autoridad al otorgar a ciertos usuarios la capacidad de ejecutar algunos comandos como raíz u otro usuario mientras proporciona un registro de auditoría de los comandos y sus argumentos".
Por defecto, sudo viene con una configuración simple, una sola regla que permite a un usuario o grupo de usuarios hacer prácticamente cualquier cosa (más información sobre el archivo de configuración más adelante en este artículo):
%wheel ALL=(ALL) ALL
En este ejemplo, los parámetros significan lo siguiente:
- El primer parámetro define los miembros del grupo.
- El segundo parámetro define los hosts en los que los miembros del grupo pueden ejecutar comandos.
- El tercer parámetro define los nombres de usuario bajo los cuales se puede ejecutar el comando.
- El último parámetro define las aplicaciones que se pueden ejecutar.
Entonces, en este ejemplo, los miembros de la rueda El grupo puede ejecutar todas las aplicaciones como todos los usuarios en todos los hosts. Incluso esta regla realmente permisiva es útil porque da como resultado registros de quién hizo qué en su máquina.
Alias
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
Por supuesto, una vez que no sean solo tú y tu mejor amigo los que administren un buzón compartido, comenzarás a ajustar los permisos. Puede reemplazar los elementos de la configuración anterior con listas:una lista de usuarios, una lista de comandos, etc. Lo más probable es que copie y pegue algunas de estas listas en su configuración.
Esta situación es donde los alias pueden ser útiles. Mantener la misma lista en varios lugares es propenso a errores. Usted define un alias una vez y luego puede usarlo muchas veces. Por lo tanto, cuando pierda la confianza en uno de sus administradores, puede eliminarlo del alias y listo. Con varias listas en lugar de alias, es fácil olvidarse de eliminar al usuario de una de las listas con privilegios elevados.
Habilitar funciones para un determinado grupo de usuarios
El sudo El comando viene con un gran conjunto de valores predeterminados. Aún así, hay situaciones en las que desea anular algunos de estos. Esto es cuando usa los Predeterminados declaración en la configuración. Por lo general, estos valores predeterminados se aplican a todos los usuarios, pero puede reducir la configuración a un subconjunto de usuarios según el host, el nombre de usuario, etc. Aquí hay un ejemplo que a mi generación de administradores de sistemas le encanta escuchar:los insultos. Estos son solo algunos mensajes divertidos para cuando alguien escribe mal una contraseña:
czanik@linux-mewy:~> sudo ls
[sudo] password for root:
Hold it up to the light --- not a brain in sight!
[sudo] password for root:
My pet ferret can type better than you!
[sudo] password for root:
sudo: 3 incorrect password attempts
czanik@linux-mewy:~>
Debido a que no todos son fanáticos del humor de los administradores de sistemas, estos insultos están deshabilitados de manera predeterminada. El siguiente ejemplo muestra cómo habilitar esta configuración solo para sus administradores de sistemas experimentados, que son miembros de la rueda grupo:
Defaults !insults
Defaults:%wheel insults
No tengo suficientes dedos para contar cuántas personas me agradecieron por devolverles estos mensajes.
Verificación de resumen
Hay, por supuesto, características más serias en sudo así como. Uno de ellos es la verificación de resumen. Puedes incluir el resumen de aplicaciones en tu configuración:
peter ALL = sha244:11925141bb22866afdf257ce7790bd6275feda80b3b241c108b79c88 /usr/bin/passwd
En este caso, sudo comprueba y compara el resumen de la aplicación con el almacenado en la configuración antes de ejecutar la aplicación. Si no coinciden, sudo se niega a ejecutar la aplicación. Si bien es difícil mantener esta información en su configuración (no existen herramientas automatizadas para este propósito), estos resúmenes pueden brindarle una capa adicional de protección.
Grabación de sesiones
La grabación de sesiones también es una característica menos conocida de sudo . Después de mi demostración, muchas personas dejan mi charla con planes para implementarla en su infraestructura. ¿Por qué? Porque con la grabación de la sesión, no solo ve el nombre del comando, sino también todo lo que sucedió en la terminal. Puede ver lo que están haciendo sus administradores incluso si tienen acceso de shell y los registros solo muestran que bash se inicia.
Hay una limitación, actualmente. Los registros se almacenan localmente, por lo que con suficientes permisos, los usuarios pueden eliminar sus rastros. Estén atentos a las próximas funciones.
Complementos
A partir de la versión 1.8, sudo cambiado a una arquitectura modular basada en complementos. Con la mayoría de las funciones implementadas como complementos, puede reemplazar o ampliar fácilmente la funcionalidad de sudo escribiendo el tuyo propio. Ya hay complementos comerciales y de código abierto disponibles para sudo .
En mi charla, demostré el sudo_pair complemento, que está disponible en GitHub. Este complemento está desarrollado en Rust, lo que significa que no es tan fácil de compilar y es aún más difícil distribuir los resultados. Por otro lado, el complemento proporciona una funcionalidad interesante, que requiere un segundo administrador para aprobar (o denegar) la ejecución de comandos a través de sudo. . No solo eso, sino que las sesiones se pueden seguir en pantalla y finalizar si hay actividad sospechosa.
En una demostración que hice durante una charla reciente en la conferencia All Things Open, tuve el infame:
czanik@linux-mewy:~> sudo rm -fr /
comando que se muestra en la pantalla. Todos estaban conteniendo la respiración para ver si mi computadora portátil se destruía, pero sobrevivió.
Registros
Como ya mencioné al principio, el registro y las alertas son una parte importante de sudo . Si no revisa su sudo se registra regularmente, no vale mucho la pena usar sudo . Esta herramienta alerta por correo electrónico sobre los eventos especificados en la configuración y registra todos los eventos en syslog . Los registros de depuración se pueden activar y usar para depurar reglas o informar errores.
Alertas
Las alertas por correo electrónico están un poco pasadas de moda ahora, pero si usa syslog-ng para recopilar sus mensajes de registro, su sudo los mensajes de registro se analizan automáticamente. Puede crear fácilmente alertas personalizadas y enviarlas a una amplia variedad de destinos, incluidos Slack, Telegram, Splunk o Elasticsearch. Puede obtener más información sobre esta función en mi blog en syslong-ng.com.
Configuración
Hablamos mucho sobre sudo características e incluso vio algunas líneas de configuración. Ahora, echemos un vistazo más de cerca a cómo sudo está configurado. La configuración en sí está disponible en /etc/sudoers , que es un archivo de texto simple. Aún así, no se recomienda editar este archivo directamente. En su lugar, utilice visudo , ya que esta herramienta también verifica la sintaxis. Si no te gusta vi , puede cambiar qué editor usar señalando el EDITOR variable de entorno en su opción preferida.
Antes de empezar a editar el sudo configuración, asegúrese de conocer la contraseña de root. (Sí, incluso en Ubuntu, donde root no tiene una contraseña predeterminada). Mientras que visudo comprueba la sintaxis, es fácil crear una configuración sintácticamente correcta que lo bloquee de su sistema.
Cuando tenga una contraseña de root a mano en caso de emergencia, puede comenzar a editar su configuración. Cuando se trata de los sudoers archivo, hay una cosa importante para recordar:este archivo se lee de arriba a abajo, y gana la última configuración. Lo que este hecho significa para usted es que debe comenzar con la configuración genérica y colocar las excepciones al final; de lo contrario, la configuración genérica anulará las excepciones.
Puedes encontrar un simple sudoers archivo a continuación, basado en el de CentOS, y agregue algunas líneas que discutimos anteriormente:
Defaults !visiblepw
Defaults always_set_home
Defaults match_group_by_gid
Defaults always_query_group_plugin
Defaults env_reset
Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS"
Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
root ALL=(ALL) ALL
%wheel ALL=(ALL) ALL
Defaults:%wheel insults
Defaults !insults
Defaults log_output
Este archivo comienza cambiando una serie de valores predeterminados. Luego vienen las reglas predeterminadas habituales:la raíz usuario y miembros de la rueda El grupo tiene permisos completos sobre la máquina. A continuación, habilitamos los insultos para la rueda grupo, pero deshabilítelos para todos los demás. La última línea habilita la grabación de sesiones.
La configuración anterior es sintácticamente correcta, pero ¿puede detectar el error lógico? Sí, hay uno:los insultos están deshabilitados para todos, ya que la última configuración genérica anula la configuración anterior más específica. Una vez que cambia las dos líneas, la configuración funciona como se esperaba:Miembros de la rueda grupo recibe mensajes graciosos, pero el resto de usuarios no los recibe.
Gestión de configuración
Una vez que tenga que mantener los sudoers archivo en varias máquinas, lo más probable es que desee administrar su configuración de forma centralizada. Hay dos posibilidades principales de código abierto aquí. Ambos tienen sus ventajas y desventajas.
Puede usar una de las aplicaciones de administración de configuración que también usa para configurar el resto de su infraestructura. Red Hat Ansible, Puppet y Chef tienen módulos para configurar sudo . El problema con este enfoque es que la actualización de configuraciones está lejos de ser en tiempo real. Además, los usuarios aún pueden editar los sudoers archivar localmente y cambiar la configuración.
El sudo La herramienta también puede almacenar su configuración en LDAP. En este caso, los cambios de configuración son en tiempo real y los usuarios no pueden meterse con los sudoers. expediente. Por otro lado, este método también tiene limitaciones. Por ejemplo, no puede usar alias o usar sudo cuando el servidor LDAP no está disponible.
Nuevas características
Hay una nueva versión de sudo Al doblar la esquina. La versión 1.9 incluirá muchas características nuevas e interesantes. Estas son las funciones planificadas más importantes:
- Un servicio de grabación para recopilar grabaciones de sesiones de forma centralizada, que ofrece muchas ventajas en comparación con el almacenamiento local:
- Es más conveniente buscar en un solo lugar.
- Las grabaciones están disponibles incluso si la máquina emisora está inactiva.
- Las grabaciones no pueden ser eliminadas por alguien que quiera eliminar sus pistas.
- La auditoría el complemento no agrega nuevas características a sudoers , sino que proporciona una API para que los complementos accedan fácilmente a cualquier tipo de sudo registros Este complemento permite crear registros personalizados desde sudo eventos usando complementos.
- La aprobación El complemento permite la aprobación de sesiones sin usar complementos de terceros.
- Y mi favorito personal:la compatibilidad con Python para complementos, lo que le permite extender fácilmente sudo usando código Python en lugar de codificar de forma nativa en C.
Conclusión
Espero que este artículo te haya demostrado que sudo es mucho más que un simple prefijo. Hay toneladas de posibilidades para ajustar los permisos en su sistema. No puede simplemente ajustar los permisos, sino también mejorar la seguridad al verificar los resúmenes. Las grabaciones de sesiones le permiten verificar lo que sucede en sus sistemas. También puede ampliar la funcionalidad de sudo usando complementos, ya sea usando algo ya disponible o escribiendo uno propio. Finalmente, dada la lista de próximas funciones, puede ver que incluso si sudo tiene décadas, es un proyecto vivo que está en constante evolución.
Si desea obtener más información sobre sudo , aquí hay algunos recursos:
-
El sudo sitio web
-
El sudo blog
-
Síguenos en Twitter