SSH tunneling over SSL

1

Em um dos meus sistemas, há um firewall proibindo qualquer saída, a menos que http (s) ...

Alguns usuários têm que usar o ssh, mas eles não podem. Eu tentei primeiro executar o ssh na porta 443, mas sem sucesso.

Eu pesquisei no Google e descobri que eu poderia fazer isso usando stunnel , que precisa de alguma configuração, então como fazer isso?

    
por Maythux 20.02.2014 / 17:16

2 respostas

3

Esta configuração é feita em duas partes. A primeira parte é feita no servidor SSH remoto. A segunda parte é feita na máquina local.

Instruções do lado do servidor:

Primeiro instale o stunnel:

sudo apt-get install stunnel4

Faça o certificado SSL (por 365 dias):

openssl genrsa 1024 > stunnel.key
openssl req -new -key stunnel.key -x509 -days 365 -out stunnel.crt
cat stunnel.crt stunnel.key > stunnel.pem
sudo mv stunnel.pem /etc/stunnel/

Configure o stunnel para o túnel 443 (https) para 22 (ssh):

Crie um arquivo de configuração para atender às necessidades de usar o SSH sobre SSL.

gksu gedit /etc/stunnel/stunnel.conf

Escreva estes:

pid = /var/run/stunnel.pid
cert = /etc/stunnel/stunnel.pem
[ssh] accept = public_ip:443
connect = 127.0.0.1:22

A configuração acima diz ao stunnel onde encontrar o certificado que geramos e onde aceitar e encaminhar as conexões. Neste caso o stunnel irá escutar no public_ip na porta 443 (https) e redirecionar as conexões para o localhost em 22 (ssh).

Para iniciar o serviço stunnel, precisamos ativá-lo em / etc / default / stunnel4. Altere a linha ENABLED de 0 para 1.

Finalmente, podemos iniciar o serviço e passar para a configuração do cliente:

sudo service stunnel4 start

Você pode verificar se stunnel está agora escutando usando o comando netstat:

netstat -natp | grep :443

Instruções do lado do cliente:

Primeiro, instale o pacote stunnel:

sudo apt-get install stunnel4

Faça o certificado SSL (por 365 dias):

openssl genrsa 1024 > stunnel.key
openssl req -new -key stunnel.key -x509 -days 365 -out stunnel.crt
cat stunnel.crt stunnel.key > stunnel.pem
sudo mv stunnel.pem /etc/stunnel/

Criar arquivo de configuração:

gksu gedit /etc/stunnel/stunnel.conf

Escreva estes:

pid = /var/run/stunnel.pid
cert = /etc/stunnel/stunnel.pem
[ssh] accept = 127.0.0.1:2200
connect = remote_ip:443

Para iniciar o serviço stunnel, precisamos ativá-lo em / etc / default / stunnel4. Altere a linha ENABLED de 0 para 1.

Iniciar o serviço.

sudo service stunnel4 start

Faça a conexão

Com o serviço stunnel agora em execução no servidor e no cliente, estamos prontos para fazer a conexão segura. Agora, quando você se conectar à sua máquina local na porta 2200, ele fará uma conexão com o IP remoto na porta 443, criará uma conexão SSL segura e se conectará à porta 22 na outra extremidade. Suas conexões SSH criptografadas agora são agrupadas em uma conexão SSL criptografada usando a porta 443.

ssh localhost -p 2200

Fontes: link1 Link2

    
por Maythux 20.02.2014 / 17:25
2

stunnel é bom para configurações permanentes, mas se você quiser uma solução mais ad hoc, poderá concatenar dois túneis.

No exemplo, você deseja que o host A acesse a porta 443 no host B, mas é bloqueado pelo firewall, então você tenta criar um túnel a partir do host C que pode acessar tanto a porta A 22 como a porta 443

ssh -R 443:B:443 root@A não funciona no Ubuntu ou em qualquer dist que desative a conta root ou o acesso root ssh.

ssh -R 443:B:443 other_user@A não funcionará, pois apenas o root pode configurar uma porta de escuta em A, mesmo que o usuário "other_user" tenha permissão de sudo.

ssh -R 1443:B:443 other_user@A Irá permitir que A acesse B: 443 usando 127.0.0.1:1443. Isso é bom, mas às vezes você não pode mudar a porta (talvez o número da porta é codificado em um aplicativo). Nesse caso, você pode adicionar outro túnel de A: 443 a A: 1443 usando ssh -L 443:127.0.0.1:1443 127.0.0.1 além do túnel A- > C- > B anterior.

    
por Pere Cortada 06.03.2015 / 17:50