Tuneando SUDO: Configuración básica

Publicado: octubre 6, 2013 en Seguridad, System
Etiquetas:, , ,

En un sistema multiusuario, tal como es GNU/Linux, disponemos de una jerarquía de usuarios. El usuario principal, root en nuestro caso, es el que tiene los permisos para administrar todo el sistema. Por supuesto disponemos de grupos para que podamos gestionar permisos de usuarios con respecto a acceso a archivos, ejecución, etc. Además de esto, existen unos permisos especial, el suid y sgid, que permiten que, aquellos que tengan permisos para ejecutar ese binario, lo hagan como si fuesen el usuario al que realmente pertenece.

La utilización de estos permisos puede comprometer nuestro sistema en el caso de una intrusión, por lo que su utilización debe evitarse a toda costa. Esto es lo que motiva la utilización de sudo, una utilidad que nos permite con nuestro usuario ejecutar tareas de administración. Además de esto, nos permite crear un grupo para el/los usuarios administradores y eliminar la cuenta root, con lo que podemos aumentar la seguridad del sistema.

Actualmente, en Arch, sudo forma parte del grupo base, por lo que seguramente esté instalado en nuestro sistema. Si no fuese así, lo instalamos:

pacman -Syu sudo

Una vez instalado, se habrá creado un grupo, wheel, que es el grupo para administradores por defecto de sudo. Deberemos agregar a él a los usuarios que queramos que actúen como administrador. Supongamos que queremos añadir usuario al grupo wheel:

gpasswd -a usuario wheel

Una vez instalado, debemos configurarlo. El archivo de configuración es /etc/sudoers, pero no es nada recomendable editarlo directamente. Para ello es mejor utilizar el comando visudo, que nos abrirá un editor y, una vez finalizada la edición, comprobará si la sintaxis es correcta:

EDITOR=nano visudo

Por defecto, visudo utiliza el editor vi. en el ejemplo anterior, ejecutamos modificando la variable EDITOR para que la edición se realice con otro editor, nano.

El primer paso será activar sudo para el grupo wheel. Para ello bastará eliminar la # de la línea:

%wheel  ALL=(ALL) ALL

Si queremos que no nos pida clave al ejecutar algún comando con sudo, descomentamos la siguiente:

%wheel  ALL=(ALL) ALL NOPASSWD: ALL

Esta es la configuración más simple. Ahora vamos a crear una un poco más compleja. Lo primero que vamos a hacer es difinir los alias para los nombres de máquina que necesitemos. En este ejemplo, el host se llama zoearch, así que sería:

Host_Alias LOCAL= localhost, zoearch

De esta forma, si queremos después referenciar localhost o zoearch, lo haremos con LOCAL.

Ahora vamos a especificar algo similar para los usuarios:

User_Alias INSTALAR= zodiac, archuser

Y, ya puestos, un alias para diferentes comandos:

Cmnd_Alias ARCH= /usr/bin/pacman, /usr/bin/powerpill, /usr/bin/reflector, \
/etc/cron.daily/reflector

Otra cosa que nos puede interesar es restringir con qué usuarios podemos ejecutar los comandos a través de sudo. No me refiero a qué usuarios pueden ejecutar sudo, sino que, al ejecutar, con qué usuario y/o grupo queremos que se ejecute el comando. Por defecto se hará con root. Lo que vamos a hacer ahora es establecer alias, igual que hicimos para los hosts, para referenciar a los usuarios y grupos. Después, restringiremos a un usuario particular que solo pueda ejecutar comandos con sudo pero como si fuese alguno de esos usuarios.

Runas_Alias GSERVER= http

Una vez hecho esto, podemos establecer algunas variables de entorno. Si queremos preservar alguna definida por el usuario, por ejemplo, EDITOR que define qué editor vamos a utilizar:

Defaults env_keep+= "EDITOR"

Para poder ejecutar aplicaciones gráficas con sudo:

Defaults env_keep+= "HOME"

Si estamos utilizando un proxy:

Defaults env_keep+= "ftp_proxy http_proxy https_proxy no_proxy"

Ya tenemos los alias definidos y variables de entorno establecidos. Ahora vamos a ver cómo se utiliza. En el primer ejemplo, vamos a dejar que los usuarios pertenecientes al grupo wheel puedan ejecutar los comandos definidos en el alias ARCH sin necesidad de introducir contraseña:

%wheel    ALL= NOPASSWD: ARCH

El usuario archuser podrá ejecutar cualquier comando, pero solo como un usuario de los definidos en GSERVER:

archuser ALL= (GSERVER) ALL

Para que sólo los usuarios pertenecientes al alias INSTALAR y, además, en los hosts definidos en LOCAL, puedan ejecutar los comandos de instalación definidos en ARCH, sin necesidad de introducir clave:

INSTALAR LOCAL= NOPASSWD: ARCH

Bueno, con esto tenemos material suficiente para no utilizar los permisos suid y sgid. SUDO es todavía mucho más flexible, podéis ver todas las posibilidades en http://www.sudo.ws/sudo/sudoers.man.html, os animo a que le echéis un ojo.

Fuente:

https://wiki.archlinux.org/index.php/Sudo

Anuncios
comentarios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s