SSH: 3 formas de tunelamento de portas que você deveria conhecer
Salvando aqui umas informações que eu achei muito relevante:
O SSH é um protocolo de rede criptográfico para operação de serviços de rede de forma segura sobre uma rede insegura. O melhor exemplo de aplicação conhecido é para login remoto de usuários a sistemas de computadores, mas ele pode fazer muito mais. Como veremos nesse artigo ele pode ser usado de formas algumas formas diferentes para trazer conteúdos de forma segura para você.
1 - Encaminhamento de portas locais
O encaminhamento de porta SSH ou o túnel SSH é o processo pelo qual uma conexão TCP/IP, que seria de outra forma insegura, é encapsulada dentro de um túnel SSH seguro. Este processo lhe dará acesso a outra rede, a aplicações em outras redes ou acesso a dispositivos. Esse processo também pode ser chamado de tunelamento de conexão TCP/IP.
Vamos ver o comando:
ssh -L [porta_local]:host_destino:[porta_destino] user@host
Vamos entender melhor como usar o encaminhamento de portas, vou sugerir alguns cenários:
Cenário 1:
Nossa central telefônica IssabeIPBX esta por trás de um firewall e a única maneira de acessa-la é por SSH. Tendo em vista que o firewall ira fazer apenas um NAT na porta 22 para a porta 22 da central usaremos o tunelamento de portas para ter acesso à porta 443 da central na porta 8085 de nossa maquina e acessa-la pelo nosso browser, como se ela estivesse localmente.
client:~$ ssh -L 8085:loclahost:8085 isa@firewall -p22
Uma vez logado via SSH acessaremos no navegador por https://localhost:8085 ;
O próximo passo é acessar na porta 8089 o equipamento Gransteam IPPBX de IP 10.10.120.245 que está em uma filial, mas esta acessível por uma VPN. Vamos cria uma nova conexão SSH:
client~$ ssh -L 8089:10.10.120.245:8089 isa@firewall -p22
Uma vez logado acessaremos dessa forma no navegador por https://localhost:8089 ;
Notem que para acessar ao Grandsteam precisamos que às duas redes conversem entre si e que não existam limitações de acessos a serviços e portas.
O interessante desse método é que ele pode ser usado algumas vezes, com servidores intermediários.
Cenário 2:
Primeiro faremos um SSH para o servidor intermediário se conectando com a porta 8085;
client:~$ ssh -L 8085:localhost:8085 [email protected] -p 22
e nesse estagio estamos conectados a uma porta sem uso algum, não vamos conectar em nada e a pagina não carregara, em seguida vamos realizar novo SSH;
ops:~$ ssh -L 8085:localhost:443 isa@firewall -p 22
e agora a porta 8085 do nosso server intermediário vai receber a porta 443, fazendo o resultado ser o mesmo que o primeiro cenário. Particularmente esse método eu uso quase que diariamente.
2 - Redirecionamento remoto da porta
Esse método é também chamado como túnel SSH reverso, permite conexões do servidor SSH, que são encaminhadas através do cliente SSH, e posteriormente encaminhadas para um servidor de destino. Supondo que seu servidor ou computador local não tenha um endereço IP roteável pela Internet, o encaminhamento remoto da porta ainda permitirá que você se conecte a ele usando a porta encaminhada e o endereço IP do servidor remoto.
Mas primeiro precisamos que o nosso server intermediário esteja preparado para ser o gateway SSH para isso precisamos alterar o arquivo
/etc/ssh/ sshd_config
e descomentar: #GatewayPorts no e mudar para GatewayPorts yes por fim reiniciar o serviço;
/bin/systemctl restart sshd
Agora Vamos conhecer o comando
ssh -R [porta_destino]:host_destino:[porta_local] user@host
Vamos entender melhor como isso funciona e explorara as possibilidades:
Cenário 3:
Agora estamos em uma situação diferente, estamos na central IssabelPBX, mas queremos dar acesso externo a outra pessoa e o firewall NÃO possui o NAT da porta 22, com o auxílio do servidor intermediário criaremos uma conexão que no servidor na porta 3000 na qual o cliente host ira se conectar para logar na central telefônica.
Primeiro o SSH no server intermediário a parti do IssabelPBX;
isa:~$ ssh -R 3000:localhost:22 [email protected] -p 22
Agora conectando na porta 3000 do server operador.io, estaremos conectando no IssabelPBX e precisamos usar o usuário da maquina remota:
client:~$ ssh [email protected] -p 3000
e estamos dentro do Issabel e se quisermos agora podemos inclusive usar o encaminhamento de local de portas.
Cenário 4:
Agora vamos fazer que o nosso server operador.io receba na porta 9443 a porta 443 da nossa central IssabelPBX para dá acesso externo a tela de nossa central para o client:
isa:~$ ssh -R 9443:localhost:443 [email protected] -p 22
Agora vamos fazer uma conexão do nosso client host com a porta local 9443 para a porta local 9443 do operador.io, que por sua vez recebeu a porta remota da central telefônica.
client:~$ ssh -L 9443:localhost:9443 [email protected] -p 22
e então temos este resultado;
Inclusive é possível reproduzir o mesmo resultado, do cenário 2 usando esse método.
3 - Redirecionamento dinâmico de portas
Esse redirecionamento não redireciona apenas uma porta como os anteriores, ele redireciona portas de forma dinâmica. A sua finalidade é transformar o client host em um servidor proxy de SOCKS. Se você esta em uma rede com restrição de navegação ou quer acessar um conteúdo com restrição de região e tem como acessar um servidor na mesma região essa é a opção:
O comando fica assim:
ssh -D [porta] user@host
Em vamos usar nosso server para isso:
client:~$ ssh -D 9090 [email protected]
Uma vez conectado, precisamos configurar o proxy do nosso navegador;
Agora é sair navegando na sua "VPN" SSH.
Conclusão
O SSH é super versátil e confiável, ele pode lha ajudar muito além de um simples acesso remoto a um servidor de forma segura. Espero que tenha curtido o artigo e ate mais!