
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 kill
ou 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é echo
seria 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.