Como mandar el bash history al syslog
Para poder mandar el historial de comandos de los usuarios del sistema al syslog para poder auditarlos se puede hacer mediante este paquete que contiene la bash modificada para mandar cada comando que se ejecuta al syslog local: http://www.digitalsec.net/stuff/rpms/bash/
Esta shell puede ser especialmente útil para la auditaría de honeypots o simplemente para en entornos críticos poder saber quien ha hecho que.
Evidentemente, resulta muy intrusivo su uso, por lo que lo deseable sería restringir su uso en sistemas que realmente sea imprescindible por sus requisistos de seguridad.
Se debe instalar mediante el comando:
# rpm -Uvh --force bash-3.0-31+syslog.i386.rpm
Éste substituye la bash que hay instalada en el sistema por la versión que manda al syslog el history.
Una vez instalada se debe configurar el syslog para almacenar los datos. Por ejemplo:
local5.* /var/log/you.are.being.monitored.log
Con esta linea se guardarian los comandos en el fichero /var/log/you.are.being.monitored.log
A continuación, idealmente se debería configurar el logrotate añadiendo en el fichero /etc/logrotate.d/syslog el nuevo log.
A continuación se debería reiniciar el syslog:
# /etc/init.d/syslog restart Shutting down kernel logger: [ OK ] Shutting down system logger: [ OK ] Starting system logger: [ OK ] Starting kernel logger: [ OK ]
Finalmente, saliendo de la shell actual y entrando de nuevo (si el usuario tiene configurada la bash como shell por defecto) los comandos que se ejecuten se mandaran a /var/log/you.are.being.monitored.log con la siguiente forma:
# cat /var/log/you.are.being.monitored.log Nov 24 12:44:23 ab -bash: history: [pid:4908 uid:0] cd /var/log/ Nov 24 12:44:24 ab -bash: history: [pid:4908 uid:0] ls
Relacionados
Imprimir

9. May 2009 at 3:02 pm :
muy buen post.
pero yo lo q necesito es saber como instalar el syslogd, ya se configurarlo lo hice pensando q no haría falta y resulta q creo q no tengo el demonio del syslog.
Con respecto a lo de los honeypots me interesa, podrías recomendarme un libro para aprender como instalarlo y configurarlo.
Gracias
15. January 2010 at 2:41 am :
Yo para tener un histórico de TODO lo que ejecuto en mi shell, tiro de:
# ~/.bash_logout: executed by bash(1) when login shell exits.
# Guardar histórico
history -a ~/.history/$(date +%d-%m-%y).txt
cat ~/.history/$(date +%d-%m-%y).txt >> ~/.bash_history
tail -n $HISTFILESIZE ~/.bash_history > ~/.history/tmp
/bin/mv -f ~/.history/tmp ~/.bash_history
La caca es que .bash_logout no siempre se ejecuta :S (procuro que las non login shells sean login shells).
Pero, ¿hay alguna forma de monitorizar o guardar cada comando que se ejecuta en una shell al mismo instante en un fchero concreto? (sin tener que usar la bash modificada que comentas)
Gracias
12. May 2010 at 8:15 am :
> La caca es que .bash_logout no siempre se ejecuta :S (procuro que las non
> login shells sean login shells).
Yo me lo guiso, yo me lo como
, encontré esta maravilla (ya no recordaba el trap):
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=330662
No, they need not be login shells. Put the following lines in
“$HOME”/.bashrc:
my_at_exit ()
{
# put the commands to execute on exit here
cd
. ~/.bash_logout
}
# set trap on shell exit
trap my_at_exit 0
# If you want my_at_exit to be executed too when the shell catches
# certain signals (here SIGHUP), you need the following line to
# convert the catching of a SIGHUP into a normal shell exit.
trap ‘exit 2′ HUP