
Estoy ejecutando un programa de larga ejecución en un servidor Linux. Muchos otros usuarios también ejecutan sus programas en este servidor. Todos tenemos permisos sudo.
Supongamos que un usuario travieso mata mi programa en ejecución, digamos usando sudo kill
o sudo pkill
. ¿Cómo puedo saber cuál es este usuario?
Respuesta1
Aunque la respuesta de Pablo es correcta, en el sentido de que la evidencia podría eliminarse, eso no significa que la evidencia se elimine. Mucha más gente sabe acerca de sudo, en comparación con la cantidad de personas que saben qué registros purgar (si es que se molestan siquiera).
En mi sistema, cada vez que se usa sudo, toda la línea de comando se almacena en un registro. Me imagino que su sistema puede hacer lo mismo. En OpenBSD, esto es /var/log/authlog, mientras que en un sistema Debian, es /var/log/auth.log
Si no sabe qué archivo almacena dicha información, intente ejecutar un comando sudo. (No importa lo que hagas con sudo: incluso echo
sería suficiente. El propósito es modificar los registros que se modifican cuando se usa sudo). Luego usa
ls -ltr /var/log/*auth*
o
ls -ltr /var/log | tail
para encontrar archivos modificados recientemente.
Respuesta2
Si todos lo tienen sudo
, entonces no hay una forma garantizada de conservar la evidencia de un proceso cancelado, ya que cualquier evidencia podría eliminarse con el mismo nivel de permiso.
Puedes usar elauditd
demonio de auditoríapara rastrear llamadas al sistema específicas, como kill.
Obviamente, un usuario root podría simplemente detener el demonio de auditoría primero y luego eliminar los registros. Entonces querrás exportar registros externamente.
Un mejor enfoque sería administrar mejor sudo, brindando a cada usuario solo el acceso que necesita. Los usuarios generales casi nunca necesitan acceso completo a la raíz y puedes usar sudo para otorgar un subconjunto de permisos.