domingo, 5 de março de 2023

Cloudflare Tunnel: melhor que VPN! O serviço que eu procurava para acesso remoto!

Pessoal,


Descobri um serviço excelente para acessar remotamente os computadores de casa com segurança: Cloudflare Tunnel!

Imagine que está fora de casa, seja no trabalho ou em uma viagem, e deseja acessar um computador ou seu NAS em casa. Existem algumas possibilidades. A mais tradicional, por segurança, é através de uma VPN (não essas VPNs pagas, mas um serviço com o OpenVPN ou WireGuard.). Outra possibilidade é escancarar seu computador expondo ele na internet através de uma autorização no seu firewall.

Aqui entra a esse túnel da Cloudflare: você instala um cliente dentro da sua rede (seja em Windows, Linux, Mac ou um container Docker) para criar uma conexão segura com a Cloudflare. Após essa etapa, criaremos um ou vários nomes para acessar os serviços internos (através de FQDNs - Fully Qualified Domain Names ou Nomes de Domínio Totalmente Qualificados, DNS Names ou registros CNAME).

Assim, por exemplo, pretendo usar para acessar meu Synology NAS sem precisar expô-lo através do Quickconnect ou abrindo o firewall para tanto. Posso simplicar e criar um 'synology.meudominio.com.br' para o NAS e passar para a Cloudflare qual o endereço IP privado e a porta. O Synology usa uma interface HTTP através da porta 5000, mas quando acessamos através desse túnel, essa interface se torna uma conexão HTTPS pela porta 443.

Só vejo vantagens: é um modo conveniente de acessar seu conteúdo privado, tem o redirecionamento de uma porta HTTP 5000 para a porta HTTPS e, uma vez que estamos conectados a um FQDN gerenciado pela Cloudflare, também ocultramos o nosso endereço IP WAN!!! Sério, é muita vantagem!!!

Talvez o grande  "inconveniente" seja a necessidade de ter um nome de domínio registrado. Pelo que procurei, esses domínios gratuitos como No-Ip e DuckDNS não servem para isso. Assim, eu optei por registrar um domínio para mim.

Sugiro que vocês pesquisem bastante pois os preços variam muito, principalmente a depender do TLD (Top Level Domain ou sufixo de domínio, o ".com" ou ".com.br"). Os TLDs da modinha, como .info, .app, .tech e outros podem custar algumas centenas de dólares a mais que os .com ou .com.br. Mas essa é uma decisão individual. Eu registrei o meu atravé da própria Cloudflare pois queria um TLD ".com" e o Cloudflare era mais barato que encontrei.

Indo em frente, é necessário um registro gratuito no Cloudflare. Após o registro e o login, você verá essa tela aqui:


A marcação "1" mostra o seu domínio ativo já cadastrado no Cloudflare. Caso não tenha um, é necessário adicionar o domínio clicando na marcação "2". Essa parte foge do escopo deste texto, então clique aqui para aprender a transferir seu domínio para a Cloudflare segundo as exigências dela. Asseguro que é bem simples. Basicamente você terá que trocar os nameservers de onde está hospedado o seu domínio pelos nameservers da Cloudflare.

Passada esta etapa, vamos criar o túnel! Clique no seu site (lá na marcação "1"). Deve aparecer uma tela com opções de serviços da Cloudflare. Desça e escolha a opção "Free". Deve ser pedido o seu cartão de crédito, mas nada será cobrado (se quiser ficar tranquilo, coloque um cartão virtual com apenas 5 dólares e que dure apenas um ou dois meses...).



Depois, tendo seu domínio devidamente registrado na Cloudflare, eles irão oferecer alguns serviços gratuitos para aumentar a segurança e velocidade de acesso (reescreve o endereço usando HTTPS, redireciona as requisições de HTTP para HTTPS e utiliza a compressão Brotli para acelerar o tempo de carregamento das páginas). Sugiro ativar tudo.


Agora os servidores da Cloudflare vão processar essas mudanças do registro do domínio e isso pode levar algum tempo, às vezes algumas horas. Você será notificado quando tudo estiver pronto (pelo email de cadastro na Cloudflare) e no painel da Cloudflare estará esta mensagem:


