Solución 1:
Agregue esta línea a su configuración de pam responsable de los inicios de sesión (su sistema de autenticación en distribuciones basadas en redhat)
session required pam_tty_audit.so enable=*
Para saber qué se hizo, puede usar.
ausearch -ts <some_timestamp> -m tty -i
Esto produce una salida como esta:
type=TTY msg=audit(11/30/2011 15:38:39.178:12763684) : tty pid=32377 uid=root
auid=matthew major=136 minor=2 comm=bash data=<up>,<ret>
El único inconveniente de esto es que puede ser un poco difícil de leer, pero es mucho mejor que la mayoría de las soluciones propuestas, ya que en teoría podría usarse para grabar una sesión completa, con todos los defectos.
Editar:Ah, y puedes usar aureport para generar una lista que puede ser más útil.
# aureport --tty
...
12. 11/30/2011 15:50:54 12764042 501 ? 4294967295 bash "d",<^D>
13. 11/30/2011 15:52:30 12764112 501 ? 4294967295 bash "aureport --ty",<ret>
14. 11/30/2011 15:52:31 12764114 501 ? 4294967295 bash <up>,<left>,<left>,"t",<ret>
Solución 2:
La mejor solución a su problema sería el sistema de auditoría integrado de Linux. Usa man 8 auditd
o consulte esta página para obtener más información:http://linux.die.net/man/8/auditd.
Además, puede consultar este tutorial:aunque está un poco fuera del alcance de su pregunta, muestra cómo funciona el sistema de auditoría.
Solución 3:
Podrías usar Snoopy.
Es una biblioteca de registro de comandos simple, y no una solución de auditoría adecuada (fácil de eludir). Divulgación:soy el actual mantenedor de Snoopy.
Solución 4:
Un truco menos conocido, pero fácilmente el más asombroso, es usar las capacidades de auditoría integradas de sudo
. Sudo viene con un sudoreplay
Comando que facilita la reproducción de sesiones. Incluso transmitirá vim
sesiones (como usted sugiere).
He aquí cómo usarlo en unos sencillos pasos:
- Instalar
sudosh
en su sistema; este es un contenedor de shell alrededor delsudo
comando que hace que un usuariosudo
ellos mismos (noroot
) y se puede usar como shell de inicio de sesión del sistema -
Habilitar
sudo
Inicio sesión. Editar/etc/sudoers.d/sudosh
:Defaults log_output Defaults!/usr/bin/sudoreplay !log_output Defaults!/sbin/reboot !log_output
-
Agregue este comando a
/etc/shells
para permitir inicios de sesión usándolo:/usr/bin/sudosh
Consejo :para evitar que los usuarios usen otros shells para iniciar sesión, elimine esos otros shells de
/etc/shells
. -
Actualice el usuario
foobar
usar elsudosh
shell.chsh -s /usr/bin/sudosh foobar
Para obtener información más detallada, consulte:https://github.com/cloudposse/sudosh/