Você pode usar o subsistema auditd
para registrar os comandos executados em seu sistema. Ele está ligado ao kernel, então é muito confiável registrar tudo o que é executado.
Meus exemplos estão no Fedora Linux, você pode encontrar pequenas diferenças dependendo da sua distribuição. (O subsistema auditd
é bastante complexo, por isso pode ser complicado acertar isso.)
Primeiro, verifique se você já tem o auditd instalado e em execução, com:
$ systemctl status auditd.service
Depois, você pode verificar quais regras são carregadas. Por padrão, no Fedora, você obtém:
$ sudo auditctl -l
-a never,task
Portanto, precisamos remover essa lista de "tarefas" (que suprime o syscalls) e adicionar uma que registre "execve" (que é o syscall que executa os comandos.)
$ sudo auditctl -d never,task
$ sudo auditctl -a always,exit -F arch=b64 -S execve
Uma vez feito isso, todos os comandos serão registrados no sistema de auditoria.
Você pode pesquisá-lo usando o comando ausearch
. Por exemplo, para encontrar todas as execuções que chamam de "gulp", você pode usar:
$ sudo ausearch -c gulp
A saída será bastante detalhada ... Concentre-se no tipo = EXECTE linha. Os argumentos serão listados como a0="gulp" a1="first_argument" a2="second_argument" ...
Se você obtiver uma sequência longa de números em vez de uma string entre aspas, use -i
para interpretá-la.
Registrar todos os comandos que são executados no seu sistema pode ser muito caro e usar muito espaço em disco! É possível que isso afete o desempenho também. Se você quiser desfazer essas alterações, recarregue o conjunto padrão de regras com este comando:
$ sudo augenrules --load
Você também pode aplicar um filtro à regra de registro, por exemplo, para registrar apenas execuções de / usr / bin / gulp:
$ sudo auditctl -a always,exit -F arch=b64 -F exe=/usr/bin/gulp -S execve
Então, talvez isso seja um exagero ... Mas é tão confiável quanto parece. Espero que você possa encontrar o caminho através do subsistema auditd
e que ele forneça as informações que você está procurando!