systemadmin.es > Seguridad > Como mandar el bash history al syslog

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.

You are being monitored

You are being monitored

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

3 comments to “Como mandar el bash history al syslog”

  1. 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

  2. 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

  3. > 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 :D, 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

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>