Como Configurar um AWS Client VPN

Botao voltar
Banner da página de Blog.
Banner da página de Blog.

Por Alessandro Mauro, Criado em 04/05/2020 01:00


O que é uma VPN?

Uma Virtual Private Network (Rede Privada Virtual) ou VPN consiste em uma rede de comunicação privada configurada sobre uma rede pública. Sendo uma forma de realizar a conexão de dois pontos distintos pela rede pública (internet por exemplo), ao invés de se utilizar uma infraestrutura de links dedicados ou rede de pacotes. Graças a essa solução é possível realizar transferência de informações/arquivos de forma criptografada, rápida e segura.

Conhecimento necessário

É recomendável, porém não necessário, um conhecimento prévio sobre os seguintes temas:

Pré-requisitos

Para realizar a criação de um AWS Client VPN você precisa:

  • As permissões necessárias para trabalhar com endpoints do AWS ClientVPN;
  • Uma VPC com pelo menos uma sub-rede, um gateway da Internet e uma rota para o gateway da Internet;
  • Possuir uma versão do AWS CLI instalada na estação de trabalho;
  • Possuir a ferramenta do OpenVPN instalada na estação de trabalho(Linux Ubuntu);
  • Possuir a ferramenta AWS Client VPN (Windows e MAC);
  • Possuir a ferramenta Putty (para realizar conexões com servidores Linux);
  • Verificar se o AWS Client e suas dependências estão disponíveis para sua região de trabalho;

Passo 1: Chaves e Certificados

Para gerar os certificados é necessário criar um OpenSSL Easy-RSA. Em estações de trabalho Linux temos acesso a ele através do seguinte comando: git clone https://github.com/OpenVPN/easy-rsa.git

Em seguida abra a pasta dos arquivos baixados: cd easy-rsa/easyrsa3

Para estações de trabalho Windows é necessário uma versão superior à disponibilizada acima (3.0), nós para esse Passo-a-Passo utilizamos Easy-rsa 3.0.7. Após realizar o download do arquivo, descompacte ele e inicialize o “EasyRSA-Start.bat”;

Inicialize um novo ambiente PKI: ./easyrsa init-pki

Crie um certificado do domínio: ./easyrsa build-ca nopass Será questionado para inserir um valor, nele podemos inserir “vpn.dominio.do.cliente” por exemplo, para facilitar o reconhecimento posteriormente;

Comando para gerar o certificado e chave que será atrelado ao Servidor que queremos acessar: ./easyrsa build-server-full NomeDoServidor nopass

Comando para gerar certificado e chave para o cliente: ./easyrsa build-client-full Dominio.do.cliente nopass

NOTA: É de convenção, e considerado como boa prática, que seja criado chaves particulares para cada usuário, pois assim facilita o controle de acesso dos funcionários em caso de remanejamento ou desligamento do mesmo (exemplo: usuario.dominio.do.cliente).

Agora copie os arquivos para uma única pasta para um melhor controle: mkdir ~/novaPasta/ cp pki/ca.crt ~/novaPasta/ cp pki/issued/NomeDoServidor.crt ~/novaPasta/ cp pki/private/NomeDoServidor.key ~/novaPasta/ cp pki/issued/Dominio.do.cliente.crt ~/novaPasta/ cp pki/private/Dominio.do.cliente.key ~/novaPasta/

Verificar se todos os arquivos se encontram na pasta: cd ~/novaPasta/ ls

Passo 2: Importação dos certificados

Para realizar a importação do certificado do servidor para o Console de Gerenciamento AWS insira o seguinte comando: aws acm import-certificate --certificate file://NomeDoServidor.crt --private-key file://NomeDoServidor.key --certificate-chain file://ca.crt --region regiaoDesejada

Em seguida realize a importação do certificado do Client que foi gerado.

Nota: Caso exista a necessidade de se inserir em múltiplas regiões, será necessário inserir uma de cada vez.

É possível realizar a importação através do Console de Gerenciamento AWS

Passo 2: Importando o Certificado
Passo 2: Importando o Certificado

Nota: Caso os certificados de Client tenham sido emitidos por CAs diferentes é necessário que os mesmos sejam também sejam importados.

Passo 3: Criando um Endpoint

No Management Console, vá até Client VPN Endpoints, localizado dentro de VPC.

Passo 3: Criando um Endpoint
Passo 3: Criando um Endpoint

Selecione Create Client VPN Endpoint:

Passo 3: Botão de Criar um Endpoint
Passo 3: Botão de Criar um Endpoint

O primeiro bloco de informações é referente à identificação da rede de VPN published

Passo 3: Identificando o Endpoint
Passo 3: Identificando o Endpoint

Para preencher o campo Client IPv4 CIDR é necessário que a rede seja no mínimo /22 e no máximo /12. Caso tenha dúvidas você poderá calcular esse valor com uma calculadora de subnets.

NOTA: No campo Client IPv4 CIDR refere-se ao bloco de IPs no qual os usuários irão se conectar à rede, não coloque a mesma rede que sua VPC caso contrário poderá impactar em seu ambiente. Essa informação não pode ser alterada após a criação.

O segundo bloco é referente à autenticação do servidor

Passo 3: Configurando a Autenticação
Passo 3: Configurando a Autenticação

NOTA: No campo Server certificate ARN deve-se selecionar o certificado do servidor gerado no Passo 1. No campo Authentication Options será selecionado Use mutual authentication e em seguida deve-se selecionar o certificado do cliente também gerado no Passo 1.

O terceiro bloco é referente a criação de logs

Passo 3: Habilitando Logs
Passo 3: Habilitando Logs

NOTA: É altamente recomendável, e considerado como boa prática, que seja habilitada a configuração de logs, pois assim ficará registrado sempre que houver uma tentativa de autenticação para a rede.

O quarto bloco é referente as configurações adicionais

Passo 3: Configurações Adicionais
Passo 3: Configurações Adicionais

NOTA: Nesse bloco é possível configurar os servidores de DNS, para resolução de nome dentro da rede, escolher o protocolo de transferência (UDP sendo o selecionado por padrão), habilitar Split-tunnel (permitindo o uso da rede normal para aplicações e serviços que não tem como destino servidores dentro da VPC).

Após realizar todas as configurações basta selecionar o botão Create Client VPN Endpoint

Passo 3: Botão de Criar um Endpoint
Passo 3: Botão de Criar um Endpoint

Passo 4: Habilitando a conectividade de VPN para Clientes

Na página Client VPN Endpoints do Manegement Console selecione a opção Associatons e em seguida Associate, conforme a figura abaixo

Passo 4: Criando uma Associação
Passo 4: Criando uma Associação

Nesta tela é necessário realizar a associação com a VPC desejada e sua respectiva Subnet da rede desejada

Passo 4: Criando Associação com a Rede Desejada
Passo 4: Criando Associação com a Rede Desejada

Passo 5: Autorizando a conectividade com o cliente

Na página Client VPN Endpoints do Manegement Console selecione a opção Authorization e em seguida Authorize Ingress, conforme a figura abaixo

Passo 5: Criando uma Autorização
Passo 5: Criando uma Autorização

Nesta tela será configurado no campo Destination network to enable a rede, em notação CIDR, que será acessada pela VPN. Ao final da configuração basta clicar em Add authorization rule

Passo 5: Autorizando o Ponto de Partida
Passo 5: Autorizando o Ponto de Partida

Passo 6: Arquivo de Configuração do Endpoint

Para realizar o Download do arquivo de Configuração do cliente basta clicar na página Client VPN Endpoints do Manegement Console selecione a opção Download Client Configuration figura abaixo

Passo 6: Baixando o Arquivo de Configuração do Client
Passo 6: Baixando o Arquivo de Configuração do Client

Será realizado o download de um arquivo .ovpn com o seguinte conteúdo:

