Como descobrir qual usuário matou meu programa?

1

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

Suponha que um usuário travesso mate meu programa em execução, digamos, usando sudo kill ou sudo pkill . Como descubro qual é esse usuário?

    
por Ashwin Nanjappa 27.09.2016 / 07:30

2 respostas

1

Embora a resposta de Paulo esteja correta, nessa evidência poderia ser eliminada, isso não significa que a evidência seja eliminada. Muito mais pessoas sabem sobre o sudo, comparado com o número de pessoas que sabem sobre quais logs devem ser removidos (se eles se incomodarem).

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

Se você não souber qual arquivo armazena essas informações, tente executar um comando sudo. (Não importa o que você faz com o sudo: mesmo echo seria suficiente. O propósito é 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.

    
por 28.09.2016 / 02:59
1

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

Você pode usar o auditd daemon de auditoria para rastrear syscalls específicas, como matar.

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

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

    
por 27.09.2016 / 07:58