El subsistema de "auditoría" del kernel de Linux puede hacer lo que necesita.
por ejemplo, si ejecuta estos comandos:
auditctl -a exit,always -F arch=b64 -S execve
auditctl -a exit,always -F arch=b32 -S execve
Luego, se registra cada evento de ejecución y se proporciona mucha información al respecto
por ejemplo, esta es la salida de mí corriendo tail /var/log/audit/audit.log
exit=0 a0=7f0e4a21e987 a1=7f0e4a21e6b0 a2=7f0e4a21e808 a3=8 items=2 ppid=906 pid=928 auid=500 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=1 comm="tail" exe="/usr/bin/tail" subj=kernel key=(null)
type=EXECVE msg=audit(1543671660.203:64): argc=2 a0="tail" a1="/var/log/audit/audit.log"
type=CWD msg=audit(1543671660.203:64): cwd="/home/sweh"
type=PATH msg=audit(1543671660.203:64): item=0 name="/usr/bin/tail" inode=266003 dev=fd:03 mode=0100755 ouid=0 ogid=0 rdev=00:00 obj=unlabeled objtype=NORMAL cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0
type=PATH msg=audit(1543671660.203:64): item=1 name="/lib64/ld-linux-x86-64.so.2" inode=273793 dev=fd:03 mode=0100755 ouid=0 ogid=0 rdev=00:00 obj=unlabeled objtype=NORMAL cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0
type=PROCTITLE msg=audit(1543671660.203:64): proctitle=7461696C002F7661722F6C6F672F61756469742F61756469742E6C6F67
Hay algunos valores interesantes que se pueden ver; por ejemplo, "auid" es 500, que es mi ID de inicio de sesión, a pesar de que "uid" es cero (porque estoy ejecutando bajo su
). Por lo tanto, aunque el usuario haya cambiado de cuenta su
o sudo
aún podamos rastrear su "ID de auditoría"
Ahora esos auditctl
comandos se perderán al reiniciar. Puede colocarlos en un archivo de configuración (por ejemplo, en el /etc/audit/rules.d/
directorio, en CentOS 7). La ubicación exacta dependerá de la versión de su sistema operativo. La auditctl
página del manual debería ayudar aquí.
Sin embargo, tenga cuidado ... esto provocará que se generen muchos mensajes de registro. ¡Asegúrese de tener suficiente espacio en el disco!
Si es necesario, las reglas pueden limitarse a un usuario específico o un comando específico.
Y también ten cuidado; si un usuario pone la contraseña en la ejecución del comando (por ejemplo mysql --user=username --password=passwd
), esto se registrará.
auditd
registrar los argumentos de la línea de comandos y ejecutar el programa? serverfault.com/questions/765179/…