Comandos de log executados sobre ssh

8

Eu gostaria de registrar todos os comandos executados no SSH.

Dizer,

ssh something@server.com COMMAND

Quero registrar "COMMAND" no server.com

Pesquisei bastante, mas não consegui encontrar nada.

Há mais uma pergunta semelhante, mas não acho que exista uma solução por lá.

Como registrar "execução remota sobre SSH"

Posso ter uma visualização ao vivo com

pstree -p | grep ssh

Tentei Snoopy, auditd e sudosh, mas não consegui registrar esses comandos no ssh.

Existe um http://freecode.com/projects/shwatchr . mas não consigo baixar o script para testar.

existe alguma outra maneira de fazer isso?

Obrigado.........

Prashanth
fonte

Respostas:

4

Em vez de focar no SSH, dê um passo atrás e considere usar o auditd. Estou assumindo que o que você realmente deseja é rastrear os usuários, não rastreando o que é feito a partir do SSH em oposição a outros tipos de logon.

man auditctl deve lhe dar um ponto de partida.

Jenny D
fonte
Dica agradável, mas para mim também abstrata. Como usar auditctlpara registrar comandos ssh?
guettli
3

Eu fiz um teste usando essa opção no meu laboratório de servidor Suse e funciona, mas talvez haja uma maneira melhor.

ForceCommand logger -p user.notice "$SSH_ORIGINAL_COMMAND"
c4f4t0r
fonte
Isso registra o comando enviado, mas não o executa no sistema remoto.
Michael McGarrah
1

Eu encontrei uma maneira de fazer isso. Existe um script perl escrito por John M. Simpson ( https://www.jms1.net/ ).

Tudo o que você precisa fazer é adicionar

command="#{path to log-session}"

antes de cada chave em suas ~ / .ssh / allowed_keys

Funciona apenas se você tiver um ssh sem senha, mas isso resolve meu objetivo até certo ponto.

http://www.jms1.net/log-session

Prashanth
fonte
1

No meu caso, eu tinha exatamente o mesmo requisito. A única ressalva com esse método é que não tenho certeza de como fazê-lo funcionar, se você não usar as teclas ssh. Eu fiz um pequeno script bash para registrar o comando antes de executá-lo:

#!/bin/bash
echo "$(date -Is) ${SSH_ORIGINAL_COMMAND}" >> ~/sshcommands.log
sh "${SSH_ORIGINAL_COMMAND}"

Salvei este comando em ~ / bin / log-command e o tornei executável ( chmod +x ~/bin/log-commands).

No arquivo allowed_keys, adicionei o command=parâmetro à linha pertencente à chave SSH para a qual desejava ter logs, para que fosse forçado a executar o script log-command:

command = "/ home / complicado / bin / log-comandos" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ ...... 6J0C1 [email protected]

Se alguém está ciente do log, mas não deseja que você veja os comandos, ele pode simplesmente entrar em uma sessão interativa. Como você mencionou, você já tentou o snoopy, o que fará isso por você. Alternativas populares que eu não tentei são rootsh, sudosh e log-user-session.

zaTricky
fonte
1

Snoopy ajudaria você com isso? "Registre todos os comandos executados no syslog (também conhecido como Snoopy Logger)."

https://github.com/a2o/snoopy

Ben Lavender
fonte