Clique nesse site e vamos criar o túnel:


Clique em Traffic -> Cloudflare Tunnel -> Launch Zero Trust Dashboard. Na tela que surgirá, a do Cloudflare Zero Trust, clique em Access -> Tunnels:


Escolha o nome do seu túnel e clique em "Save tunnel":


E agora escolha como irá instalar o conector na sua rede interna.


Como eu tenho um Synology NAS e ele fica ligado constantemente e hospeda uma página onde eu faço meu dashboard dos diversos serviços que rodam nele e em outros computadores, optei por instalar um container Docker nele para fazer isso.

Agora vá para o Docker do Synology e faça o seguinte:


Em Registro (1), digite Cloudflare para pesquisar (2) por esta imagem. Escolha a imagem cloudflare/cloudflared (3) e clique em baixar (4). Quando aparecer a janela para escolhar a marca, escolha "latest" (5) e clique em Selecionar (6) para iniciar o download da imagem. Feito isso, vamos preparar a imagem para executar:


Em Imagem (1), escolha a imagem que foi baixada (2) e vamos abrir para configurar. A primeira opção é para escolher a rede do container:


Agora vamos escolher o nome do container, ativar a reinicialização automática e escolher as configurações avançadas:



Após clicar em "Configurações avançadas", vamos precisar usar o comando para criar o container docker que o Cloudflare sugeriu mas será necessário editar algumas coisas. Copie para um editor de texto o comando do Docker e faça as mudanças. Tudo que está no retângulo vermelho será retirado e o que está em negrito continuará:


Após a edição, ficará assim:


Esse texto será colado nas Configurações avançadas, na aba "comando de execução":


Pronto! Clique em Salvar e depois em Avançar. Podemos executar agora com segurança. Quando voltarmos à página da Cloudflare, vamos ver isso aqui:


Pronto! A conexão foi bem sucedida! Clique em "Next"para criar os FQDN (os DNS names para acessarmos os serviços na nossa rede privada).


E é essa facilidade toda aí: como subdominínio, escolhi "nas". O domínio é o que você tem registrado (o seu <qualquercoisa.com.br>). Depois você coloca as configurações de como está acessando o serviço dentro da sua rede. O Synology é desse jeito: http://192.168.1.2:5000. Vejam que o túnel foi criado:


E é isso!

Só tem uma questão importantíssima! Quem souber esses FQDNs entrará na rede rapidamente! Assim, precisamos configurar um bloqueio. O Cloudflare Tunnel tem basicamente todos os serviços de SSO (Single Sign On) como veremos a frente. Inicialmente volte para a tela de iníico do Cloudflare Zero Trust e clique em "Settings" -> Authentication":


Perceba que apenas um modo de autenticação está ativado. Clique em "Add New" para escolher outros métodos:


E veja todos os métodos possíveis! Só fica inseguro quem quiser!


Esse método de One-time PIN já ajuda bastante. Ao tentar conectar no endereço, aparecerá essa tela:


Quem desejar entrar deverá ter um email cadastrado para acessar o túnel (sim, se você colocar outro email que não o cadastrado você não receberá o código de segurança). Digitando o email correto, o usuário receberá um email assim:


E esse código deverá ser digitado na página de acesso:


Pronto! Agora você consegue entrar.

Esse email é definido no menu da Cloudflare Zero Trust acessando: Access -> Applications e aí vcoê clica em "Add an aplication" -> Self-hosted e escolhe um nome e coloca o domínio. Interessante aqui é colocar um asterisco (sim, um "*" - coringa) no subdomínio para que essa regra de segurança valha para TODOS os serviços hospedados nesse domínio! Na página seguinte você escolhe as regras de segurança. Eu colocquei assim:


Dese modo, as mensagens são enviadas para o meu email pessoal, há bloqueio para acessos originários de alguns países conhecidos por ataques de hackers e, por padrão, preenchendo esses requisitos, o acesso é autorizado.

Há muita, muita coisa para fazer aqui ainda. Estou só aprendendo a usar essa ferramenta!

É isso, pessoal!





Nenhum comentário:

Postar um comentário