
Gostaria de registrar todos os comandos executados por SSH.
Dizer,
ssh [email protected] COMMAND
Quero registrar "COMMAND" em server.com
Pesquisei bastante, mas não consegui encontrar nada.
Há mais uma pergunta semelhante, mas não acho que haja uma solução por aí.
Como registrar “execução remota por SSH”
Posso obter uma visualização ao vivo com
pstree -p | grep ssh
Eu tentei Snoopy, auditd e sudosh, mas não consegui registrar esses comandos por SSH.
Existe umhttp://freecode.com/projects/shwatchr, mas não consigo baixar o script para testar.
Existe alguma outra maneira de fazer isso?
Responder1
fiz um teste usando esta opção no laboratório suse do meu servidor e funcionou, mas talvez haja uma maneira melhor.
ForceCommand logger -p user.notice "$SSH_ORIGINAL_COMMAND"
Responder2
Em vez de focar no SSH, dê um passo atrás e considere usar o auditd. Presumo que o que você realmente deseja é rastrear os usuários, não rastrear o que é feito no SSH, ao contrário de outros tipos de login.
man auditctl
deve lhe dar um ponto de partida.
Responder3
Eu encontrei uma maneira de fazer isso. Existe um script perl escrito porJohn M. Simpson(https://www.jms1.net/).
Tudo que você precisa fazer é adicionar
command="#{path to log-session}"
antes de cada chave em seu ~/.ssh/authorized_keys
Funciona apenas se você tiver um ssh sem senha, mas isso resolve meu propósito até certo ponto.
Responder4
No meu caso, eu tinha exatamente o mesmo requisito. A única ressalva desse método é que não tenho certeza de como fazê-lo funcionar se você não usar chaves ssh. Criei 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-commands e tornei-o executável ( chmod +x ~/bin/log-commands
).
No arquivo autorizado_keys, adicionei o command=
parâmetro à linha pertencente à chave SSH para a qual eu queria ter logs, para que fosse forçado a executar o script log-commands:
comando = "/home/tricky/bin/log-commands" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ......6J0C1 [e-mail protegido]
Se alguém estiver ciente do registro, mas não quiser que você veja os comandos, poderá simplesmente entrar em uma sessão interativa. Como você mencionou, você já experimentou o snoopy, que fará isso por você. Alternativas populares que não experimentei são rooth, sudosh e log-user-session.