Customizacion de bash_history

Customizacion de bash_history

Evitar perdida en historial de comandos

Al trabajar con distintas consolas de distintos servidores, o incluso en muchos terminales de un mismo server, puede ser frustrante perder un historial de bash.
Una solución a este problema está con el atributo PROMPT_COMMAND. El mismo tiene que ser escrito en el archivo .bashrc del usuario

export PROMPT_COMMAND=’history -a’

Lo que permite es que después de la ejecución de cada comando, se haga un flush al archivo .bash_history.

Timestamp en .bash_history

Con la ayuda de la variable HISTTIMEFORMAT en Bash, puede mostrar la fecha y hora en que se ejecutó cada comando. Puede ser útil cuando necesitamos: recordar qué comandos se ejecutaron en un período de tiempo específico, deshacer varias operaciones, etc.

export HISTTIMEFORMAT=”%F %T “

Después de esto, todo lo que queda es ejecutar el archivo ~ / .bashrc para que la sesión de terminal actual use la nueva configuración o puede abrir una nueva terminal y automáticamente tomará la nueva configuración de HISTTIMEFORMAT

[email protected]:~# source ~/.bashrc

Imposibilitar borrado del archivo

Para evitar este tipo de ataque contra la limpieza del archivo .bash_history, puede utilizar el comando chattr.
Es posible configurar el archivo .bash_history para evitar que modifiquen/eliminen contenido del mismo con chattr:

[email protected]:~# chattr +a /home/user/.bash_history

También se recomienda que la “immunable flag” se coloque en el archivo ~/.profile en la home del usuario.

[email protected]:~# chattr +i /home/user/.profile

La marca “append only” en el archivo .bash_history también evita que el usuario vincule el archivo .bash_history a /dev/null de la siguiente manera:

[email protected]:~$ ln -sf /dev/null ~/.bash_history
ln: cannot remove `.bash_history’: Operation not permitted

[email protected]:~$ echo > .bash_history
bash: .bash_history: Operation not permitted

Desafortunadamente, aún podrían eliminar el archivo con el comando rm, por lo que este tipo de protección de su archivo .bash_history para que no se sobrescriba no le garantiza completamente que los comandos de usuario se registrarán.

Variables HIST*

Para evitar que el usuario haga “trucos” y escape del registro .bash_history cambiando los valores de shell predeterminados para las variables HISTFILE y HISTFILESIZE, exportándolas a una ubicación de archivo diferente o un tamaño de archivo nulo, se tienen que definir las variables bash para que se carguen en /etc/profile

HISTFILE=~/.bash_history
HISTSIZE=10000
HISTFILESIZE=999999
HISTIGNORE=””
HISTCONTROL=””
readonly HISTFILE
readonly HISTSIZE
readonly HISTFILESIZE
readonly HISTIGNORE
readonly HISTCONTROL
export HISTFILE HISTSIZE HISTFILESIZE HISTIGNORE HISTCONTROL

Cambio de Shell

También está la posibilidad de sortear las restricciones de prevención del historial usando otro shell de los disponibles en el sistema:

Deshabilitar acceso a todos los demás shells del sistema. Por lo general son csh, tcsh y quizás ksh.

[email protected]:~# chmod 750 csh
[email protected]:~# chmod 750 tcsh
[email protected]:~# chmod 750 ksh

Aunque los pasos anteriores evitarán que algunos de los usuarios limpien voluntariamente sus archivos de historial .bash_history, no garantizarán al 100% que un buen cracker no podrá encontrar una manera de eludir las medidas de seguridad impuestas para el archivo .bash_history

Si desea profundizar más aun sobre bash y su hardening para evitar los ataques más frecuentes, nos puede escribir un correo a [email protected] o un mensaje haciendo click acá

El contenido de este artículo esta bajo licencia Creative Commons

Post relacionados
Escribí un comentario

Tu email no será publicado. Campos marcados con * son requeridos