Compare a sessão sty / pts ssh entre cliente e servidor Unix

1

É possível listar a sessão ssh com informações de tty / pts e a data de login e logout em um cliente? equivalente do último comando em um servidor.

Meus usuários usam um proxy ssh para se conectar a um servidor, mas a partir do servidor proxy eles usam uma conta genérica para se conectar ao servidor. Eu gostaria de comparar tty / pts id entre cliente e servidor. No servidor eu uso este script para obter esta informação para o dia atual:

#!/bin/bash
today="$(date '+%a %b %e')"
last | awk -v pattern="$today" '$0 ~ pattern && /pts/ {print $0 "#line#"}'
exit 0

Obrigado

    
por Nicolas 25.02.2016 / 09:55

1 resposta

0

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

  • [ 1 ] Registrando tentativas de acesso SSH
  • [ 2 ] logger de sessão shell / ssh / tty
  • [ 3 ] sessão de shell BASH registrando no host remoto
por 26.02.2016 / 10:32

Tags