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

32

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, quero vê-los no arquivo de log.

Verifiquei a conta da ferramenta, mas ela não está listando os comandos completos. (Corrija-me se eu perdi algumas opções que já existem).

Qual ferramenta Linux devo procurar para resolver esse problema?

Supratik
fonte
11
. man script (1)
adaptr
Uma boa referência 8gwifi.org/docs/linux-monitor-commands.jsp
anish

Respostas:

32

Adicione esta linha à sua configuração do pam responsável pelos logins (sua autenticação do sistema nas 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 como esta:

 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, uma vez que, em teoria, poderia ser usado para gravar uma sessão inteira, com todos os recursos.

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>
Matthew Ife
fonte
Obrigado pelos detalhes. Estou usando o Ubuntu 10.04 LTS Quando verifico a pasta / lib / security / o módulo não está presente, mas há uma página de manual presente para esse módulo. Acho que atingi esse bug bugs.launchpad.net/ubuntu/+source/pam/+bug/588547 Existe alguma outra maneira de instalar esse módulo?
Supratik
O relatório de erros sugere que uma correção e atualização foram distribuídas.
Matthew Ife
@ Mlfe Compilei o código fonte do PAM e copiei o arquivo .so em / lib / security / e funcionou. Obrigado novamente.
Supratik
11
@CameronKerr: a questão senha é fixa: redhat.com/archives/linux-audit/2013-May/msg00007.html
Yohann
3
Observe que vale ressaltar que, para o funcionamento acima, o auditddaemon precisa ser ativado primeiro (não era por padrão na minha instalação do CentOS 6.7). Para iniciar o daemon, use :, e service auditd startpara tornar essa alteração persistente (após a reinicialização), use chkconfig auditd on Fonte: access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/… e access.redhat.com/documentation/en-US/ Red_Hat_Enterprise_Linux /…
jonny
8

A melhor solução para o seu problema seria o sistema de auditoria interno do Linux . Use man 8 auditdou consulte esta página para obter mais informações: http://linux.die.net/man/8/auditd .

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

Vladimir Blaskov
fonte
2

Você poderia usar snoopy .

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

Bostjan Skufca
fonte
2

Um truque menos conhecido, mas facilmente o mais impressionante é apenas usar os recursos de auditoria internos do sudo. O Sudo é fornecido com um sudoreplaycomando que facilita a reprodução das sessões. Ele até retransmitirá vimsessões (como você sugere).

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

  1. Instale sudoshno seu sistema; este é um invólucro de shell em torno do sudocomando que cria um usuário sudo(não root) e pode ser usado como um shell de logon do sistema
  2. Habilite o sudolog. Editar /etc/sudoers.d/sudosh: Defaults log_output Defaults!/usr/bin/sudoreplay !log_output Defaults!/sbin/reboot !log_output

  3. Adicione este comando para /etc/shellspermitir logins usando-o: /usr/bin/sudosh

    Gorjeta : para impedir que os usuários usem outros shells para fazer login, remova esses outros shells /etc/shells.

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

Para informações mais detalhadas, consulte: https://github.com/cloudposse/sudosh/

Erik Osterman
fonte
1

aqui está uma solução mágica: http://www.cyberciti.biz/tips/howto-log-user-activity-using-process-accounting.html

  • yum install psacct (redhat)
  • sudo apt-get install conta

você pode exibir estatísticas sobre comandos do usuário / conexão etc.

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

Pesquise os logs contábeis pelo nome do comando: $ lastcomm rm $ lastcomm passwd

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

Med Ali Difallah
fonte
3
Na pergunta foi dita: 'acct não está listando os comandos completos'.
Putnik