O Que É um Túnel SSH e Como Utilizá-lo

Introdução ao tunelamento SSH
Um túnel SSH é uma técnica que utiliza o protocolo SSH para criar uma ligação encriptada entre dois computadores, mais frequentemente entre o seu computador e um servidor VPS, através do qual o tráfego de rede pode ser encaminhado. O tunelamento SSH, também conhecido como encaminhamento de portas SSH, permite aceder a serviços que de outra forma estariam indisponíveis a partir da internet ou proteger dados que viajam por uma rede insegura. Esta técnica é uma ferramenta fundamental para administradores de sistemas, programadores e qualquer pessoa que trabalhe com servidores remotos.
O princípio básico de um túnel SSH é simples. Em vez de se ligar diretamente a um serviço que pode estar exposto a riscos de segurança, cria um canal SSH encriptado através do qual encaminha o tráfego. Todos os dados que passam pelo túnel são encriptados com encriptação AES, o que significa que, mesmo que alguém intercete o tráfego de rede, não consegue ler o conteúdo da comunicação. Os túneis SSH são especialmente úteis ao trabalhar com bases de dados, painéis administrativos ou serviços internos que não devem estar publicamente acessíveis.
Como funciona o protocolo SSH
Autenticação
O SSH utiliza encriptação assimétrica para a autenticação do cliente e do servidor. Quando se liga pela primeira vez a um servidor, o cliente SSH verifica a impressão digital da chave do servidor e pergunta se confia nela. Após a confirmação, o cliente guarda a chave no ficheiro known_hosts e verifica automaticamente a identidade do servidor em cada ligação subsequente. Isto previne ataques man-in-the-middle, em que um atacante poderia fazer-se passar pelo seu servidor.
Para a autenticação do utilizador, o SSH suporta palavras-passe e chaves SSH. As chaves SSH são o método recomendado, porque são mais seguras e práticas. Um par de chaves é composto por uma chave privada que mantém no seu computador e uma chave pública que coloca no servidor. A chave privada nunca sai do seu computador e pode ser adicionalmente protegida com uma frase-passe. Ao ligar-se, o servidor utiliza a sua chave pública para verificar que possui a chave privada correspondente, sem qualquer troca de dados secretos.
Canal encriptado
Após a autenticação bem-sucedida, o SSH estabelece um canal encriptado utilizando encriptação simétrica, normalmente AES-256. Todos os dados que passam por este canal, incluindo comandos, ficheiros e tráfego encaminhado, estão protegidos contra interceções. O SSH também utiliza HMAC para a verificação da integridade dos dados, o que significa que qualquer modificação de dados em trânsito é detetada. A compressão de dados é opcional, mas pode melhorar o desempenho em ligações mais lentas.
Túnel SSH local (Local Port Forwarding)
Conceito
Um túnel SSH local encaminha o tráfego de uma porta do seu computador local, através da ligação SSH, para uma porta num servidor remoto ou numa rede. Este é o tipo de túnel mais utilizado e serve para aceder a serviços disponíveis apenas no servidor remoto ou na sua rede local. O comando para criar um túnel local é ssh -L porta_local:destino:porta_destino utilizador@servidor.
Por exemplo, se tiver uma base de dados MySQL num servidor a escutar apenas em localhost na porta 3306, pode criar um túnel com ssh -L 3307:localhost:3306 utilizador@servidor. Depois disso, no seu computador pode ligar-se a localhost:3307 e o tráfego será encaminhado para o MySQL no servidor. Utilize uma porta local diferente se já tiver o MySQL a correr localmente. O túnel permanece ativo enquanto a sessão SSH estiver aberta.
Exemplos práticos
Aceder a um painel de administração que escuta apenas no localhost do servidor é um cenário comum. Se tiver uma aplicação web na porta 8080 disponível apenas localmente no servidor, o comando ssh -L 8080:localhost:8080 utilizador@servidor permite-lhe abrir http://localhost:8080 no navegador do seu computador. Isto é mais seguro do que abrir a porta na firewall, porque o acesso fica limitado às pessoas com acesso SSH ao servidor.
Aceder a um serviço numa rede privada por detrás do servidor é outro cenário importante. Se o servidor tiver acesso a uma rede interna onde se encontra uma base de dados em 10.0.0.5:5432, pode criar um túnel com ssh -L 5432:10.0.0.5:5432 utilizador@servidor. Agora, a partir do seu computador, pode ligar-se a localhost:5432 e aceder à base de dados PostgreSQL na rede privada. Esta é uma alternativa segura à VPN para aceder a serviços individuais.
Túnel SSH remoto (Remote Port Forwarding)
Conceito
Um túnel remoto funciona ao contrário de um local. Encaminha o tráfego de uma porta do servidor remoto para uma porta do seu computador local ou da sua rede. O comando é ssh -R porta_remota:destino:porta_destino utilizador@servidor. Isto é útil quando quer tornar um serviço do seu computador local disponível no servidor ou para o exterior. Por exemplo, se estiver a desenvolver uma aplicação web localmente na porta 3000 e quiser mostrá-la a um cliente sem fazer deploy.
O comando ssh -R 8080:localhost:3000 utilizador@servidor torna a sua aplicação local disponível em servidor:8080. Para que isto funcione para acesso externo, a opção GatewayPorts tem de estar ativada no sshd_config do servidor. Os túneis remotos são úteis para desenvolvimento, testes e situações em que o seu computador não tem um endereço IP público, mas precisa de disponibilizar acesso a um serviço nele.
Considerações de segurança
Os túneis remotos exigem atenção, porque abrem uma porta no servidor que pode estar acessível a partir do exterior. Por predefinição, o SSH associa a porta remota apenas ao localhost do servidor, o que significa que só está acessível a partir do próprio servidor. Se ativar o GatewayPorts, a porta passa a estar acessível a partir de qualquer endereço e deve utilizar regras de firewall para restringir o acesso. Nunca deixe um túnel remoto ativo mais tempo do que o necessário e utilize endereços IP específicos em vez de uma associação com wildcard.
Túnel SSH dinâmico (proxy SOCKS)
Conceito
Um túnel dinâmico cria um servidor proxy SOCKS no seu computador local que encaminha todo o tráfego através da ligação SSH. Ao contrário de um túnel local que encaminha o tráfego de uma porta específica, um túnel dinâmico pode encaminhar o tráfego para qualquer destino. O comando é ssh -D porta_local utilizador@servidor. Por exemplo, ssh -D 1080 utilizador@servidor cria um proxy SOCKS na porta 1080.
Depois de criar o túnel dinâmico, configure o seu navegador ou sistema operativo para utilizar o proxy SOCKS em localhost:1080. Todo o tráfego de internet passa então pelo túnel SSH encriptado até ao servidor e sai para a internet a partir do endereço IP do servidor. Isto é útil para proteger o tráfego em redes WiFi públicas, aceder a conteúdos com restrições geográficas ou anonimizar a navegação. O Firefox tem suporte integrado para proxy SOCKS nas definições de rede.
Quando utilizar um túnel dinâmico
As redes WiFi públicas em cafés, hotéis e aeroportos são conhecidas pelos seus riscos de segurança. Um túnel SSH dinâmico encripta todo o seu tráfego de internet, evitando a interceção na rede insegura. Ao contrário dos serviços VPN comerciais, em que tem de confiar no fornecedor, um túnel SSH utiliza o seu próprio servidor, dando-lhe controlo total sobre a infraestrutura. Isto é especialmente importante ao trabalhar com dados empresariais sensíveis fora do escritório.
Opções avançadas e configuração
Túneis em segundo plano
A opção -f envia o SSH para segundo plano após a autenticação, e -N indica ao SSH para não executar comandos remotos. A combinação ssh -fN -L 3306:localhost:3306 utilizador@servidor cria um túnel em segundo plano sem abrir uma sessão interativa. Para iniciar túneis automaticamente após o reinício do sistema, utilize a ferramenta autossh, que restabelece automaticamente o túnel caso a ligação seja interrompida. Instala-se com apt install autossh ou yum install autossh.
O ficheiro de configuração SSH em ~/.ssh/config permite definir túneis que são criados automaticamente ao ligar-se a um servidor. Por exemplo, a linha LocalForward 3306 localhost:3306 na secção Host do seu servidor estabelece automaticamente o túnel sempre que se liga. Isto elimina a necessidade de memorizar um comando longo e reduz a possibilidade de erros. Podem ser definidos vários túneis para o mesmo host.
Multiplexagem de ligações
A opção ControlMaster do SSH permite partilhar uma única ligação SSH para várias sessões e túneis. A primeira ligação é estabelecida normalmente e todas as subsequentes utilizam a mesma ligação, acelerando a ligação e reduzindo a carga no servidor. A configuração no ficheiro de configuração SSH inclui ControlMaster auto, ControlPath ~/.ssh/sockets/%r@%h-%p e ControlPersist 600 para manter a ligação durante 10 minutos após o encerramento da última sessão.
Recomendações de segurança para túneis SSH
Restrição de acesso
Em servidores de produção, restrinja quais os utilizadores que podem criar túneis através da opção AllowTcpForwarding no sshd_config. Pode permitir apenas o encaminhamento local com AllowTcpForwarding local ou desativar completamente os túneis com AllowTcpForwarding no para os utilizadores que não precisam deles. A opção PermitOpen restringe os destinos para os quais um túnel pode encaminhar tráfego; por exemplo, PermitOpen localhost:3306 permite apenas o túnel para o MySQL.
Utilize o fail2ban para proteger o serviço SSH contra ataques de força bruta e restrinja o acesso SSH apenas a endereços IP conhecidos através de uma firewall. Altere a porta SSH predefinida de 22 para uma porta não padrão, o que reduz as análises automáticas. Nos servidores da BeoHosting, o acesso SSH está protegido por predefinição com definições de segurança modernas e a nossa equipa pode ajudar com a configuração de túneis para as necessidades específicas da sua infraestrutura.
Conclusão
Os túneis SSH são uma ferramenta poderosa para uma comunicação segura, que permite aceder a serviços remotos, proteger o tráfego em redes inseguras e criar ligações seguras entre sistemas. Os túneis locais para aceder a serviços remotos, os túneis remotos para expor serviços locais e os túneis dinâmicos para proxy são os três tipos básicos que cobrem a maioria dos cenários. Compreender o tunelamento SSH é uma competência essencial para qualquer pessoa que trabalhe com servidores. Saiba mais sobre servidores virtuais e infraestrutura de rede.
BeoHosting Team
10+ anos de experiência — Especialistas em alojamento web e infraestrutura
- Web Hosting
- WordPress Hosting
- VPS
- Dedicated Serveri
- Domeni
- SSL
- cPanel
- LiteSpeed
- Linux administracija
- DNS
Última atualização: