Como descobrir qual usuário eliminou meu programa?

Como descobrir qual usuário eliminou meu programa?

Estou executando um programa de longa duração em um servidor Linux. Muitos outros usuários também estão executando seus programas neste servidor. Todos nós temos permissões sudo.

Suponha que um usuário malicioso mate meu programa em execução, digamos, usando sudo killou sudo pkill. Como faço para descobrir quem é esse usuário?

Responder1

Embora a resposta de Paulo esteja correta, no sentido de que a evidência poderia ser eliminada, isso não significa que a evidência seja eliminada. Muito mais pessoas sabem sobre o sudo, em comparação com o número de pessoas que sabem quais logs limpar (se é que se importariam).

No meu sistema, toda vez que o sudo é usado, toda a linha de comando é armazenada em um log. Imagino que seu sistema possa fazer o mesmo. No OpenBSD, é /var/log/authlog, enquanto em um sistema Debian, é /var/log/auth.log

Se você não sabe qual arquivo armazena essas informações, tente executar um comando sudo. (Não importa o que você faça com o sudo: até echoseria suficiente. O objetivo é modificar os logs que são modificados quando o sudo é usado.) Em seguida, use

ls -ltr /var/log/*auth*

ou

ls -ltr /var/log | tail

para encontrar arquivos modificados recentemente.

Responder2

Se todos vocês tiverem sudo, não há maneira garantida de manter evidências de um processo eliminado, pois qualquer evidência pode ser removida com o mesmo nível de permissão.

Você pode usar oauditd daemon de auditoriapara rastrear syscalls específicos, como kill.

Obviamente, um usuário root poderia simplesmente parar o daemon de auditoria primeiro e depois excluir os logs. Então você gostaria de exportar logs externamente.

Uma abordagem melhor seria gerenciar melhor o sudo, dando a cada usuário apenas o acesso necessário. Os usuários gerais quase nunca precisam de acesso root completo, e você pode usar o sudo para conceder um subconjunto de permissões.

informação relacionada