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.
É 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.
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.
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.
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.
Ottysnoop 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.
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.
Sysdig é uma ferramenta poderosa de exploração em nível de sistema - é isso que você quer;)
sysdig -i spy_users
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
Você pode experimentar o patch bash-BOFH. Procure pelo patch.
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
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.
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.
experimente esta exportação HISTTIMEFORMAT="% T" execute alguns comandos e "histórico" depois ...