User Tools

Site Tools


ztna-conexao-ssh

Passo-a-Passo Conexão SSH via Cloudflare Zero Trust

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/


1. Criação dos pares de chaves SSH

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.


2. Criação da Máquina Virtual "servidor" para conexão (opcional)

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.


3. Conectar o servidor a Cloudflare (cloudflared tunnel)

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.

AQUI!

Clique na aba “Private Networks” e insira o IP e CIDR do servidor que deseja se conectar.

Importante:

  • O IP deve ser da rede interna do seu ambiente (caso tenha mais que um).
  • Para conexão de uma máquina apenas, informe o IP com o CIDR /32 (1 host)

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:


4. Conexão da máquina cliente (opcional)

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):

  • Baixe e instale o cliente WARP. Clique aqui para download.
  • Inicie o cliente WARP.
  • Selecione o logotipo do Cloudflare na barra de menu.
  • Selecione o ícone de engrenagem.
  • Vá para Preferences > Account
  • Selecione Login com Cloudflare Zero Trust
  • Insira o nome da sua equipe
  • Conclua as etapas de autenticação exigidas pela sua organização.

Após a autenticação, você verá uma página de sucesso e uma caixa de diálogo solicitando que você abra o WARP.

  • Selecione Abrir Cloudflare WARP.app para concluir o registro.

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.


5. Rotear IPs da rede privada através do WARP (agente)

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)


6. Conexão com usuário

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:

  1. Criamos uma chave de segurança para estabelecer a conexão segura;
  2. Criamos a instância (servidor) para qual iremos nos conectar e copiamos a chave pública SSH para ela
  3. Estabelecemos a conexão do servidor à Cloudflare via cloudflared (tunnel)
  4. Instalamos e configuramos o Warp na máquina cliente
  5. Realizamos o split de tunnel para redes privadas no tráfego dentro da Cloudflare

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

ztna-conexao-ssh.txt · Last modified: 2025/01/15 08:59 by alicino

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki