A Cloudflare trabalha para proteger de invasores que gostam de derrubar os sistemas da Internet. E um dos serviços é o sistema de Proxys que faz uma rota do domínio para o servidor sem disponibilizar o IP real do serviço! Como referido em outra publicação que ensinei a configurar a Firewall para só permitir o acesso pela Cloudflare se uma pessoa com más intenções descobrir IP real ela pode tentar aceder o servidor desprotegido!

Mas além da Firewall a Cloudflare tem um sistema de “Proxy Reverso” chamado Cloudflare Tunnel que um sistema de rotas diretamente pela Cloudflare e que não necessita nem uma porta aberta no firewall ou roteador (sim, esse sistema é valido para servidor de casa 😅)!

Por onde começar?

Para começar temos de entrar na nossa conta Cloudflare e na Dashboard clicar em “Zero Trust”

Dashboard da Cloudflare

Caso nunca tenha entrado na Zero Trust ela vai pedir algumas informações e uma delas é o Cartão de Crédito ou o PayPal⁣, mas não vai cobrar nada (a não ser queira ter mais funções lá)!

Agora temos de ir em Access > Tunnels e clicar em Create a Tunnel

Access Tunnel

Após clicar irá aparecer uma tela a pedir um nome para o seu tunnel (para saber o que vamos trabalhar).

Agora com um nome definido, ele irá apresentar uma como instalar o “cloudflared” (o aplicativo que gerência a conexão do tunnel) no servidor e como setar um token dele para se conectar ao tunnel.

Por fim depois do túnel configurado vamos criar uma rota no proxy reverso!

E por fim vamos salvar! Agora o “exemplo.serginho.dev” foi criado no DNS conectado ao http://localhost:3000 que está na máquina que o cloudflared conectado está instalado!

Se quiser adicionar mais rotas clique em Configure depois Public Hostname que terá um botão para adicionar, mas também para configurar mais coisas! Como se por acaso houver outro domínio não configurado.

Agora vem a parte complicada… 😒

As rotas que não são serviços, não são Websites serão um pouco diferentes e se pensava abrir um servidor de Minecraft (por exemplo) (depois posso fazer uma postagem especial para isso) protegido pela Cloudflare gratuito será um pouco diferente.

Para isso funcionar é preciso instalar o cloudflared nas máquinas que irão conectar ao serviço.

Após instalar na máquina irá conectar irá abrir o terminal ou cmd do seu sistema e irá escrever para conectar ao serviço:

## Linux/Mac
$ cloudflared access tcp --hostname testmc.serginho.dev --url localhost:25565

## Windows
C:\Cloudflared\bin\cloudflared.exe access tcp --hostname testmc.serginho.dev --url localhost:25565

Contexto:

– “cloudflared”/”cloudflared.exe” é o programa que faz o tunnel

– “access” significa que queremos aceder alguma coisa

– “tcp” ou “rdp”, “ssh”, “smb” é tipo de serviço que queremos conectar

– “–hostname <domain>” é o domínio que queremos aceder (no meu caso de exemplo é “testmc.serginho.dev”)

– “–url localhost:<porta>” é onde vamos abrir uma porta de acesso na nossa máquina (de maneira simples: o aplicativo que está setado no tal domínio vai estar na nossa localhost) (em caso que seja um ssh não precisa de usar)

Sim para caso não tenha percebido eu fiz um exemplo num servidor de Minecraft

Agora com o comando em execução vamos tentar abrir o serviço que abrimos onde nós definimos para abri.

E pronto agora temos acesso ao servidor na localhost pela cloudflared

Mas Sérgio, o meu serviço é SSH e não quero fazer um comando gigante só para aceder!

Sem problema basta escrever:

cloudflared access ssh-config --hostname ssh.exemplo.com

Que irá retornar a configuração para colocar no config do ssh:

Add to your /home/user/.ssh/config:

Host ssh.exemplo.com
  ProxyCommand /usr/local/bin/cloudflared access ssh --hostname %h

Após configurar é só usar:

ssh user@ssh.exemplo.com
E pronto, agora tem o seu bom e velho SSH de mão! 😂

Talvez agora queira fechar a porta do SSH no firewall, já que a cloudflared faz o serviço de conexão

Se gosta de usar o SFTP recomendo você abrir uma porta com o modo TCP no seu em vez do usar o SSH (o aplicativo de serviço pode não querer funcionar)

Dica Bónus: como adicionar autenticação extra para a pessoa que tente entrar no serviço

Quando falamos de Túneis Cloudflare pode ser que queira que só terminadas pessoas conseguem só a aceder alguma rota ou domínio.

Tela de login de exemplo

Isso até é útil quando quer deixar uma área não exposta para o público numa maneira fácil.

Lembrando que o plano free do Zero Trust só permite 50 pessoas diferentes registas

Se quiser ativar basta seguir:

  • No Zero Trust vamos em: Access > Applications e clicar em Add an Application
  • Selecionar: Self-hosted
  • Agora é hora de configurar
  1. Application name: é o nome da que vamos dar essa autenticação
  2. Session Duration: é a duração que o navegador fica autenticado sem pedir login
  3. Application domain: é a rota e o domínio que será autenticado, lembrando se você escrever algo no path tudo que vir a seguir a ele será bloqueado
  4. Application Appearance: se quiser mudar a aparecia da autenticação (nada de importante
  5. Identity providers: Configuração dos autenticadores da rota
  • Após configurar, vamos clicar em Next
  • Agora temos de adicionar uma política de autenticação que basicamente é as regras de quem pode entrar no serviço
exemplo
  • Agora, temos mais algumas configurações (não vou falar muito delas)

Mas vou falar numa interessante que é a Browser rendering. Que basicamente se você usa tem uma aplicação SSH ou VNC, a Cloudflare vai renderizar no navegador o terminal ou a interface do servidor.

SSH

Agora só confirmar e pronto a sua rota aplicação está protegida.

Conclusão

As vezes pode ser algumas coisas mais chatas para configurar, mas sempre é importante estarmos de olho nas configurações.

Sérgio Glórias

Uma pessoa que gosta de brincar com códigos e xadrez