Em poucas palavras
Use os logs do ssh nas duas máquinas: ele fornece o PID do shell gerado. Isso deve permitir que você conecte o PID do shell com a execução do programa e tenha uma certa correspondência com o tty. Para uma auditoria mais profunda, você pode usar uma ferramenta de auditoria.
Em mais palavras
last
Com o simples last
você pode ter a lista das conexões relacionadas com o tty usado.
Você pode ter duas listas uma da sua máquina proxy (eu gostaria de chamá-la de Gateway, GW), e a outra do seu servidor .
O comando last
por padrão fornece seu nome de usuário, pts / tty, IP / hostname. log-in data-hora, logout data-hora. Você pode modificar em formato, etc, etc.
Então você tem que trabalhar nas sobreposições do período e adivinha quem foi.
O problema que vejo é que desta forma você tem que criar uma ferramenta (script) que lhe dê todas as correspondências possíveis, e purgá-las enquanto você encontra boas combinações. No entanto, você pode ter situações estranhas.
Vamos fazer um estudo de caso. Um primeiro usuário, digamos Nicolas, pode fazer o login no GW. Então ele vai tomar um café ou responde a uma chamada. Enquanto isso, um segundo usuário, digamos, Hastur, faça o login no GW e mais rápido que o usuário 1 st efetua o login no servidor. Apenas neste momento seu registro duplo é intrincado. Agora Hastur sente a necessidade de um café e Nicolas registra no servidor. Quem será o primeiro que terminará o café e que se conectará pela primeira vez com o programa?
/var/log/auth
(ou outro arquivo de log do ssh) [ 1 ] ..
Existem arquivos de log usados para monitorar o login e logout em cada sistema. Procure o caminho certo e nome, dependendo do sistema ca. Com
sudo grep TheUsername /var/log/auth.log
você obterá linhas semelhantes a
May 1 16:17:43 owl sshd[9024]: Accepted publickey for root from 192.168.0.101 port 37384 ssh2
May 1 16:17:43 owl sshd[9024]: pam_unix(sshd:session): session opened for user root by (uid=0)
onde você tem o tempo de login correto e até mesmo o PID ( [9024]
) e o IP.
Desta vez você pode combinar os dados deste arquivo com o comando last
para saber o tty, ou você pode ter logado dentro do programa o PID do shell que chamou o próprio programa (é possível fazer com um chamada do sistema para o shell).
Trabalhando nesses arquivos, você pode ter uma correspondência exclusiva para cada sessão. Para o arquivo de log análogo no gateway, você terá o IP e o nome de usuário originais.
audit tools
[ 2 ], [ 3 ]
Se você tem autorização para fazer e é legal, você pode usar uma ferramenta de auditoria e fazer um log completo do shell na máquina host.
Referências