Cosas que encontramos en los archivos .bash_history

El otro día, haciendo revisión y limpieza en los servidores, me dediqué por un par de minutos a revisar los archivos .bash_history de algunos usuarios y me encontre con varias sorpresas, desde cosas chistosas hasta problemas críticos de seguridad. Los usuarios son muy buenos para inventar comandos, probar cosas, inventar pasarle parametros a los comandos, etc, es muy chistoso ver como se pasean por mil directorios antes de llegar a donde quieren llegar, como visualizan los archivos o como encuentran lo que buscan. Está bien que los usuarios son solo usuarios, no deberían por qué saber ni ser expertos en ejecutar comandos unix en un prompt, pero aun asi sigue pareciendo cómico para uno ver cómo lo hacen.
Para quienes no saben, el archivo .bash_history corresponde a un archivo de registro o logs que guarda los comandos ejecutados en bash por un usuario en particular, cuando un usuario ingresa vía ssh a un sistema por ejemplo, ejecuta los típicos comandos “dir, cd, ls” y estos quedan registrados.

Lo más comun, y que me da muca risa y aveces rabia, y me desespera un poco, es ver como los usuarios avanzan lentamente, directorio por directorio, hasta llegar a la destino final. Por ejemplo:

$ cd /
$ cd home
$ cd usuario
$ cd public_html
$ cd includes

En lugar de ejecutar directamente
$ cd /home/usuario/public_html/includes

Y peor aun, hay veces que el usuario es inseguro y prefiere verificar si lo hizo bien y termina su caminata por los directorios haciendo un “pwd”:

$ cd /
$ cd home
$ cd usuario
$ cd public_html
$ cd includes
$ pwd
/home/usuario/public_html/includes
$

Hay algo que me desespera aun mas, es cuando el usuario tiene la necesidad de listar el contenido de CADA directorio:

$ cd /
$ ls -l
$ cd home
$ ls -l
$ cd usuario
$ ls -l
$ cd public_html
$ ls -l
$ cd includes
$ pwd
/home/usuario/public_html/includes
$ ls -l

Para los que no saben, para esto existe un truco (tip!), no digo que se aprendan los directorios de memoria, pero pueden ejecutar todo en una sola linea, por ejemplo, cuando escriben / pueden presionar tabular dos veces y automaticamente aparecerá el listado de archivos y directorios dentro de /. Asi mismo, si escriben /home/ y dos veces tabular, veran todo el contenido de /home, sin tener que ejecutar cd /home, presionar enter y luego un ls.

Otra cosa que es muy comun, aunque no lo crean, es encontrar las passwords de las bases de datos, especialmente de MySQL. La gente está acostumbrada a ejecutar el comando mysql para conectarse a la base de datos pasandole como parametro el usuario y la password

$ mysql -uproduccion -p4gSg4ws -hlocalhost mydatabase
mysql>

Tambien usan esta misma tecnica para generar los típicos respaldos usando mysqldump.

$ mysqldump -uproduccion -p4gSg4ws -hlocalhost mydatabase >>mydatabase.sql

Obviamente esto es un problema de seguridad, ya sea porque no se educó bien al usuario o simplemente porque no existen medidas de seguridad dentro del contexto donde se está ejecutando este tipo de comandos.

Tambien es muy usual encontrar a usuarios que intentan pasarle la password de root al comando “su”, ejecutando comandos tipo:

$ su - 354dr2

Pensando que 354dr2 es la password de root, al igual que

$ sudo su - password_del_usuario

Pensando que de esa forma no le pedirá el password. Lo que no sabe el usuario es que todo lo que ejecuta esta siendo logueado y que está comprometiendo la seguridad del servidor.

El .bash_history o historial de comandos bash, muestra mucho como trabajan los usuarios, qué hacen y de qué forma lo hacen, de esta forma es posible obtener información sobre algun sistema o servicio que esté corriendo en el servidor, por ejemplo si entramos a la mala a un servidor y queremos buscar información privada o información que nos interese, podemos ver el historial de los usuarios para saber qué hacen, por donde se mueven y seguir sus pasos.

Un dia me tocó ver que un usuario tenia un script “escondido” que se conectaba vía llave pública a 4 o 5 servidores (incluyendo uno fuera de la red), obviamente, la llave privada estaba en el servidor donde yo estabam por lo que pude acceder a todas sus cuentas en los otros servidores.

5 comentarios

  1. Yo avanzo lentamente por el contenido de los directorios aún…y hago algunos pwd, porque me falla la memoria 😛 y eso que me ayudo con el tabulador.
    Es muy común también que los usuarios “jueguen” con los comandos que han visto a otras personas ejecutar, con las password que han averiguado y no saben que quedan logs, que comprometen la seguridad o que un sysadmin como tu se ría un poquito.
    Un post muy entretenido =)

    Mas que técnico este post quedó, entretenido =)

  2. yo en lo personal tendría que hacer un mea culpa, la costumbre de usar ventanas para navegar entre directorios o carpetas me mal-acostumbró a ver todo a medida que voy avanzando… o sea ls – la|more en cada directorio 🙁
    en mi defensa puedo decir que uso mucho TAB para llegar mas rápido donde voy en las carpetas y no siempre paso por todas.
    igual es gracioso ver tus propios vicios en los ojos de otro. …como ver al Coco Legrand.

  3. Jajaja! Me encanto el final por la calidad del tipo que tenia su clave al alcance jeje
    Saluts y gracias como siempre por estas joyitas!

  4. Mmm, muy bueno 😀 pero aun soy nuevo en esto 🙁 si alguien me diera una ayudita aprenderia muy rapido 😀 xD por si alguien me quiere ayudar, Mi MSN: emmanuel_best@ h o t m a i l . c o m, no respondan porfavor para insultarme, ya que en verdad me gustaria aprender eso xD

  5. haajaja que bueno, de verdad q es desesperante ver como otros usuarios no usan el TAB para autocompletar la dirección de un archivo o directorio.
    eso de revisar el .bash_history en un server ajeno puede decir mucho de quienes administran el sistema. buen tip.
    ¡saludos!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Esto sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.