Um guia visual para tunelamento SSH e encaminhamento de portas
- Resumo: este post de blog foi escrito para ajudar na compreensão de tunelamento SSH e encaminhamento de portas. Os tópicos incluem casos de uso, configuração, jump host SSH, encaminhamento de portas local/remoto/dinâmico e limitações.
Casos de uso
-
Segurança:
- Criptografar conexões inseguras, como FTP
- Acesso a painéis de administração web por meio de túnel SSH (autenticação por chave pública)
- Redução do número de portas expostas (apenas a porta 22 exposta)
-
Solução de problemas:
- Contornar firewall/filtros de conteúdo
- Escolher outro caminho
-
Conectividade:
- Acessar servidores atrás de NAT
- Acessar servidores internos pela internet usando um jump host
- Expor uma porta local à internet
Encaminhamento de portas
- Configuração/preparação:
- Usuários locais e remotos precisam de permissão para abrir portas
- As portas 0-1024 exigem privilégios de root
- Configurar adequadamente o cliente e o firewall da rede
- É preciso habilitar o encaminhamento de portas no servidor SSH:
AllowTcpForwarding yes - Para encaminhar portas em outras interfaces, é preciso habilitar
GatewayPorts yes
Jump host SSH / túnel SSH
-
Conexão via jump host:
ssh -J user@REMOTE-MACHINE:22 -p 22 user@10.99.99.1 -
Uso de vários jump hosts:
ssh -J user@REMOTE-MACHINE:22,user@ANOTHER-REMOTE-MACHINE:22 -p 22 user@10.99.99.1
Encaminhamento de porta local
-
Exemplo 1:
ssh -L 10.10.10.1:8001:localhost:8000 user@REMOTE-MACHINE -
Exemplo 2:
ssh -L 8001:10.99.99.1:8000 user@REMOTE-MACHINE
Encaminhamento de porta remota
-
Exemplos 1+2:
ssh -R 8000:localhost:8001 user@REMOTE-MACHINE ssh -R 8000:10.10.10.2:8001 user@REMOTE-MACHINE -
Exemplo 3:
ssh -R 10.99.99.2:8000:10.10.10.2:8001 user@REMOTE-MACHINE
Encaminhamento de porta dinâmico
- Uso do protocolo SOCKS:
ssh -D 10.10.10.1:5555 user@REMOTE-MACHINE
Tunelamento SSH TUN/TAP
- Criar um túnel TCP bidirecional:
ssh -w local_tun[:remote_tun]
Executar SSH em segundo plano
-
Execução em segundo plano:
ssh -fN -L 8001:127.0.0.1:8000 user@REMOTE-MACHINE -
Parar SSH em segundo plano:
ps -ef | grep ssh kill <PID>
Manter a conexão SSH ativa
- Tratamento de timeout:
ClientAliveInterval 15ClientAliveCountMax 3
Limitações
-
UDP:
- SSH não oferece suporte a UDP, pois requer entrega confiável
-
TCP-over-TCP:
- O throughput diminui e a latência aumenta devido ao maior overhead
-
Não substitui uma VPN:
- O tunelamento SSH pode substituir uma VPN, mas em termos de desempenho a VPN é mais adequada
-
Riscos potenciais de segurança:
- É recomendável desativar funcionalidades desnecessárias
Resumo do GN⁺
- Este texto explica vários casos de uso e formas de configuração do tunelamento SSH e do encaminhamento de portas
- O tunelamento SSH é útil para fornecer conexões seguras e contornar firewalls
- No entanto, ele não substitui uma VPN e tem limitações, como perda de desempenho
- Outros projetos relacionados incluem soluções de VPN como o OpenVPN
1 comentários
Comentários do Hacker News
Em 2024, em vez de escrever comandos SSH manualmente, é melhor usar o arquivo
~/.ssh/configpara configurarLocalForward,RemoteForwardeProxyJumptarget-serverpor meio de um apelidoLocalForwardeRemoteForwardO tunelamento SSH é essencial em ambientes corporativos complexos
ssh -D 8888 someservere configurando o proxy SOCKS do navegador paralocalhost:8888, o tráfego do navegador passa a ser roteado por esse servidorQuando se quer acesso SSH a um servidor Linux ou dispositivo IoT atrás de firewall e sem IP fixo, é possível usar um serviço de tunelamento
A experiência mais complexa de gambiarra com tunelamento SSH aconteceu em uma conexão entre data centers
rsync, túnel SSH, chaves e roteamento, foi possível mover os dados com sucessoGostariam de ver mais visualizações de rede
TCP-over-TCP pode aumentar a sobrecarga e a latência, prejudicando o desempenho
Túneis SSH são uma ótima ferramenta, mas hoje em dia usam mais ferramentas com TLS e recursos de proxy reverso embutidos
sshuttleé uma ferramenta melhor para tunelamentosshuttle -r user@host 10.0.0.0/8Começaram a usar túneis SSH há 15 anos para contornar o firewall da rede da universidade
Há curiosidade sobre a existência de um recurso de redirecionamento no próprio SSH