User Tools

Site Tools


ztna-conexao-ssh

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
ztna-conexao-ssh [2025/01/05 22:48] – removed - external edit (Unknown date) 127.0.0.1ztna-conexao-ssh [2025/01/15 08:59] (current) alicino
Line 1: Line 1:
 +====== 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.
 +
 +{{ :ztna-ssh-01.png?direct&600 |}}
 +
 +Execute este comando no terminal do servidor e aguarde o retorno de que foi executado com sucesso. Vide exemplo:
 +
 +{{ :ztna-ssh-02.png?direct&600 |}}
 +
 +Neste momento você verá dentro do ambiente do túnel uma conexão criada na parte inferior da tela, conforme abaixo.
 +
 +{{ :ztna-ssh-03a.png?direct&600 |}} 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)
 +
 +{{ :ztna-ssh-04.png?direct&600 |}}
 +
 +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:
 +
 +{{ :ztna-ssh-05.png?direct&600 |}}
 +
 +----
 +
 +===== 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"//
 +
 +{{ :ztna-ssh-06.png?direct&600 |}}
 +
 +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.
 +
 +{{ :ztna-ssh-07.png?direct&600 |}}
 +
 +----
 +
 +
 +===== 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"//
 +
 +{{ :ztna-ssh-08.png?direct&600 |}}
 +
 +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.
 +
 +{{ :ztna-ssh-09.png?direct&600 |}}
 +
 +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)
 +
 +{{ :ztna-ssh-10.png?direct&600 |}}
 +
 +
 +----
 +
 +===== 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:
 +
 +  - Criamos uma chave de segurança para estabelecer a conexão segura;
 +  - Criamos a instância (servidor) para qual iremos nos conectar e copiamos a chave pública SSH para ela
 +  - Estabelecemos a conexão do servidor à Cloudflare via cloudflared (tunnel)
 +  - Instalamos e configuramos o Warp na máquina cliente
 +  - 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.
 +
 +
 +----
 +
 + --- //[[[email protected]|Alicino M]] 2025/01/14 15:33//
 +
  

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki