Mostrando postagens com marcador remoto. Mostrar todas as postagens
Mostrando postagens com marcador remoto. Mostrar todas as postagens

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és da própria Cloudflare pois queria um TLD ".com" e a 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!





sábado, 17 de setembro de 2022

Dica: Tailscale - Serviço de VPN remoto

Pessoal,


Como comentei em posts anteriores (aqui e aqui), estou testando alguns serviços para ter acesso remoto aos meus servidores em casa.

No post anterior eu falei do ShellHub, um serviço bem interessante para acessar o shell remotamente via SSH.

Descobri mais dois serviços bem interessantes: o Tailscale e o ZeroTier.

Neste post vou falar do Tailscale e em outro do ZeroTier. Num primeiro momento, parece que o Tailscale é baseado no Wireguard e o ZeroTier no OpenVPN. Isso proporciona mais rapidez ao Tailscale porém o OpenVPN é bem mais rodado que o Wireguard, assim o ZeroTier sai na frente em questão de segurança.

É importante perceber que tanto esse serviço quanto o ZeroTier ou o ShellHub não darão a você acesso completo a sua rede, mas sim acesso a uma máquina da rede. O OpenVPN dá o acesso à rede por completo, ou seja, sua máquina remota parece que está dentro da rede doméstica. Pode parecer a mesma coisa, mas não é.

Por exemplo, o meu NextCloud está instalado na mesma VM do OMV (192.168.1.3). Assim, se eu instalar esses serviços nessa VM, só preciso digirar a porta no navegador e pronto, acesso. Mas se o serviço estiver instalado ou ativo em outra VM, não terei acesso ao NextCloud. A mesma coisa se eu quiser acessar o meu Proxmox (192.168.1.2), também não vou conseguir. Já o OpenVPN, Wireguard ou um VPN tradicional dará o acesso à rede toda. É diferente, entenderam?

Vamos lá. Após entrar no site do Tailscale (tailscale.com), faça seu cadastro e siga em frente, escolhendo qual máquina você deseja conectar. No meu caso, como vou instalar na VM do OMV, vou usar a recomendação do serviço e instalar o pelo curl.

    $ curl -fsSL https://tailscale.com/install.sh | sh

Prontamente ocorre a instalação em menos de 30 segundos. Para concluir e iniciar o serviço, execute o comando abaixo:

    $ tailscale up

O serviço cria um enderço para você acessar e autenticar:


Copie esse endereço, cole no navegador e siga em frente. Prontamente o serviço é adicionado.


Pronto! Agora copie o IP da máquina que deseje acessar, coloque no navegador fora da rede e pronto!

Em breve vou falar do ZeroTier.

Por enquanto é isso!

quarta-feira, 7 de setembro de 2022

Dica: ShellHub - SSH para Acesso Remoto

Pessoal,


Como disse aqui, a Claro avacalhou meu NAS ao me entregar uma merda de um modem sem possibilidade de colocar em bridge.

Assim, preciso me virar para acessar os meus arquivos remotamente.

A primeira coisa é conseguir acessar a máquina do NAS remotamente.

Para isso, achei um serviço bem interessante: o ShellHub.

Esse serviço é completo e gratuito para até 3 dispositivos. Para mim, acessando o NAS é suficiente porque, primeiro, é SSH e, segundo, só preciso disso pro NAS mesmo.

A primeira coisa é criar uma conta gratuita. Use uma senha forte!

Existem duas possibilidades de instalação. A primeira é criando toda a estrutura você mesmo. Se por um lado tudo estará no seu computador, por outro lado você terá que configurar, administrar e atualizar. Veja como aqui. Seria a minha opção se não fosse a presepada da Claro.

A outra possibilidade, fácil, é usando o ShellHub Cloud. Esse serviço deles cria uma ponte remota entre o seu servidor e o seu terminal.

Assim, crie a conta gratuitamente. Assim que você entrar, aparecerá uma tela de boas vindas e uma tela mostrando uma linha de comando para você instalar no computador que você deseja acessar remotamente (óbvio que neste momento da instalação você deve ter acesso ao seu servidor).


Só copie esse curl e siga as instruções (você precisa do Docker instalado).



Após instalado, volte ao site do ShellHub e vá em Devices. Lá deverá ter um aviso de um device aguardando autorização (Pending). Clique em Action e autorize.


Pronto. Agora volte em Devices e você verá a sua máquina conectada. Eu já tinha uma (Debian 11) e fiz essa para o blog no Ubuntu:



Pronto. Existem duas formas de conexão. Uma é clicando Connect e essa tela abaixo se abrirá. Aqui você vai colocar os dados do seu usuário da máquina remota (como você se conecta, seu username ou root e senha do usuário). Repare que NÃO são os dados da sua conta do ShellHub e sim os dados do seu servidor remoto!



Pronto, você está conectado!


Repare que eu estou logado no Ubuntu!

Outro modo de acessar é pelo terminal. Para isso abra o terminal, copie o nome do SSHID e coloque no terminal a seguinte fórmula:

    ssh <username>@<seu SSHJID>


Ficará assim:



Bom, já ajuda bastante, né?

Se quiserem um tutorial por vídeo, recomento esse aqui do YouTube.

Uma pequena atualização:

O ShellHub atribui uns nomes bem complicados nos hostnames (ele coloca algo como 00-ac-29-4b-01). Assim, seu endereço de para acesso terá a seguinte construção:

    <seu login>.<hostname>@cloud.shellhub.io

No meu caso, seria algo como:

    jaymebc.00-ac-29-4b-01@cloud.shellhub.io

Nada prático para guardar.

É possível melhorar esse nome. Em Devices, clique nos 3 pontos da conexão que deseje renomear e depois em Details:


Na janela que se abrirá, clique em Rename, escolha o nome e pronto.

Por enquanto é isso.