20 mayo 2013

Snoopylogger, guarda las acciones de tus usuarios en Linux

La problemática de monitorizar usuarios en servidores es muy compleja: usuarios compartidos, decenas de formas de ejecutar comandos o logs que el propio usuario puede borrar, o incluso que suban o creen un binario y no quede claro que llamadas y ficheros modifica.

Hace unas semanas hablábamos de sudosh2, como alternativa al comando "script" de linux que genera un vídeo, pero hay otras herramientas de registro sencillas de implantar, que además permiten hacer búsquedas en los ficheros.

Una de estas opciones es snoopylogger, incluido en muchas distribuciones, y que tan solo es una librería que se encargará de almacenar los comandos y el usuario que los ejecuta mediante syslogd.

Es importante usar la última versión (=>1.9.0), que arregla un importante fallo que se produce en algunas distribuciones y que deja el sistema colgado cuando se invoca un reinicio. Esto excluye algunos paquetes distribuidos por Fedora/RedHat.

En tiempo de compilación, es imposible configurar la facilidad y nivel en el que serán mandados los logs, así como el script externo para filtrar resultados, que por defecto es: /usr/local/snoopy/bin/snoopy-filter.sh.

Una vez configurado y ejecutado el make, make install, make enable, la herramienta estará dispuesta y preparada para guardar los comandos. En RedHat por defecto, caerán en /var/log/secure, ya que está definido como authpriv y nivel info.

Lo siguiente es probarlo, y la mejor forma es invocar un comando en shell y crear un pequeño código que invoque otro comando (/bin/ls en este ejemplo), para asegurarnos que las llamadas execve() son registradas.

Tal y como se ve en la captura, se registra la compilación, la llamada a ./test y el execve() de 'ls' que esta aplicación hace.

Prueba de la instalación de snoopylogger.

4 comments :

randy dijo...

https://tails.boum.org/getting_started/index.es.html

Minsqui dijo...

Buena recomendación, y gracias por el aviso de la versión, podía ser un buen susto.
Aprovecho para felicitaros por el nuevo look del blog, os ha quedado genial :D

Javi dijo...

Buenos días;

Uso snoopy desde hace tiempo y quería aportar mis dos centimos:

Como bien dice el artículo, registra todas las execve por lo que si estaís en entornos virtualizados (mi caso Xen) se registran bastante eventos relacionados con monitorización, estado de configuración, etc. ( Solución: Filtrar con rsyslog ).

Por otra parte, creo recordar que con un simple "ldd binario", se puede ver que el binario carga la libreria de snoopy por lo que un intruso podría detectar su presencia ( y saber que se le registra los comandos ).

Además, es independiente de la shell en la que se ejecute, incluso si se consigue una shell con metasploit, snoopy registra los comandos.

Como digo, sólo mis dos centimos; para nada mi intención es desprestigiar la herramienta pues la uso en un entorno 'curioso' donde los admins. hacen y deshacen a su gusto :-p .

jors dijo...

Algo parecido podría hacerse con:

chattr +a /home/${todos_los_usuarios}/.bash_history

Y ubicando lo siguiente en el .bashrc para no toparse con sobreescrituras malintencionadas:


export HISTFILESIZE=
export HISTSIZE=


Aunque luego esto podría ser usado como ataque de DoS llenando el sistema de archivos (a no ser que se implementara un logrotate sobre el archivo de histórico). No existe la solución perfecta.