Oscar's Blog

Blog de Oscar Valenzuela - GNU con Linux, Free Software, Android, Hacking

Registrar la actividad de consola/terminal en GNU/Linux

28 Apr 2014


En muchas ocasiones se requiere guardar registro de lo que uno mismo u otras personas que tienen acceso a la misma cuenta ejecutan en la consola, y aunque sabía que podía hacerse en GNU/Linux no recordaba el comando que increíblemente se llama “script“, pero es bastante útil para usar en las ocasiones en que compartimos la misma cuenta con otra persona o simplemente para monitorear su actividad, aunque claro, puede ser en extremo peligroso si ejecutamos comandos incluyendo directamente una contraseña, así que como siempre OJO PIOJO!

Por ejemplo, para usarlo simplemente nos conectamos a nuestra consola, y ejecutamos el comando “script“, luego podemos tipear lo que se nos antoje y finalmente nos desconectamos:


[ovalenzuela@localhost ~]$ script
Script iniciado; el fichero es typescript
[ovalenzuela@localhost ~]$ echo hola
hola
[ovalenzuela@localhost ~]$ w
11:59:55 up 15 min, 3 users, load average: 0,06, 0,25, 0,24
USER TTY LOGIN@ IDLE JCPU PCPU WHAT
ovalenzu :0 11:45 ?xdm? 2:56 0.16s gdm-session-worker [pam/gdm-pas
ovalenzu pts/0 11:51 3.00s 0.06s 0.00s script
ovalenzu pts/1 11:59 3.00s 0.02s 0.00s w
[ovalenzuela@localhost ~]$ exit
exit

Script terminado; el fichero es typescript
Como puede apreciarse, el uso de “script” es bastante simple, y todo fue guardado en un archivo de texto llamado “typescript” que quedará almacenado en nuestro “home“, el cual puede ser consultado con el comando “more“:


[ovalenzuela@localhost ~]$ more typescript

Script iniciado (lun 28 abr 2014 11:59:52 CLT
)
[ovalenzuela@localhost ~]$ echo hola
hola
[ovalenzuela@localhost ~]$ w
11:59:55 up 15 min, 3 users, load average: 0,06, 0,25, 0,24
USER TTY LOGIN@ IDLE JCPU PCPU WHAT
ovalenzu :0 11:45 ?xdm? 2:56 0.16s gdm-session-worker [pam/gdm-pas
ovalenzu pts/0 11:51 3.00s 0.06s 0.00s script
ovalenzu pts/1 11:59 3.00s 0.02s 0.00s w
[ovalenzuela@localhost ~]$ exit
exit

Script terminado (lun 28 abr 2014 11:59:57 CLT
)

Como se despliega, todo lo que se ejecuto en la sesión de la terminal queda guardado, el contenido es agregado al final del archivo cada vez que se inicia el registro. Ahora, normalmente se usa el nombre de archivo “typescript“, pero podemos usar otro con la opción “-a“.

Ahora, la parte más genial, es que podemos usar “script” para registrar cualquier uso de la consola, simplemente agregando un par de lineas al “~/.bash_profile“, de forma que cada vez que se inicie la conexión a una consola se comienza a registrar la actividad en un archivo oculto, para lo cual agregamos las siguientes lineas a nuestro “~/.bash_profile“:


script -a -q ~/.bash_script_$(date +%Y%m%d%H%M).log
exit

Ahora bien, es importante destacar 3 cosas importantes. Lo ideal es que los archivos queden en un directorio oculto o algo así, eso lo dejo a su imaginación, segundo, realizar una limpieza de vez en cuando se vuelve obviamente algo importante y finalmente, solo mencionar que el archivo se crea una vez que la sesión finalice, osea, que el usuario se desconecte si esta usando ssh o algo así.
Claramente esto no es la panacea en seguridad, pero dará una aproximación muy útil para ocasiones en que necesitamos realizar alguna auditoria.