Registrar todo lo que sucede en una terminal en GNU/Linux / BSD al estilo Keylogger

Para registrar / monitorizar / vigilar toda la actividad de una sesión de terminal en GNU/Linux o BSD, pulsaciones de teclado y pegado de texto incluido, como si de un Keylogger se tratara, se puede utilizar el módulo “pam_tty_audit” de PAM. Esto es aplicable a SSH y otro tipo de servicios que utilicen PAM, por lo que monitorizar una sesión de ssh es factible y fácil. Se debe tener en cuenta que con este método se registrará todo, desde conversaciones (Irssi,Finch,Talk,…) a cambios de credenciales, las cuales quedarán sin cifrar en los logs (audit.log). Incluso si desde la conexión monitorizada ssh se realiza otra sesión conectando a otro servidor, esta quedará también registrada.

Ha diferencia de herramientas como Snoopy, el módulo “pam_tty_audit” no intercepta las ejecuciones de comandos en scripts / cron, etc, únicamente audita y registra todo lo introducido en una terminal, no las ejecuciones que se realizan en ella.

NOTA: Depende del número de usuarios del servidor y su actividad, el tamaño de los logs puede crecer rápidamente.

Ficheros donde agregar la directiva dependiendo qué queramos monitorizar.

Si se tiene activado el modulo “pam_tty_audit” únicamente en /etc/pam.d/system-auth, la actividad producida en sesiones ssh no será registrada. Si por el contrario solo se monitoriza las sesiones SSH, el uso en sesiones no remotas no quedarán registradas.

Si se tiene activado para el usuario X el registro de sesiones ssh pero desactivado el del sistema (system-auth), PAM solo registrará lo introducido en la terminal si el usuario X ha entrado por ssh de forma directa. Es decir, si se abre una sesión ssh desde el usuario Y y desde esa cuenta se pasa al usuario X, PAM no registrará nada. En cambio si entramos con el usuario X mediante SSH y luego pasamos al usuario Y, se seguirá registrando madiante PAM todo lo introducido en la terminal.

En este ejemplo se monitorizará a los usuario “root”, “jasmin” y “luser”.

session required pam_tty_audit.so disable=* enable=root,jasmin,luser

Visualizar la actividad registrada (/var/log/audit/audit.log).

aureport --tty

NOTA: La actividad del usuario root se puede visualizar en tiempo real ya que envía un registro por cada comando, la actividad referida a los usuarios normales puede tardar más en aparecer. En el fichero audit.log se encuentran los registros de SElinux siempre que auditd esté en activo. Si auditd no está siendo ejecutado, los mensajes audit son enviados a syslog / rsyslog, el cual está configurado por defecto para enviar los mensajes a /var/log/messages. Si el subsistema de auditoría no está activado, ningún mensaje es generado.

Ejemplo de salida del comando “aureport –tty -ts yesterday -te today

35. 03/24/2011 14:34:54 2730 0 ? 343 bash "cat /etc/pass",<tab>,<ret>
36. 03/24/2011 14:34:57 2732 0 ? 343 bash "passwd",<ret>
37. 03/24/2011 14:35:00 2734 0 ? 343 passwd "12345",<nl>
38. 03/24/2011 14:35:03 2735 0 ? 343 passwd "12345",<nl>
39. 03/24/2011 14:35:10 2738 0 ? 339 bash <up>,<ret>

Otras alternativas para registrar actividad de la terminal (Shell)

Snoopy
PROMPT_COMMAND (Bash)
PAM


rootsh
Snoop
sniffy
ttyrpld
ttysnoop