Proxy SSH baseado em nome de usuário

1

Estou tentando migrar entre dois servidores ssh com base no nome de usuário recebido, por exemplo

ssh user1 @ testserver irá para uma instância sshd e user2 @ testserver irá para outra.

Isso pode ser feito?

    
por Amaterasu 23.01.2014 / 04:28

3 respostas

-1

Não. Tudo em uma sessão ssh é criptografado. Como você propõe que o proxy possa espionar o nome de usuário?

    
por 23.01.2014 / 04:40
6

Acho que você pode fazer isso com ForceCommand , como:

ForceCommand proxyscript

em / etc / sshd / sshd_config. Aqui proxyscript seria um script personalizado que seria ssh para qualquer que seja o próximo servidor, dependendo de qual usuário o está executando. O script teria informações suficientes para fazer isso, porque de acordo com a página man do sshd_config, ele será executado sob o shell de login do usuário, portanto, por exemplo, $ USER estará disponível.

Se você tem apenas um conjunto pequeno e fixo de usuários para o qual você deseja fazer isso, então você pode configurar tudo em sshd_config com por exemplo

Match User user1
ForceCommand ssh user1@host1

Match User user2
ForceCommand ssh user2@host2

Mas não sei se isso conectaria corretamente a entrada / saída padrão da conexão de entrada ao padrão in / out do novo comando ssh.

    
por 23.01.2014 / 08:25
1

Isso é bastante simples de fazer de forma transparente (talvez ajustar um programa de honeyp do SSH para auto-login e, em seguida, usar ForceCommand para lidar com o proxy? parece confuso), mas você pode configurar um proxy e instruir seus usuários sobre como usá-lo facilmente.

Esse conceito é chamado de host de bastiões do SSH . Nenhum software especial é necessário no proxy (o bastião). O único software que os usuários finais precisam acessar é o netcat ( nc ), então você pode criar uma cadeia bastante simples para eles, se quiser.

Cada usuário do OS X / Linux / BSD / UNIX teria uma entrada no arquivo ~/.ssh/config (em seus clientes locais, não no bastião) que se parece com isso:

Host MYSERVER
  ProxyCommand ssh BASTION nc -w 600 USER1_SERVER 22

A configuração de cada usuário só diferiria no servidor de destino (por exemplo, USER1_SERVER), que está conectado na rede local pelo bastião. (Se os nomes dos usuários forem diferentes, considere ProxyCommand ssh BASTION_USERNAME@BASTION nc -w 600 USER1_SERVER_USERNAME@USER1_SERVER 22 .)

Isso é tudo que existe para isso. Agora USER1 pode executar ssh MYSERVER . Se não estiver usando as chaves SSH, será solicitada a USER1 uma senha para BASTION e, em seguida, uma senha para o sistema interno USER1_SERVER. Se estiver usando chaves SSH e a chave pública de USER1 estiver instalada em BASTION e USER1_SERVER, o login será automático.

Usuários do Windows podem fazer isso através do PuTTY usando plink (uma parte do PuTTY). Aqui está um guia .

Se você quiser restringir o usuário no bastião, faça isso:

Match User user1
  ForceCommand nc -w 600 USER1_SERVER 22

... embora isso impeça o usuário1 de gerenciar seu arquivo authorized_keys no bastião.

    
por 07.07.2015 / 04:41

Tags