Você precisa configurar auditd
para gravar execve
eventos. 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 ele não parece importar, mas você pode usá-lo -F arch=b64
ou -F arch=b32
configurá-lo, se quiser.
O resultado do exposto 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 é o básico de como você faz isso. O que você precisa fazer exatamente depende muito do que você está tentando fazer exatamente. Você pode reduzir o fluxo de auditoria usando vários filtros no auditctl
comando, mas eu não conheço nenhuma dessas informações e não sei o que incluir. Se você precisar de algo mais específico, sugiro que você verifique a página de manual ou poste um comentário para esta resposta, e eu a atualizarei um pouco mais.
Espero que ajude a empurrá-lo na direção certa.
EDITAR:
Como sua pergunta envolve a visualização de um usuário em particular, 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 anterior, mas somente execve
por alguém executando com o ID de usuário efetivo de 16777216
será registrado. Se você precisar especificar o loginuid
valor do usuário (com quem eles inicialmente efetuaram login no sistema), filtre 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 fizer um su
ou sudo
fazer root. Nessa situação, haverá muitas coisas sendo executadas como root, mas você só se preocupa com as coisas que foram iniciadas pelo usuário em questão. auditctl
também permite empilhar filtros para que você possa filtrar por ambos 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"