Túneis SSH: Configuração e casos de uso práticos ⋆ ALexHost SRL

Teste suas habilidades em todos os nossos serviços de hospedagem e ganhe 15% de desconto!

Utilizar o código no ato da compra:

Skills
10.12.2024

Túneis SSH: Configuração e casos de uso práticos

O Secure Shell (SSH) é um protocolo amplamente utilizado que fornece comunicação segura e criptografada entre computadores. Além de seu uso tradicional para fazer login em sistemas remotos, o SSH também oferece recursos avançados de tunelamento, que permitem encaminhar com segurança o tráfego entre redes e sistemas. Essa técnica é conhecida como tunelamento SSH e pode ser de grande valia para vários casos de uso prático, como acessar serviços restritos ou contornar firewalls.

Neste artigo, exploraremos como os túneis SSH funcionam, como configurá-los e como você pode usá-los para diferentes cenários em aplicativos do mundo real.

O que é um túnel SSH?

Um túnel SSH é um método de transmissão de dados arbitrários por meio de uma conexão SSH criptografada entre dois sistemas. Essencialmente, ele permite que você encaminhe com segurança o tráfego de rede de uma máquina para outra criando um túnel pelo qual os dados trafegam.

Os túneis SSH podem ser usados de três maneiras principais:

  1. Encaminhamento de porta local
  2. Encaminhamento de porta remota
  3. Encaminhamento dinâmico de portas

Cada um desses métodos tem seus casos de uso específicos, e abordaremos cada um deles em detalhes a seguir.

1. Encaminhamento de porta local

O encaminhamento de porta local é a forma mais comumente usada de tunelamento SSH. Ele permite encaminhar o tráfego de uma porta local em seu computador para um serviço remoto por meio de uma conexão SSH.

Como funciona o encaminhamento de porta local

Quando você cria um túnel SSH local, o tráfego enviado para uma porta específica em seu computador local é encaminhado para o servidor SSH, que o envia para o destino desejado (como um banco de dados ou um servidor da Web).

Exemplo de caso de uso: Acesso a um banco de dados remoto

Imagine que você precisa acessar um banco de dados em um servidor remoto, mas a porta do banco de dados está bloqueada por um firewall. Em vez de abrir a porta publicamente, você pode usar o encaminhamento de porta local para acessar o banco de dados com segurança.

Comando para encaminhamento de porta local
ssh -L 5432:localhost:5432 user@remote-server

Neste exemplo:

  • -L 5432:localhost:5432: Especifica o encaminhamento de porta local. O primeiro 5432 é a porta em seu computador local, localhost:5432 refere-se ao banco de dados remoto.
  • user@remote-server: Conecta-se ao servidor SSH remoto.

Agora, você pode acessar o banco de dados remoto a partir do seu computador local, conectando-se a localhost:5432.

2. Encaminhamento de porta remota

O encaminhamento de porta remota permite que você encaminhe o tráfego de um servidor remoto para um computador local. Isso é útil quando se deseja expor um serviço em execução no computador local a um servidor remoto ou a seus usuários.

Como funciona o encaminhamento de porta remota

Com o encaminhamento de porta remota, todo tráfego que chegar a uma porta especificada no computador remoto será encaminhado para uma porta em seu computador local. Essa configuração é usada com frequência quando você precisa expor ao servidor remoto um serviço que só pode ser acessado em sua rede local.

Exemplo de caso de uso: exposição de um aplicativo da Web local a um servidor remoto

Imagine que você esteja desenvolvendo um aplicativo da Web localmente em seu computador e queira mostrá-lo a um colega em um servidor remoto. Em vez de implantar o aplicativo, você pode usar o encaminhamento de porta remota para permitir o acesso ao aplicativo local.

Comando para encaminhamento de porta remota
ssh -R 8080:localhost:3000 user@remote-server

Neste exemplo:

  • -R 8080:localhost:3000: Especifica o encaminhamento de porta remota. A porta 8080 do computador remoto será encaminhada para localhost:3000 em seu computador local, onde o aplicativo da Web está sendo executado.
  • user@remote-server: Conecta-se ao servidor SSH remoto.

Agora, qualquer pessoa no servidor remoto pode acessar o aplicativo Web via http://remote-server:8080.

3. Encaminhamento dinâmico de portas

O encaminhamento dinâmico de portas transforma o seu cliente SSH em um servidor proxy SOCKS, permitindo que você encaminhe o tráfego da sua máquina local por meio do túnel SSH para qualquer destino. Isso é especialmente útil quando você deseja encapsular todo o tráfego (como a navegação na Web) por meio de uma conexão segura.

Como funciona o encaminhamento dinâmico de portas

Com o encaminhamento dinâmico de portas, o cliente SSH escuta em uma porta local e encaminha todo o tráfego de saída para o servidor SSH. Essa configuração permite que você use o servidor SSH como um proxy para sua conexão com a Internet, ignorando firewalls e protegendo o tráfego.

Exemplo de caso de uso: contornar restrições de rede

Imagine que você está em uma rede Wi-Fi pública e determinados sites ou serviços estão bloqueados. Você pode usar o encaminhamento dinâmico de portas para contornar essas restrições e acessar a Internet com segurança por meio do seu servidor SSH.

Comando para encaminhamento dinâmico de porta
ssh -D 8080 usuário@servidor remoto

Neste exemplo:

  • -D 8080: Especifica o encaminhamento dinâmico de portas. Seu computador local atuará como um proxy SOCKS na porta 8080.
  • user@remote-server: Conecta-se ao servidor SSH remoto.

Quando o túnel estiver ativo, você poderá configurar o navegador ou qualquer aplicativo para usar localhost:8080 como proxy SOCKS, o que lhe permitirá rotear com segurança todo o tráfego por meio do servidor remoto.

Configuração de túneis SSH com arquivo de configuração

Se você usa túneis SSH com frequência, pode simplificar o processo criando um arquivo de configuração SSH. O arquivo de configuração permite definir atalhos para suas conexões SSH e configurações de encaminhamento de porta, facilitando a configuração de túneis sem a necessidade de digitar comandos longos todas as vezes.

Exemplo de arquivo de configuração SSH

Adicione a seguinte configuração a ~/.ssh/config:

Host remote-db HostName remote-server User user LocalForward 5432 localhost:5432

Agora, você pode configurar um encaminhamento de porta local para o banco de dados remoto com apenas:

ssh remote-db

Exemplos práticos de tunelamento SSH

1. Tráfego seguro na Web por meio de um proxy SOCKS

Se estiver trabalhando em um ambiente restrito e precisar acessar sites bloqueados, você poderá configurar o encaminhamento dinâmico de portas para rotear todo o tráfego por meio de um servidor SSH seguro.

ssh -D 9090 usuário@ssh-servidor

Em seguida, configure seu navegador para usar localhost:9090 como um proxy SOCKS.

2. Acesso a um serviço interno remoto

Suponha que você precise acessar um serviço interno que só está disponível em uma rede privada remota. Você pode usar o encaminhamento de porta local para se conectar com segurança a esse serviço a partir de seu computador local.

ssh -L 8080:internal-service:80 user@remote-server

Isso permitirá que você acesse o serviço interno em http://localhost:8080.

3. Expondo um servidor de desenvolvimento local

Se quiser compartilhar um servidor de desenvolvimento local com colegas em um servidor remoto, use o encaminhamento de porta remota:

ssh -R 4000:localhost:3000 user@remote-server

Os colegas no servidor remoto agora podem acessar seu aplicativo local em http://remote-server:4000.

Considerações sobre segurança

Embora os túneis SSH ofereçam canais de comunicação seguros e criptografados, é importante seguir as práticas recomendadas de segurança:

  • Use autenticação forte: Sempre use senhas fortes ou autenticação baseada em chave SSH para proteger seu servidor SSH.
  • Limite o acesso às portas encaminhadas: Restrinja o acesso às portas encaminhadas usando regras de firewall ou configurações de SSH para impedir o acesso não autorizado.
  • Monitore as conexões SSH: Monitore regularmente os registros de conexão SSH para detectar qualquer atividade incomum ou tentativas de acesso não autorizado.

Conclusão

O tunelamento SSH é uma ferramenta versátil que oferece maneiras seguras de encaminhar o tráfego e acessar serviços nas redes. Se você deseja acessar serviços restritos, contornar firewalls ou expor recursos internos com segurança, os túneis SSH oferecem uma solução eficiente e flexível. Ao dominar o encaminhamento de portas local, remoto e dinâmico, você pode aumentar a segurança da sua rede e ampliar sua capacidade de acessar e gerenciar sistemas remotos com eficiência.

Teste suas habilidades em todos os nossos serviços de hospedagem e ganhe 15% de desconto!

Utilizar o código no ato da compra:

Skills