Como obter o número da porta de um usuário ssh'd em?

1

Estou fazendo a transição de servidores da porta 22 em um ambiente multiusuário existente. Eu configurei o sshd para ouvir duas portas: 22 e a nova porta.

Agora, gostaria de detectar quando um usuário se conecta ou está conectado à porta 22. Isso é aparentemente mais difícil do que eu esperava.

Eu tentei ativar o registro em sshd_config, mas mesmo o DEBUG não registra o número da porta.

No momento, estou varrendo a saída do netstat para conexões TCP para a porta 22, mas isso lista um monte de falsos positivos de bot scanners aleatórios. [a razão para o movimento do porto]

    
por Dan Garthwaite 07.08.2014 / 22:53

2 respostas

3

Usando lsof -n -i TCP:22 -a -c sshd -a -u ^root,^sshd , você pode obter uma lista de sshd de processos e nomes de usuários com seus sockets na porta 22. Ele ignora os que pertencem a root ou sshd porque eles não correspondem a usuários conectados.

Uma abordagem completamente diferente seria adicionar alguns comandos ao /etc/ssh/sshrc , que analisará $SSH_CONNECTION e registrará: logger -p auth.notice -t "sshd[$$]" "$SSH_CONNECTION"

Uma terceira abordagem é criar uma segunda instância de sshd para a porta 22 e configurá-la para registrar em um recurso diferente.

    
por 07.08.2014 / 23:36
1

Tente algo assim:

sudo lsof -i -n -P | egrep sshd.*ESTABLISHED | egrep 'who -a|grep pts|awk '{print $7}'|sed ':a;N;$!ba;s/\n/\|/g''

Para esclarecer, o objetivo desse comando é combinar as lsof hits (que mostram a porta usada) com as sessões de who com pts (extraindo os PIDs da saída) para filtrar os falsos positivos.

Em outras palavras, mostra as conexões dos processos com os PIDs que mantêm uma sessão pts ssh.

    
por 07.08.2014 / 23:44