Visualização ao vivo dos comandos shell do Linux executados por outro usuário?

27

É possível para o usuário root no Linux ter uma visão em tempo real (ou quase em tempo real) dos comandos do shell sendo executados por outro usuário logado através de um terminal ou SSH? Obviamente, eles são armazenados em .bash_history, mas isso só é salvo quando o usuário faz logoff e pode ser desativado também.

Edit: idealmente algo que pode ser facilmente ligado e desligado.

    
por EMP 16.05.2009 / 03:40

10 respostas

16

como root, você poderia substituir o shell por um script simples que registrasse seus comandos antes de passá-los para o shell real. Isso só funcionaria antes de eles entrarem.

    
por 16.05.2009 / 04:01
10

Use sniffy se quiser entrar na sessão do usuário ou screen -x se tiver cooperação.

Lembre-se de que a espionagem dos usuários pode estar sujeita a regulamentações ou até mesmo ilegal, dependendo da legislação local.

    
por 16.05.2009 / 09:45
8

Mudar o shell é muito fácil de contornar, consertar o shell em si é melhor, mas você precisa corrigir todos os shells. Nosso cracker favorito usa isso, como bônus, ele não se incomoda em desabilitar o bash_history.

ssh host /bin/sh -i  

Snoopy é um wrapper em torno das funções exec e registra qualquer binário externo que é executado ( não shell builtins)

@ A sugestão de David Schmitt sniffy usa um método melhor, ele toca o pseudoterminal.

O

ttysnoop usa o mesmo método, mas não é mantido. (Eu provavelmente tive problemas fazendo log de conexões ssh, não consigo me lembrar)

Você pode testar o ssh para registrar uma sessão, mas esse patch é antigo .

pseudopod e rootsh pode ser usado para registrar sudos legítimos. E o shwatcr é outra coisa para monitorar logins.

    
por 16.05.2009 / 21:42
4

Se você está cooperando, você pode usar a tela GNU entre dois usuários - ter um para estabelecer a sessão de tela , então faça a outra junção usando screen -x .

Se você deseja que o root "espie" outros usuários sem o conhecimento deles, a melhor e mais eficiente solução pode ser o software / hardware do keylogger.

    
por 16.05.2009 / 03:56
4

Sysdig é uma ferramenta poderosa de exploração em nível de sistema - é isso que você quer;)

exemplo:

sysdig -i spy_users

Categoria: segurança

spy_users Mostrar atividade interativa do usuário

lista todos os comandos que os usuários iniciam interativamente (por exemplo, do bash) e todos os usuários do diretório visitam

    
por 15.06.2014 / 21:07
2

Você pode experimentar o patch bash-BOFH. Procure pelo patch.

    
por 16.05.2009 / 04:02
1

Eu escrevi um método para registrar todos os comandos / builtins 'bash' em um arquivo de texto ou em um servidor 'syslog' sem usar um patch ou uma ferramenta executável especial.

É muito fácil de implementar, já que é um simples shellscript que precisa ser chamado uma vez na inicialização do 'bash'.

Veja o método aqui: link

    
por 06.06.2012 / 11:29
1
function spy() { 
   ptsnum='ps awfux | grep pt[s]\/"$1" | awk '/bas[h]/{print $2}'' ; 
   /usr/bin/strace -s 1000 -t -f -p $ptsnum 2>&1 3>&1 \
        | grep -Poi 'write\(...\"[[:print:]]{1,2}\"[.][.][.][,]..\)' ; 
}

[436] klikevil@epiphany ~ $ w<br>
 09:36:43 up 12:06,  6 users,  load average: 0.46, 0.29, 0.20<br>
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT<br>
klikevil pts/0    75.125.126.8     23:05    2:19m 10:33   0.18s cmd                                      <br>
klikevil pts/1    75.125.126.8     00:18    6:50m  0.06s  0.04s sshd: klikevil [priv]<br>
klikevil tty7     :0               09:02   17:07m  2:02   0.32s x-session-manager<br>
klikevil pts/2    :0.0             09:03    3:30   0.08s  0.08s bash<br>
klikevil pts/3    :0.0             09:03    0.00s  0.76s  0.00s w<br>
klikevil pts/4    :0.0             09:06    3:13   0.46s  0.00s /bin/sh /usr/bin/thunder<br>
[437] klikevil@epiphany ~ $ spy 2<br>
write(2, "e"..., 1)<br>
write(2, "c"..., 1)<br>
write(2, "h"..., 1)<br>
write(2, "o"..., 1)<br>
write(2, " "..., 1)<br>
write(2, "s"..., 1)<br>
write(2, "u"..., 1)<br>
write(2, "p"..., 1)<br>
write(2, " "..., 1)<br>
write(2, "d"..., 1)<br>
write(2, "o"..., 1)<br>
write(2, "g"..., 1)<br>
write(2, "\n"..., 1)<br>
^C<br>

Parece funcionar muito bem se você não se importa em classificar várias quebras de linha.

    
por 02.09.2012 / 14:39
1

O Snoopy é destinado ao registro de comandos simples.

Se você quiser ver ao vivo os comandos executados no seu sistema, pode ser que seja. Aviso: o snoopy não é uma solução de auditoria adequada e pode ser facilmente contornado.

No entanto, se você deseja ver todos os caracteres digitados no terminal, você terá que usar outra ferramenta.

Divulgação: sou o mantenedor atual do snoopy.

    
por 05.11.2014 / 23:27
-3

experimente esta exportação HISTTIMEFORMAT="% T" execute alguns comandos e "histórico" depois ...

    
por 24.08.2013 / 06:51