client dev tun proto udp remote cvpn-endpoint-…region.amazonaws.com 443 remote-random-hostname resolv-retry infinite nobind persist-key persist-tun remote-cert-tls server cipher AES-256-GCM verb 3 <ca> -----BEGIN CERTIFICATE----- Base64–encoded certificate -----END CERTIFICATE----- </ca> reneg-sec 0

Nesse arquivo será necessário inserir o Certificado do Servidor e a Chave do Cliente, isso pode ser adicionado de duas formas:

Tag

É possível inserir as duas chaves através das tags:

client dev tun proto udp remote cvpn-endpoint-…region.amazonaws.com 443 remote-random-hostname resolv-retry infinite nobind persist-key persist-tun remote-cert-tls server cipher AES-256-GCM verb 3 <ca> -----BEGIN CERTIFICATE----- Base64–encoded certificate -----END CERTIFICATE----- </ca> <cert> -----BEGIN CERTIFICATE----- Base64–encoded certificate -----END CERTIFICATE----- </cert> <key> -----BEGIN KEY----- Base64–encoded certificate -----END KEY----- </key> reneg-sec 0

Referêcia

É possível inserir as duas chaves através de referência dos arquivos dentro do documento, conforme:

client dev tun proto udp remote cvpn-endpoint-…region.amazonaws.com 443 remote-random-hostname resolv-retry infinite nobind persist-key persist-tun remote-cert-tls server cipher AES-256-GCM verb 3 cert NomeDoServidor.cert key NomeDoServidor.key <ca> -----BEGIN CERTIFICATE----- Base64–encoded certificate -----END CERTIFICATE----- </ca> reneg-sec 0

NOTA: Quando realizar a configuração via referência, será necessário enviar o certificado e a chave junto com o arquivo de configuração para o cliente.

Passo 7: Distribuição do arquivo para os clientes

Com o arquivo de configuração finalizado basta distribuir para os clientes acessarem a VPN via AWS Client VPN. Para realizar a conexão com servidores Linux basta utilizar a ferramenta Putty. Para realizar a conexão com servidores Windows basta ferramenta de Conexão de Área de Trabalho Remota.

Passo 8: Revogando o Certificado de Client

Caso esteja utilizando Mutual Authentication e haja a necessidade de revogar um certificado. Abra o ambiente pki e digite:

./easyrsa revoke nome-do-certificado-do-cliente

Quando for questionado digite yes. Um arquivo crl.pem será criado em: /easy-rsa/EasyRSA-3.0.7/pkicrl.pem/crl.pem

Na aba de VPC do console de gerenciamento selecione seu Client VPN e clique Import Client Certificate CRL

Passo 8: Importando CRL
Passo 8: Importando CRL

Preencha o campo com o conteúdo do arquivo crl.pem e por fim Import CRL

Passo 8: Inserindo o Certificado para Revogação
Passo 8: Inserindo o Certificado para Revogação

A qualquer momento é possível exportar a lista com os certificados revogados.

Selecione seu Client VPN e clique Export Client Certificate CRL

Passo 8: Exportando a Lista de Revogação
Passo 8: Exportando a Lista de Revogação

Disponibilidade e Precificação

A precificação dessa ferramenta é realizada da seguinte forma (Baseado na região de Ohio):

  • Realizar uma Associação de endpoints do AWS Client VPN gera uma cobrança de 0,10 USD por hora;
  • Cada Conectividade do AWS Client VPN gera uma cobrança de 0,05 USD por hora.

Para mais informações sobre as regiões de disponibilidade e suas respectivas cobranças confira aqui.

Resumo

Nesse artigo nós realizamos uma configuração de uma rede de privada utilizando o AWS Client VPN, emitimos os certificados de autenticação e criamos um arquivo de configuração para realizar nossa conexão com nossos servidores.

Tags

#migração #networking #aws #client-vpn #trabalho-remoto

Sobre o autor

Foto Do Autor.
Foto Do Autor.

Alessandro Mauro

Comentários