Una de las cosas más complejas a la hora de administrar un servidor compartido es controlar qué hace cada usuario. Es importante tener y poder saber qué hace cada usuario en su momento, no sin embargo verlo. Esta parte hay que dejarla clara: Poder saber no es lo mismo que saber. Cada usuario en su día a día de trabajo necesita hacer muchas cosas, y que seas root no te da derecho a "espiar" lo que hace cada usuario. Sin embargo, puede darse el caso de que pase algo en el sistema y quieras saber quién fue el responsable de tal fechoría. Para hacer este tipo de análisis, sí que se puedes emplear estas herramientas de auditaría.
Hoy vamos a hablar por lo tanto de acct, una utilidad para la contabilidad de procesos e inicios de sesión en GNU/Linux. Si la tienes que emplear, da mucho juego e información, así que no está demás tenerla como proceso en el sistema. No consume mucho y llegado el momento, puede ser de utilidad.
Lo primero es instalarla. Para ello,
shell> apt-get install acct
O en sistemas Red Hat,
shell> yum install psacct
Tras su instalación, tendremos que arrancar el proceso que lleva el mismo nombre que el paquete. A partir de este momento, acct estará ya recolectando datos para nosotros, así que toca ver la forma de explotar los datos que almacena.
- acEste comando se encarga de sacar información de tiempo de conexión de usuario al sistema.
shell> ac -p root 1823.40 javier 0.00 total 1823.40
- saNo muestra un sumario de información relativa a las estadísticas de ejecución de cada usuario.
shell> sa -u -7365568 0.00 cpu 979k mem accton -7365568 0.00 cpu 26288k mem touch -7365568 0.00 cpu 26608k mem psacct -7365568 0.00 cpu 979k mem consoletype -7365568 0.00 cpu 26528k mem psacct * -7365568 0.00 cpu 26608k mem psacct -7365568 0.00 cpu 28928k mem ls -7365568 0.31 cpu 27696k mem bash -7365568 1.41 cpu 17472k mem sshd -7365568 0.00 cpu 4332k mem unix_chkpwd -7365568 0.00 cpu 4332k mem unix_chkpwd -7365568 0.00 cpu 16416k mem sshd * ...
- lastcommMuestra todos los comandos que los usuarios han ejecutado en el sistema. Este es el comando más potente, sin dudarlo, ya que permite sacar mucha información o ser muy cotilla, lo que prefiramos.A parte del comando ejecutado, también nos indica la fecha, el usuario y dónde se ejecutó.
shell> lastcomm gtbl root pts/0 0.00 secs Sun Jun 22 13:48 sh F root pts/0 0.00 secs Sun Jun 22 13:48 gzip root pts/0 0.00 secs Sun Jun 22 13:48 gzip root pts/0 0.00 secs Sun Jun 22 13:48 gzip root pts/0 0.00 secs Sun Jun 22 13:48 bash F root pts/0 0.00 secs Sun Jun 22 13:23 hostname root pts/0 0.00 secs Sun Jun 22 13:23 bash F root pts/0 0.00 secs Sun Jun 22 13:23 id root pts/0 0.00 secs Sun Jun 22 13:23 sshd SF sshd --- 0.00 secs Sun Jun 22 13:23 ...
Como veis, información muy valiosa para análisis en caso de desastre.
Por supuesto, estos tres comandos tienen muchas más opciones que permiten extraer o simplificar la información mostrada, así que no dudes en echarle un vistazo a la página man de cada uno.