Você precisa configurar auditd
para registrar execve
events. Exemplo no RHEL5:
[root@ditirlns01 ~]# auditctl -a always,entry -S execve
WARNING - 32/64 bit syscall mismatch, you should specify an arch
[root@ditirlns01 ~]#
Ignoro o aviso de arco e isso não parece importar, mas você pode usar -F arch=b64
ou -F arch=b32
para defini-lo, se desejar.
O resultado do acima é:
[root@ditirlns01 ~]# ls /tmp/whatever
ls: /tmp/whatever: No such file or directory
[root@ditirlns01 ~]# grep whatever /var/log/audit/audit.log
type=EXECVE msg=audit(1386797915.232:5527206): argc=3 a0="ls" a1="--color=tty" a2="/tmp/whatever"
type=EXECVE msg=audit(1386797927.133:5527241): argc=3 a0="grep" a1="whatever" a2="/var/log/audit/audit.log"
[root@ditirlns01 ~]#
Isso é obviamente rápido e sujo, mas isso é o básico de como você faz isso. O que você precisa fazer, provavelmente, depende muito do que você está tentando fazer exatamente. Você pode reduzir o fluxo de auditoria usando vários filtros no comando auditctl
, mas não conheço nenhuma dessas informações, portanto, não sei o que incluir. Se você precisar de algo mais específico, sugiro que você verifique a man page ou publique um comentário para essa resposta e atualizarei mais algumas vezes.
Espero que isso o ajude na direção certa.
EDITAR:
Como sua pergunta envolve consultar um usuário específico, posso mostrar a você que:
[root@ditirlns01 ~]# auditctl -a always,entry -S execve -F euid=16777216
WARNING - 32/64 bit syscall mismatch, you should specify an arch
Idêntico ao acima, mas somente execve
de alguém executando com o ID de usuário efetivo de 16777216
será logado. Se você precisar especificar o valor loginuid
do usuário (com quem eles inicialmente fizeram login no sistema), filtre por auid
:
[root@ditirlns01 ~]# auditctl -a always,entry -S execve -F auid=16777216
WARNING - 32/64 bit syscall mismatch, you should specify an arch
Os filtros AUID / loginuid seriam úteis, por exemplo, se o usuário fizesse uma su
ou sudo
para raiz. Nessa situação, haverá muitas coisas sendo executadas como root, mas você está preocupado apenas com as coisas que foram iniciadas pelo usuário em questão. auditctl
também permite empilhar os filtros, para que você possa filtrar por euid
e auid
:
[root@ditirlns01 ~]# auditctl -a always,entry -S execve -F auid=16777216 -F euid=0
WARNING - 32/64 bit syscall mismatch, you should specify an arch
[root@ditirlns01 ~]# ls /tmp/nashly -ltar
ls: /tmp/nashly: No such file or directory
[root@ditirlns01 ~]# grep nashly /var/log/audit/audit.log
type=EXECVE msg=audit(1386798635.199:5529285): argc=4 a0="ls" a1="--color=tty" a2="/tmp/nashly" a3="-ltar"
type=EXECVE msg=audit(1386798646.048:5529286): argc=3 a0="grep" a1="nashly" a2="/var/log/audit/audit.log"