User Tools

Site Tools


ztna-conexao-ssh

This is an old revision of the document!


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

by Alicino Moura Updated on Nov 2nd, 2024

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/

Links diretos:

  1. Criação dos pares de chaves SSH
  2. Criação da Máquina Virtual “servidor” para conexão (opcional)
  3. Conectar o servidor a Cloudflare (cloudflared tunnel)
  4. Conexão da máquina cliente (opcional)
  5. Rotear IPs da rede privada através do WARP (agente)
  6. Conexão com usuário

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.

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.1736891524.txt.gz · Last modified: 2025/01/14 15:52 by alicino

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki