Executando verificação de segurança...
8

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:

Texto

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 ;

Texto

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 ;

Texto

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:

Texto

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:

Texto

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;

Texto

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;

Texto

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!