Redirecionamento de tráfego SSH para contêineres LXC

3

Eu uso contêineres LXC para hospedagem ssh e gostaria de redirecionar o tráfego SSH / SFTP (usando a porta 22) para o endereço IP privado do contêiner, mas em uma base de usuário / IP. Ou seja - uma porta de origem, muitos destinos.

  1. ssh [email protected]
  2. temos usuário 'ahes', o IP privado desse contêiner de usuário é 10.10.66.66
  3. redirecionar o tráfego para 10.10.66.66:22

Não é possível atribuir endereços IP públicos a cada contêiner.

Possíveis soluções que descobri:

  1. Easy one - esqueça a porta global 22 e use a porta correspondente a um usuário específico. Por exemplo, o ahes teria a porta 6666. Em seguida, redirecione o tráfego com a regra simples do iptables: server.com:6666 = > 10.10.66.66:22. A desvantagem é que em alguns lugares outras portas além de 22/80/443 estão bloqueadas.

  2. use a diretiva ForceCommand em sshd no servidor pai:

Match Group users
   ForceCommand /usr/local/bin/ssh.sh

script ssh.sh:

#!/bin/bash
# ...some logic here to find user IP address
# run ssh
exec ssh $USER@$IP $SSH_ORIGINAL_COMMAND

Esta solução é quase boa, mas não encontrei uma maneira de fazer o sftp funcionar com essa configuração.

A outra consideração é que não consigo acessar o protocolo porque a criptografia é feita antes que qualquer usuário identificador de dados seja enviado. Além disso, eu realmente não tenho habilidades para hackear o código fonte do sshd e manter o servidor pai com pacotes originais é muito desejável por razões de segurança.

Eu também encontrei o pacote libpam-nufw usado para autenticação no nível de conexão (iptables), mas acho que é para outros propósitos.

Eu apreciaria todas as pistas. Obrigado.

    
por ahes 17.02.2012 / 11:48

1 resposta

2

Defina um proxy HTTP escutando na porta 443 e habilite o encaminhamento de conexões para a porta 22 nos IPs LXC internos. Então, ao usar clientes ssh / sftp, use a opção ProxyConnect combinada com netcat / socat / proxytunnel / whatever.

Outra solução comum é configurar um gateway SSH (por exemplo, um LXC dedicado na mesma caixa). Os usuários conectam-se lá primeiro e depois à sua instância LXC.

    
por 20.02.2012 / 16:16