La salida del comando “history” con la fecha (día y hora) de cada orden ejecutada puede resultar muy útil en determinados escenarios. Para ellos creamos un fichero en el directorio “/etc/profile.d” si queremos que esta característica sea aplicada de forma global, en caso contrario, valdría con editar el fichero “~/.bash_profile” de cada usuario. También aumentaremos el tamaño del historial a 10 Gb.
Fichero: /etc/profile.d/history.sh
##################################### export HISTTIMEFORMAT="%d/%m/%y %T " export HISTSIZE="10000" export HISTFILESIZE="10000" #####################################
Ejemplo de salida del comando history.
01/23/07 12:45:59 chkconfig -help 01/23/07 12:46:28 cat /etc/inittab
Se pueden guardar las IPs de sesiones de IPs dentro del mismo dichero .bash_history en forma de comentario o bien en otro fichero a parte (recomendado).
Editar el fichero bash.bashrc (en el home o globalmente en /etc)
PROMPT_COMMAND='ssh_ip=`echo $SSH_CLIENT|awk "{print \\\$1}"`; echo "[$PPID] [$ssh_ip]`history 1`" >>~/.bash_history_sec'
Dicho código se ejecutará siempre al terminar de ejecutar un comando en la terminal, escribiendo en el home del usuario un fichero “.bash_history_sec”. Se agrega para el ejemplo dado el PPID.
[3990] [] 504 22/05/13 18:00:14 telnet www.dominio.com 1138 [3990] [] 505 12/06/13 18:00:16 ssh -p 1138 usuario@www.dominio.com [3813] [10.0.202.4] 510 22/07/13 18:00:21 cat /home/cacas/fichero [3811] [111.65.202.11] 511 23/07/13 18:00:48 cat .bash_history_sec [3813] [10.0.202.4] 511 13/08/13 18:00:48 top [3813] [10.0.202.4] 512 29/08/13 18:03:45 cat /etc/bash.bashrc
NOTA: Lógicamente esto no ofrece ninguna seguridad frente a intrusiones ya que eliminar o falsear el fichero del $HOME es algo trivial (Ver enlaces de interés).