Comúnmente sudo es utilizado para switchearse como root, sin embargo, si queremos analizar las acciones realizadas por algún usuario como root, no podríamos ya que sudo solo nos registraría el acceso al comando su. Para poder registrar las acciones de algún usuario, podemos hacer uso de una herramienta que complementa a sudo, sudosh.
sudosh es básicamente un VCR que permite grabar y registrar las sesiones de shell y, también tiene la capacidad de reproducir las sesiones como fueron ejecutadas originalmente. Registra toda la entrada-salida (input/output), entradas de teclado, así como información del tiempo de ejecución para poder reproducirla en su formato original. Fue diseñado específicamente para ser utilizado conjuntamente con sudo o por sí mismo como un login shell, esto es, puede ser utilizado cmo un filtro o como el shell por default de un usuario. Cada comando que el usuario mecanografía dentro del shell, incluso del shell de root, se registra, así como su salida.No importa el shell utilizado, todas las líneas de comando se registran al syslog (incluyendo entradas de teclado en vi).
En este caso utilizaremos una versión mejorada, sudosh2, que mejora algunos detalles que se encontraron en el desarrollo de sudosh.
Para iniciar, lo compilamos, e instalamos, mediante:
[root@ragnarok ~]# ./configure && make && make install
A continuación, creamos el directorio donde vamos a almacenar los registros y le asignamos permisos:
[root@ragnarok ~]# mkdir -p /var/log/sudosh
[root@ragnarok ~]# chmod 0733 /var/log/sudosh
Para el acceso a sudosh, podemos agregar un alias en /etc/sudoers:
## Cmnd alias specification
Cmnd_Alias SUDOSH=/usr/local/bin/sudosh
Para que sudosh pueda ser utilizado como shell, lo debemos incluir en el archivo de shells autorizados para su uso:
[root@ragnarok ~]# echo “/usr/local/bin/sudosh” >> /etc/shells
Si lo configuramos como shell, lo debemos configurar a los usuarios a monitorear:
[root@ragnarok ~]# grep opera /etc/passwd
opera:x:600:600:Operador del sistema:/home/opera:/usr/local/bin/sudosh
[root@ragnarok ~]# grep jdevel /etc/passwd
jdevel:x:700:700:Usuario desarrollador java:/home/jdevel:/usr/local/bin/sudosh
[root@ragnarok ~]# grep beca01 /etc/passwd
beca01:x:800:800:Usuario becario:/home/beca01:/usr/local/bin/sudosh
Para que sudosh funcione como algún shell determinado, podemos configurarlo en el archivo /etc/sudosh.conf
[root@ragnarok ~]# vim /etc/sudosh.conf
# Sudosh Configuration File
logdir = /var/log/sudosh
default shell = /bin/bash
delimiter = –
syslog.priority = LOG_INFO
syslog.facility = LOG_LOCAL2
clearenvironment = yes
# Allow Sudosh to execute -c arguments? If so, what?
-c arg allow = scp
Desde este archivo, también podemos indicarle que comandos puede ejecutar.
Una vez instalado, podemos listar las sesiones almacenadas con el comando sudosh-replay:
[root@ragnarok ~]# sudosh-replay
Date Duration From To ID
==== ======== ==== == ==
09/14/2009 12:04:49 3m10s sistema sistema sistema-sistema-1250615089-FVr1k26cIUKdUrtR
09/14/2009 13:05:45 5m43s sistema root sistema-root-1250618745-FBjzLbIh7AuA4BqM
09/15/2009 14:12:10 15m10s root sistema root-sistema-1250622730-6UFb6w4UMvJM4nLx
09/15/2009 11:55:07 5h sistema sistema sistema-sistema-1250700907-dza0xWuenmNdSMjj
Usage: sudosh-replay ID [MULTIPLIER] [MAXWAIT]
See ‘sudosh-replay -h’ for more help.
Example: sudosh-replay sistema-sistema-1250615089-FVr1k26cIUKdUrtR 1 2
[root@ragnarok ~]#
Para ver alguna sesión ejecutamos el comando sudosh-replay más el ID de la sesión, por ejemplo:
[root@ragnarok ~]# sudosh-replay sistema-sistema-1250615089-FVr1k26cIUKdUrtR
Con esta herramienta, tendríamos un mejor control de lo que sucede en nuestro sistema.
[…] usuarios y permisos de los mismos, auditar las conexiones con TCP-Wrappers, implementar Sudo y sudosh, hacer un ligero hardening en […]