Al añadir una línea al fichero .bash_profile (tambien funciona en .bashrc), podemos lograr que todo comando precedido de un espacio en blanco, no sea guardado en el historial de comandos del usuario (.bash_history).
export HISTCONTROL=ignorespace
Esto puede funcionar en un escenario donde se quiera evitar el uso de rootkits o zappers para borrar evidencias. Hay otras formas de hacerlo pero me gustó esta por su simplicidad. Lo importante es no olvidarse de añadir el espacio en blanco !
Desde luego, esto no servirá de nada para ocultar la presencia del atacante si el admin utiliza comandos como w, who, users, last y lastlog que mostrarán información sobre usuarios y sus logins. Una manera de evitar esto sería modificando los ficheros parseados por estos comandos para mostrar su output:
/var/run/utmp
/var/log/wtmp
Tal ves eso para otra ocasión,
MVelazco
Update 1
Conversando con WCuestas y buscando evitar añadir un espacio en blanco antes de todo comando ingresado, me sugiere una forma mucho más práctica de realizar la misma tarea sin tener que hacer cambios en ningún archivo.
Nos enfocamos en 2 variables de entorno de bash, $HISTSIZE y $HISTFILE. Cada una guarda el valor del número de líneas guardados en el historial y el fichero donde se guardará el historial, respectivamente.
Una imagen vale más:
Bien, entonces jugando con esas variables podemos conseguir que en una nueva sesión, no se guarde historial de comandos ejecutando lo siguiente:
HISTSIZE=0; export HISTSIZE
HISTFILE=/dev/null; export HISTFILE
Lo interesante es que en la próxima sesión, las variables serán cargadas según lo dictado en .bashrc, así que para el admin todo esto es transparente, aqui no paso nada!.
Interesante. Y qué te parece si pones un croncito que haga un rsync del .bash_history en un lugar seguro?
ResponderEliminarSaludos,
Francisco