Preciso de uma solução de proxy reverso para SSH

10

Olá, aqui está uma situação em que tenho um servidor em um data center corporativo para um projeto. Eu tenho um acesso SSH a esta máquina na porta 22. Existem algumas máquinas virtuais em execução neste servidor e, em seguida, na parte de trás de tudo o que muitos outros sistemas operacionais estão funcionando. Agora, como estou atrás do firewall dos datacenters, meu supervisor me perguntou se posso fazer algo pelo qual posso dar a muitas pessoas na Internet acesso diretamente a essas máquinas virtuais. Sei que tenho permissão para obter tráfego na porta que não seja 22, posso fazer um encaminhamento de porta. Mas, como não tenho permissão para isso, o que pode ser uma solução nesse caso. As pessoas que gostariam de se conectar podem ser idiotas completos. Quem pode ser feliz apenas abrindo o putty em suas máquinas ou até mesmo o filezilla.

Eu não tenho firewall em minhas mãos ou qualquer outra porta que não seja 22 aberta e, de fato, mesmo se eu solicitar que elas não permitam abrir. 2 vezes o SSH não é algo que meu supervisor deseja.

Vinculo
fonte
1
questão relacionada com outra ótima solução: serverfault.com/questions/361794/…
Kaii
Proxy Reverso do SSH github.com/tg123/sshpiper
farmer1992
sshpiperd funciona muito bem!
Király István

Respostas:

5

Você deve abrir o túnel ssh do seu computador para o servidor no data center. Vamos nomear isso como "server1". Se você estiver usando o openssh, basta executar

ssh -L0.0.0.0:8080:localhost:8080 you_username@server1

Isso abrirá a conexão do computador na porta 8080 para o servidor, porta 8080, ignorando o firewall no meio. Supondo que seu apache esteja atendendo na porta 8080. O formato de encaminhamento de porta está atendendo IP: porta local: endereço remoto: porta remota. Claro que, para um único servidor, você também pode usar

ssh -L0.0.0.0:8080:remote_server_address:8080 you_username@server1

Observe que o localhost no parâmetro -L é relativo ao server1. Em outras palavras, o servidor está vendo conexões vindas do host local, quando, na verdade, essas vêm do seu computador através da conexão ssh.

Você também precisa de parâmetro

AllowTcpForwarding yes

na configuração ssh do servidor (normalmente / etc / ssh / sshd_config).

Depois disso, outras pessoas podem se conectar ao seu computador na porta 8080 para obter conexão via Apache Reverse Proxy. Se você precisar de proxy geral (para que os usuários possam escolher o endereço, não apenas endereços específicos na configuração do Apache), instale o squid no server1 e use o túnel ssh na porta do squid.

Olli
fonte
Você quer dizer quando o fizer ssh -L0.0.0.0:8080:localhost:8080 you_username@server1 , se a conexão ainda estará passando pela porta 22 do firewall (porque se isso não acontecer, não posso fazer nada) e o túnel ssh será estabelecido entre a máquina local e a máquina remota nas portas especificadas, mas todo o tráfego continuava (porta 22) no firewall.
Bond
Quando você executa túnel ssh, que o tráfego (de porta 8080 para a porta 8080) vai conexão dentro ssh, usando a porta 22. Firewall não ver o tráfego para a porta 22, não 8080.
Olli
Quando você dá esse comando ssh -L0.0.0.0:8080:remote_server_address:8080 you_username@server1 , quero saber o que pode ser colocado como endereço_do_servidor remoto: o IP da máquina interna na qual desejo usar o servidor1 como intermediário. Entendi isso corretamente?
Bond
Bond: sim, está correto. Você também pode especificar vários túneis -L (com portas de origem diferentes, é claro) para abrir conexões com várias máquinas internas. Por exemplo "-L0.0.0.0: 8080: remote_server1: 80 -L0.0.0.0: 8081: remote_server2: 80 -L0.0.0.0: 8082: remote_server2: 22" (sem aspas).
Olli 31/01
Tornar isso sólido exigiria definir um servidor agindo como rebote fora do data center e permitindo a entrada de tráfego. É claro que o túnel ssh está ok como uma solução temporária, mas, para algo em produção, aconselho instalar um proxy reverso real no a recuperação e adapte a configuração do firewall para permitir conexões 8080 somente dessa recuperação. Dito isso, é mais inteligente colocar o proxy reverso como uma das máquinas virtuais dentro do controlador de domínio. Para que a conexão precise ser protegida com SSL somente nessa máquina.
jmary
0

Pode ser que você possa usar algo como SshMeIn . É um sistema web de código aberto que cria um túnel ssh através de firewalls, você nem precisa abrir as portas.

Belug
fonte