El programa sudo (de las siglas en inglés superuser -o substitute user– do) es una utilidad de los sistemas operativos tipo Unix (*nix), que permite a los usuarios ejecutar programas con los privilegios de seguridad de otro usuario (generalmente el usuario root) de manera segura, y llevar una bitácora de la actividad del usuario.
Los usuarios deben confirmar su identidad al ejecutar sudo dando su propia contraseña antes de ejecutar el programa requerido. Una vez que se ha autenticado el usuario, y si el archivo de configuración /etc/sudoers autoriza el acceso al comando requerido, el sistema lo ejecuta y lo registra.
Este archivo, especifica qué usuarios pueden ejecutar qué comandos en nombre de otros usuarios. Como sudo es muy estricto con el formato de este archivo, y cualquier error podría causar problemas serios, existe la utilidad visudo, que permite al administrador editar el archivo y verificar la sintaxis antes de guardarlo; simplemente ejecutaremos:
[root@ragnarok ~]# visudo
Iniciaremos la configuración, con la información de identificación del equipo:
## Host alias specification
Host_Alias SERVER=10.98.201.145
Aquí se especifica el nombre y la IP del equipo, cabe mencionar que cualquier cambio en el host o en la IP del sistema, debe verse reflejada aquí también.
A continuación se indican las opciones para que sean registrados los eventos ejecutados mediante sudo, así como indicar el registro del año (log_year), ya que sudo no lo hace por default, y la ubicación del archivo de bitácora:
## Defaults specification
Defaults syslog=auth
Defaults@SERVER log_year, logfile=/var/log/sudo.log
NOTA: En algunos sistemas operativos, como AIX, es necesario crear manualmente el archivo de bitácora y agregarlo en el archivo de configuración de syslog (/etc/syslog.conf), en el común de los demás sistemas, no es necesario crear el archivo de log, ya que sudo lo crea automáticamente, lo que siempre debe de existir es el directorio /var/log.
En esta sección, también, el que siempre nos pida la contraseña, esto es, que no se guarde en cache:
Defaults@SERVER timestamp_timeout=0
Así como los insultos cuando nos equivoquemos en la contraseña de usuario:
Defaults@SERVER !lecture,tty_tickets,!fqdn,insults
NOTA: Para que esto funcione es necesario haber compilado sudo con la bandera:
[root@ragnarok ~]# ./configure –with-all-insults
Creamos alias para nuestros usuarios que tienen tareas comunes, así como alias para las tareas que permitiremos que desempeñen como root:
## User alias specification
User_Alias ADMGRP=javerito,trick,larita,axl
## Cmnd alias specification
Cmnd_Alias CMD=/usr/bin/su –
E indicamos el método para la ejecución de dichas tareas:
## User privilege specification
ADMGRP SERVER=PASSWD:CMD
Aquí se indican las opciones para que los usuarios puedan utilizar este comando.
Se puede leer como:
El usuario ADMGRP, en el equipo SERVER, puede ejecutar el comando CMD solamente mediante el registro exitoso de su contraseña de acceso al sistema.
Como una recomendación, debemos borrar las líneas de ejemplo que contiene el archivo de configuración:
# Uncomment to allow people in group wheel to run all commands
# %wheel ALL=(ALL) ALL
# Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
# Samples
# %users ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
# %users localhost=/sbin/shutdown -h now
Si no marca errores de sintaxis, probamos la configuración con algún usuario:
[axl@ragnarok ~]$ sudo -l
Password:
Matching Defaults entries for axl on this host:
syslog=auth, log_year, logfile=/var/log/sudo.log, !lecture, tty_tickets,
!fqdn, insults, timestamp_timeout=0
User axl may run the following commands on this host:
(root) PASSWD: /usr/bin/su –
[axl@ragnarok ~]$ sudo su –
Password:
[root@ragnarok ~]# id
uid=0(root) gid=0(system) groups=2(bin),3(sys),7(security),8(cron),10(audit),11(lp)
[root@ragnarok ~]# exit
[axl@ragnarok ~]$
Verificamos la bitácora de sudo para comprobar que este logeando:
[root@ragnarok ~]# tail /var/log/sudo.log
Sep 14 12:56:10 2009 : axl : TTY=pts/1 ; PWD=/home/axl ;
USER=root ; COMMAND=list
Sep 14 12:56:20 2009 : axl : TTY=pts/1 ; PWD=/home/axl ;
USER=root ; COMMAND=/usr/bin/su –
[root@ragnarok ~]#
Con esto, tendríamos nuestro sudo trabajando correctamente.
[ root@server ] # ./configure –with-all-insults
[…] de sudo 15 Septiembre 2009 darkaxl Deja un comentario Ir a los comentarios Comúnmente sudo es utilizado para switchearse como root, sin embargo, si queremos analizar las acciones realizadas […]
[…] verificar usuarios y permisos de los mismos, auditar las conexiones con TCP-Wrappers, implementar Sudo y sudosh, hacer un ligero hardening en […]