by Alicino Moura
Updated on Jan 14th, 2025
Considerações Iniciais
Este passo-a-passo se refere a conexão a um servidor remoto através do protocolo SSH utilizando o recurso da Cloudflare Zero Trust. Os passos são um modelo adaptado da documentação disponível no link abaixo.
Este é um dos modelos disponíveis dentro da solução de Zero Trust que pode ser utilizado. A Cloudflare recomenda outros 3 modelos que podem ser verificados aqui.
Vale lembrar que a Cloudflare não recomenda o acesso via SSH através de usuário/senha, portanto iremos abordar aqui apenas o modelo com par de chaves pública/privada como forma de imprimir segurança no processo.
Documentação oficial: https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/use-cases/ssh/ssh-warp-to-tunnel/
Abra o terminal da máquina cliente Linux e faça a criação do par de chaves SSH
Exemplo:
ssh-keygen -t rsa -f ~/.ssh/chave-ssh-ztna -C <usuário_servidor_a_ser conectado>
Não necessita entrar nenhum dado adicional se não desejar, como passphrase e etc.
Verifique a criação das chaves com o comando:
ls -lrt ~/.ssh/
Em seguida veja o conteúdo da chave pública criada (arquivo com extensão .pub)
cat ~/.ssh/chave-ssh-ztna.pub
Guarde este dado. Iremos copiá-lo para o servidor que iremos nos conectar mais adiante.
Esta ação é opcional, caso já tenha criado o servidor para esta finalidade. Caso ainda não tenha, verifique o modelo de criação dentro do ambiente que está hospedando, como por exemplo:
Google Cloud: https://cloud.google.com/compute/docs/create-linux-vm-instance
Azure: https://learn.microsoft.com/en-us/azure/virtual-machines/linux/quick-create-portal?tabs=ubuntu
AWS EC2: https://aws.amazon.com/getting-started/launch-a-virtual-machine-B-0/
Oracle Cloud: https://docs.oracle.com/en-us/iaas/Content/GSG/Reference/overviewworkflow.htm
Observação: A Cloudflare não dá suporte a esta etapa por ser de terceiros
Importante: após a criação do servidor, verifique como importar a chave pública ao servidor. Cada modelo cloud trabalha de uma forma diferente. Para servidores on-prem existem diversos métodos como copiar e cola dentro da pasta ~/.ssh/ ou efetuando o comando ssh-copy-id username@server_address caso tenha acesso direto a ele. Para qualquer caso se informe com o devops de sua empresa.
O próximo passo é criar uma conexão via tunnel do servidor criado no seu ambiente cloud ou on-prem com a Cloudflare. Para isso iremos utilizar o cloudflared.
Acesse o seu painel de gerenciamento da Cloudflare em https://dash.cloudflare.com e efetue o login.
Em seguida vá no menu lateral esquerdo e clique na sequência: Zero Trust > Networks > Tunnels > + Create a Tunnel
Defina um nome para o túnel que você está criando.
Selecione a opção do Sistema Operacional Linux (Debian ou Red Hat), em seguida a arquitetura (32 ou 64 bit) e copie o comando disponível no quadrado em cinza, lado esquerdo, conforme abaixo: Por questão de segurança, todo o comando não será exibido, mas sim copiado.
Execute este comando no terminal do servidor e aguarde o retorno de que foi executado com sucesso. Vide exemplo:
Neste momento você verá dentro do ambiente do túnel uma conexão criada na parte inferior da tela, conforme abaixo.
Clique na aba “Private Networks” e insira o IP e CIDR do servidor que deseja se conectar.
Importante:
Clique em “Save tunnel” no lado direito, na parte inferior da tela.
Você verá o seu tunnel na listagem (caso tenha mais já criados)
Exemplo:
Esta etapa é sobre a criação do WARP dentro da máquina do cliente para acesso ao servidor através do controle da rede da Cloudflare.
Caso não tenha executado ainda, siga os passos abaixo:
Para registrar seu dispositivo usando a GUI WARP (Windows, macOS ou Linux):
Após a autenticação, você verá uma página de sucesso e uma caixa de diálogo solicitando que você abra o WARP.
O dispositivo agora está protegido pelas políticas Zero Trust da sua organização.
Vamos agora adicionar Permissões de registro de dispositivos.
No menu lateral esquerdo, vá em Zero Trust > Settings > Warp Client
Clique em “Device enrollment permissions” e em seguida em “Manage”
Na aba de “Rules”, vamos criar uma regra de autenticação (provisória por enquanto). Clique em “ + Add a rule ”
Dê um nome em “Rule name”
Em “Rule Action” defina como “Allow”
No Include, faça conforme o modelo abaixo:
Selector: Emails ending in
Value: @empresa.com.br (exemplo - favor verificar)
Clique em “Save” do lado esquerdo, caixa em azul.
Esta etapa é importante, pois habilita ou bloqueia as redes dentro da conexão do ambiente pelo Warp.
Por padrão, o WARP exclui o tráfego destinado aos endereços IPs usados em redes privadas e não acessíveis pela Internet. Para que tenha tráfego dentro de sua rede privada, devemos configurar um modelo de Split Tunnels para que o IP/CIDR de sua rede privada seja roteada por meio do Warp.
Verifique o modo de Split Tunnels no seu ambiente de rede.
Vá no menu lateral esquerdo em Zero Trust > Settings > Warp Client
Vá em Device Settings, veja o modelo Default criado e clique nos três pontos e em seguida “Configure”
Role a tela até a opção “Split Tunnels” e veja se está ativa a opção “Exclude IPs and domains” igual ao modelo abaixo.
Em seguida clique em “Manage” em azul do lado direito.
Verifique os ranges de IPs listado.
Caso o IP do seu servidor esteja dentro de algum range, clique na opção e delete ele da lista para que o Warp possa trafegar com este endereço.
Neste meu exemplo (vide abaixo), foi necessário deletar o range 10.0.0.0/8, pois o meu servidor possui o IP 10.206.xx.xx
Clique o item, vá mais acima, escolha Action e Confirm delete (1 selected)
Agora iremos realizar a conexão ao servidor através da máquina cliente que instalamos o Warp.
Em resumo, nós realizamos as atividades:
E agora vamos realizar a conexão ao servidor. Utilizando o PuTTY, um terminal do ambiente (tipo WSL) ou similar, digitamos o comando abaixo:
ssh -i ~/.ssh/chave-ssh-ztna <usuário_servidor>@<IP do servidor>
Lembre-se: o IP do servidor é sempre o IP interno da rede privada. Geralmente começando com 10.x.x.x ou 172.16.x.x ou 192.168.x.x
Realizando todas estas etapas, o servidor receberá a solicitação e irá dar entrada ao ambiente pelo terminal utilizando os pares de chaves SSH gerados na etapa 1.
— Alicino M 2025/01/14 15:33