Como faço para registrar todos os comandos executados por um usuário?

29

Eu quero monitorar a atividade de todos os usuários no meu servidor.

Mesmo quando o usuário executa um comando shell de algum editor como o vim, eu quero vê-los no arquivo de log.

Eu verifiquei a ferramenta acct, mas ela não está listando os comandos completos. (Por favor corrija-me se perdi algumas opções que já existem).

Qual ferramenta do Linux eu deveria procurar para resolver esse problema?

    
por Supratik 30.11.2011 / 15:01

5 respostas

30

Adicione esta linha ao seu pam config responsável por logins (sua autenticação do sistema em distribuições baseadas em redhat)

session    required     pam_tty_audit.so enable=*

Para descobrir o que foi feito, você pode usar.

ausearch -ts <some_timestamp> -m tty -i

Isso produz uma saída assim:

 type=TTY msg=audit(11/30/2011 15:38:39.178:12763684) : tty pid=32377 uid=root
 auid=matthew major=136 minor=2 comm=bash data=<up>,<ret>

A única desvantagem disso é que pode ser um pouco difícil de ler, mas é muito melhor do que a maioria das soluções propostas, já que, em teoria, ele poderia ser usado para gravar uma sessão inteira, verrugas n todas.

Edit: Ah, e você pode usar o aureport para gerar uma lista que pode ser mais útil.

# aureport --tty
...
12. 11/30/2011 15:50:54 12764042 501 ? 4294967295 bash "d",<^D>
13. 11/30/2011 15:52:30 12764112 501 ? 4294967295 bash "aureport --ty",<ret>
14. 11/30/2011 15:52:31 12764114 501 ? 4294967295 bash <up>,<left>,<left>,"t",<ret>
    
por 30.11.2011 / 15:41
8

A melhor solução para o seu problema seria o sistema interno de auditoria do Linux. Use man 8 auditd ou verifique esta página para obter mais informações: link .

Além disso, você pode verificar este tutorial - embora esteja ligeiramente fora do escopo da sua pergunta, ele mostra como o sistema de auditoria funciona.

    
por 30.11.2011 / 15:30
2

aqui está uma solução mágica: link

  • yum instala o psacct (redhat)
  • sudo apt-get install acct

você pode exibir estatísticas sobre comandos / conexões do usuário, etc.

Lista todos os comandos invocados por um determinado usuário ...

Pesquise nos registros da contabilidade pelo nome do comando: $ lastcomm rm $ lastcomm passwd

e assim por diante, para mais informações, visite o link acima ..

    
por 17.09.2014 / 00:57
2

Você pode usar snoopy .

É uma biblioteca de registro de comandos simples e não uma solução de auditoria adequada (facilmente contornada). Divulgação: Eu sou atual mantenedor do snoopy.

    
por 06.11.2014 / 00:36
2

Um truque menos conhecido, mas o mais incrível é simplesmente usar os recursos de auditoria internos de sudo . O Sudo é fornecido com um comando sudoreplay que facilita as sessões de reprodução. Ele retransmitirá vim sessões (como você sugere).

Veja como usá-lo em algumas etapas fáceis:

  1. Instale sudosh no seu sistema; este é um wrapper em torno do comando sudo que torna o usuário sudo (não root ) e pode ser usado como um shell de login do sistema
  2. Ativar sudo logging. Editar /etc/sudoers.d/sudosh : Defaults log_output Defaults!/usr/bin/sudoreplay !log_output Defaults!/sbin/reboot !log_output

  3. Adicione este comando a /etc/shells para permitir logins usando: /usr/bin/sudosh

    Dica : para impedir que os usuários usem outros shells para efetuar login, remova os outros shells de /etc/shells .

  4. Atualize o usuário foobar para usar o shell sudosh . chsh -s /usr/bin/sudosh foobar

Para informações mais detalhadas, consulte: link

    
por 14.03.2017 / 01:54