Monitorando a atividade no meu computador.

16

Recentemente, descobri que alguém estava usando meu computador sem consentimento, navegando em pastas, etc.

Eu poderia mudar todas as minhas senhas imediatamente, mas estou curioso quanto ao que a parte intrometida estava procurando. Então, eu gostaria de montar uma armadilha (sorriso maligno).

Qual software monitorará qualquer atividade no meu computador? Embora eu saiba que capturar minha tela funcionará aqui. Prefiro usar um arquivo de log.

Por exemplo:

/var/log/activity.log

[1 de agosto de 2010 20:23] / usr / bin / thunar acessado / multimedia / cctv-records /
[1 de agosto de 2010 20:25] / usr / bin / mplayer acessado /multimedia/cctv-records/00232.avi
[3 de agosto de 2010 2010 02:34] / usr / bin / thunderbird foi executado
[3 de agosto de 2010 03:33] sessão ssh de entrada de 12.32.132.123

As atividades que eu gostaria de registrar são:

  • Acesso a arquivos e pastas no sistema de arquivos
  • Comandos executados (do console ou de outro modo)
  • Sessões do usuário (logon, sessões ssh e tentativas com falha)
Stefan
fonte
/var/log/auth.log deve cobrir seu terceiro marcador. Os outros serão um pouco menos triviais.
Cascabel
@jefromi minha auth.log registra apenas sudo e comando su tentativas ... não logins :(
Stefan

Respostas:

8

Você pode usar o mecanismo no kernel inotifypara monitorar arquivos acessados.

Primeiro você deve verificar se inotifyestá ativado no kernel:

pbm@tauri ~ $ zcat /proc/config.gz | grep CONFIG_INOTIFY
CONFIG_INOTIFY=y
CONFIG_INOTIFY_USER=y

A próxima coisa a fazer é instalar inotify-tools. Instruções para várias distribuições que você pode encontrar na página do projeto - ela deve estar nos repositórios de todas as principais distribuições.

Depois que o inotify estiver pronto para funcionar:

inotifywait /dirs/to/watch -mrq

( m= não sai após um evento, r= recursivo, q= silencioso)

Por exemplo - saída após ls /home/pbm

pbm@tauri ~ $ inotifywait /bin /home/pbm -mq 
/bin/ OPEN ls
/bin/ ACCESS ls
/bin/ ACCESS ls
/home/pbm/ OPEN,ISDIR 
/home/pbm/ CLOSE_NOWRITE,CLOSE,ISDIR 
/bin/ CLOSE_NOWRITE,CLOSE ls

O importante é configurar corretamente os diretórios para o watch:

  • não assista /recursivamente - há muita leitura / gravação /deve/proc
  • não assista seu diretório pessoal de forma recursiva - quando você usa aplicativos, há muita leitura / gravação em diretórios de configuração de aplicativo e diretórios de perfil de navegadores

Em /proc/sys/fs/inotify/max_user_watcheshá opção de configuração que mostra quantos arquivos podem ser vistos simultaneamente. O valor padrão (para Gentoo) não é tão alto, portanto, se você definir o watcher, /home/poderá exceder o limite. Você pode aumentar o limite usando echo(é necessário acesso root).

echo 524288 > /proc/sys/fs/inotify/max_user_watches

Mas antes disso, você deve ler sobre as consequências dessa mudança .

Opções que podem ser interessantes para você:

  • -d = modo daemon
  • -o file = saída para o arquivo
  • --format = formato especificado pelo usuário, mais informações em man inotifywait
  • -e EVENT= O evento deve ser monitorado (por exemplo access, modify, etc, mais informações em man)
pbm
fonte
Para ter a última configuração entre as redefinições do sistema, você pode fazê-lo no Debian echo 524288 >> /etc/sysctl.conf && service procps restart. Qual é o equivalente no Gentoo?
tshepang
Eu acho que você quer dizer echo "fs.inotify.max_user_watches = 524288" >> /etc/sysctl.conf. No Gentoo você pode usar o mesmo método, mas sysctl.confé originado pelo /etc/init.d/bootmiscscript init.
Pbm
11
na verdade, é /etc/init.d/sysctl.
OneOfOne 23/11/2010
7

O outro cara está com você? Se ele tiver acesso físico ou acesso root, ele pode apagar todos os seus rastros e até mesmo plantar um bug para espionar você . Por outro lado, alguns traços são dolorosos de apagar e é difícil pensar em tudo.

Diversas coisas já estão registradas nos logs do sistema, normalmente em /var/log(alguns sistemas usam um local diferente, como /var/logsou /var/adm). Sob uma configuração normal, todos os logins e montagens são registrados, entre outros. Se você estiver preocupado com a exclusão de logs, poderá configurar o log remoto (como fazer isso depende da implementação do syslog, mas geralmente é uma ou duas linhas para alterar em um arquivo de configuração no remetente e no destinatário).

Se você ou sua distribuição não desativou esse recurso, cada arquivo possui um tempo de acesso ("atime") que é atualizado sempre que o arquivo é lido. (Se o sistema de arquivos estiver montado com a opção noatimeou relatime, o atime não será atualizado.) O atime pode ser falsificado touch -a, mas isso atualiza o ctime, deixando um rastro. (Mesmo o root não pode remover diretamente esse rastreamento, você precisa ignorar o código do sistema de arquivos.)

Vários programas têm um histórico de sessões . É fácil remover ou falsificar, se o invasor se lembrou de fazê-lo. Bash mantém ~/.bash_history, os navegadores tendem a escrever muitas coisas em seu diretório de perfil, e assim por diante. Você também pode encontrar erros ou avisos reveladores em ~/.xsession-errorsou em /var/log/Xorg.0.logoutro local dependente do sistema.

Muitos departamentos possuem um recurso de contabilidade de processo . Veja, por exemplo, o manual de utilitários de contabilidade GNU , a entrada no manual do FreeBSD ou o howto do Linux ou o guia Solaris . Uma vez ativado, ele registra qual usuário iniciou o processo quando (registra execvechamadas) e talvez um pouco mais. Há muitas informações interessantes que não são registradas, como os arquivos acessados ​​pelo processo.

Se você deseja monitorar todos os acessos a um sistema de arquivos, é possível fornecê-lo através do logfs . É muito fácil perceber se o cara pensa em olhar.

Existem programas de log mais abrangentes, mas eles podem exigir suporte adicional ao kernel. No Solaris, FreeBSD, NetBSD e Mac OS X, existe o dtrace (existe uma porta Linux em andamento, mas não sei se chegou a um estágio utilizável). Você também pode rastrear processos específicos por meio de uma interface para a ptracechamada do sistema, por exemplo, straceno Linux; isso pode induzir uma desaceleração perceptível.

¹ Algo que não está na Wikipedia? Não, isso é loucura.

Gilles 'SO- parar de ser mau'
fonte
1

Dê uma olhada no Fail2ban e DenyHØsts .

iamsid
fonte
11
O Fail2ban examina os logs de acesso para realizar determinadas ações (por exemplo, banir um IP), mas não gera esses tipos de logs de acesso. Os DenyHosts confiam nos TCP Wrappers para banir o ip, novamente, isso não está relacionado ao OP.
Barthelemy
1

Não é exatamente isso que você está procurando, mas alguns aplicativos mantêm uma lista de arquivos acessados ​​recentemente. Além disso, o GNOME mantém essa lista, que pode ser acessada em seu Painel.

Outra correção é usar o Diário de Atividades do GNOME , embora da última vez que verifiquei, ele não mantinha um registro da atividade da CLI e só estava interessado em atividades relacionadas a arquivos (leitura, edição), ignorando outras atividades.

Você também pode procurar dentro do /var/logdiretório onde vários programas armazenam seus logs.

tshepang
fonte
1

Assumindo ingenuidade suficiente do lado do atacante, você pode simplesmente script -qft $USER-$$ 2> $USER-$$-timeusar o script de login apropriado para monitorar suas interações terminais e reproduzir com os comandos scriptreplay apropriados.

Para monitorar o acesso no nível do arquivo, recomendo anexar um strace -fe openregistro apropriado ao sshd e filtrar as sessões de login (ou talvez seja melhor fazer isso apenas. Aviso: Saídas enormes, já que fazer qualquer coisa em um sistema moderno afeta muitos arquivos Se você deseja apenas monitorar arquivos específicos, consulte o auditd e sua infraestrutura de suporte.

Sessões e tentativas de login podem ser coletadas do syslog conforme outras respostas.

Thomas Themel
fonte