O acesso seguro a recursos internos de uma infraestrutura de TI tornou-se uma prioridade para empresas e profissionais de tecnologia. Ambientes críticos, como servidores de aplicação, bancos de dados e painéis administrativos, costumam ter suas portas e serviços mais sensíveis isolados da internet pública por questões de segurança. Essa prática é essencial para reduzir a exposição a ataques, mas também cria um desafio: como acessar esses recursos remotamente de forma segura e controlada?
É aí que entra o papel das VPNs (Virtual Private Network). Elas possibilitam a criação de uma conexão criptografada entre o usuário e a rede corporativa, permitindo acesso a recursos internos como se estivesse conectado diretamente na rede interna. Isso não apenas fortalece a segurança, mas também aumenta a flexibilidade e a produtividade das equipes.
Neste tutorial, vamos demonstrar como implantar rapidamente uma VPN Site-to-Client utilizando PritUNL (uma solução open-source robusta e fácil de gerenciar) utilizaremos o AWS CloudFormation para automatizar o provisionamento da infraestrutura.
Pré-requisitos:
É necessário possuir uma conta na AWS com uma VPC previamente configurada, incluindo ao menos uma subnet pública disponível.
Também é necessário acessar o repositório no GitHub e fazer o download dos arquivos PritUNL-EC2.yaml e PritUNL-SSM.yaml, iremos utilizar eles para provisionar o ambiente com o CloudFormation.
📁 Pasta PritUNL no GitHub: https://github.com/alfredotavio/aws/tree/main/PritUNL
Etapa 01 - Parametrização do Ambiente
Nesta etapa, vamos preparar as informações necessárias para subir a infraestrutura, como:
- Identificar o ID da AMI que será usada (Ubuntu 24.04 ARM).
- Identificar o range da VPC.
Acesse a console AWS e procure pelo serviço "EC2".
Em "Quick Start" altere para "Ubuntu", em "Architecture" altere para "64-bit (Arm)".
Confirme as mudanças clicando em "Confirm changes".
Copie o ID da AMI no campo "AMI ID" e deixe anotado em um bloco de notas, iremos utilizar está AMI para subir a nossa EC2 (no meu exemplo o ID é ami-07041441b708acbd6).
Agora vamos anotar o range da VPC, procure pelo serviço "VPC". Em seguida clique em "Your VPCs".
Em "IPv4 CIDR", anote o range em um bloco de notas, iremos utilizar este range para configurar a rota dentro do PritUNL (no meu exemplo o range é 10.0.0.0/21).
Etapa 02 - Provisionamento da Instância EC2 via CloudFormation
Aqui vamos criar a stack que irá provisionar a instância EC2 (utilizando o arquivo PritUNL-EC2.yaml).
Acesse a console AWS e procure pelo serviço "CloudFormation".
Selecione "Choose an existing template" e em seguida selecione "Upload a template file". Clique em "Choose file" e selecione o arquivo PritUNL-EC2.yaml baixado do repositório do GitHub. Em seguida clique em "Next".
Nesta etapa, defina as seguintes configurações:
Em "Stack name", defina o nome da Stack.
Em "ID da AMI", digite o ID da AMI que anotamos na etapa anterior.
Em "VPC", selecione a VPC que iremos utilizar.
Em "Sub-rede", selecione a subnet pública que iremos utilizar.
Em "Par de Chaves (Key Pair)", selecione a chave de sua preferencia.
Nesta etapa, apenas marque o checkbox "I acknowledge that AWS CloudFormation might create IAM resources with custom names." e em seguida clique em "Next".
Confirme as informações e clique em "Submit".
O CloudFormation irá começar a provisionar a EC2.
Aguarde até que o CloudFormation finalize a criação dos recursos para seguir com a próxima etapa.
A Stack irá mostrar "CREATE_COMPLETE" quando finalizar.
Etapa 03 - Implantação da PritUNL na EC2 via CloudFormation e AWS Systems Manager (SSM)
Aqui vamos criar a stack que irá implantar a VPN PritUNL na EC2 (utilizando o arquivo PritUNL-SSM.yaml).
Acesse a console AWS e procure pelo serviço "CloudFormation".
Clique em "Create stack" e em seguida "With new resources (standard)".
Selecione "Choose an existing template" e em seguida selecione "Upload a template file". Clique em "Choose file" e selecione o arquivo PritUNL-SSM.yaml baixado do repositório do GitHub. Em seguida clique em "Next".
Em "Stack name", defina o nome da Stack.
Em "EC2InstanceId", selecione a EC2 que provisionamos na etapa anterior.
Confirme as informações e clique em "Submit".
O CloudFormation irá começar a executar o SSM.
Aguarde até que o CloudFormation finalize.
A Stack irá mostrar "CREATE_COMPLETE" quando finalizar.
A execução da implantação pode demorar aproximadamente 5 minutos, para acompanhar o status, faça o seguinte:
Procure pelo serviço "Systems Manager".
No menu lateral a esquerda, clique em "Run Command".
Aqui você pode verificar o status da execução como "In Progress", clique no ID do "Command ID" para mais informações.
Nesta tela podemos verificar o ID da instância que está sendo implantada a nossa VPN PritUNL e o status da execução.
Assim que finalizar a execução, o status irá mudar para "Success".
Etapa 04 - Criando o registro DNS
Vamos definir e criar a URL que iremos utilizar para acessar o dashboard da VPN PritUNL.
Irei utilizar o domínio alfredocastro.com.br, defini a URL vpn.alfredocastro.com.br para o dashboard da VPN.
Acesse o seu gerenciador de registros DNS do seu domínio e crie o registro abaixo de acordo com o seu cenário:
Tipo | Registro | Valor | Observação |
---|---|---|---|
A | VPN | 34.XX.XXX.247 | Elastic IP atribuído à EC2 |
Vamos obter o endereço IP da EC2 provisionada, acesse a console AWS e procure pelo serviço "EC2".
No menu lateral a esquerda, clique em "Instances".
Selecione a EC2 "VPN-PritUNL" e em seguida copie o IP Publico no campo "Public IPv4 address".
Para consultar a propagação do registro criado, consulte o site: WhatsMyDNS
Etapa 05 - Obtendo o usuário e senha padrão da VPN PritUNL
Acesse a console AWS e procure pelo serviço "EC2".
No menu lateral a esquerda, clique em "Instances".
Selecione a EC2 "VPN-PritUNL" e em seguida clique no botão "Connect".
Altere o tipo para "Session Manager" e clique no botão "Connect".
Execute o comando abaixo para obter o usuário e a senha padrão:
cat /opt/pritunl/default_password.txt
Agora podemos acessar e realizar a configuração da nossa VPN.
Etapa 06 - Configuração inicial da VPN PritUNL
Acesse o dashboard da VPN PritUNL digitando o endereço IP Público em seu navegador.
Digite o Username e Password encontrado na etapa anterior e clique em "Sign in".
Ao realizar o primeiro acesso será solicitado a configuração inicial, faça as alterações conforme o seu ambiente, neste exemplo, alterei o username do usuário administrador e a sua senha, desativei o acesso por IPv6 e configurei o domínio de acesso para o DNS que criamos na etapa 04 (vpn.alfredocastro.com.br). Após realizar a configuração conforme o seu ambiente, clique em "Save".
A VPN irá solicitar um certificado Let's Encrypt para o DNS configurado, se tudo ocorrer conforme o planejado será exibida a seguinte mensagem "Successfully saved settings".
Acesse novamente o dashboard da VPN PritUNL, porém agora acesse utilizando o DNS configurado na etapa anterior, veja que agora exibe um certificado válido gerado pela Let's Encrypt.
Etapa 07 - Configurando a VPN PritUNL
Acesse o dashboard da VPN PritUNL utilizando o DNS configurado na etapa anterior, digite o Username e Password configurado por você na etapa anterior e clique em "Sign in".
Defina um nome para a sua organização e clique em "Add".
Será exibida a seguinte mensagem "Successfully added organization", agora clique em "Add User".
Digite as informações (Nome e email) do usuário que deseja adicionar em sua VPN, selecione a organização que criamos na etapa anterior e defina um código PIN para o usuário (código numérico com pelo menos 6 dígitos). Em seguida clique em "Add".
Será exibida a seguinte mensagem "Successfully added user", agora clique na aba "Servers".
Defina um nome para o server da VPN.
No campo "Port" defina uma porta entre 5050 e 5060 está configuração é importante, pois em nosso Security Group da instância está liberado este range de portas.
Caso você queira autenticação MFA (recomendo habilitar para maior segurança), marque o checkbox "Enable Google Authenticator".
Será exibida a seguinte mensagem "Successfully added server", agora clique em "Attach Organization".
Selecione a organização e o server que você deseja vincular, em seguida clique em "Attach".
Será exibida a seguinte mensagem "Successfully attached organization", agora clique em "Remove Route" para removermos a rota padrão "0.0.0.0/0".
Se deixarmos a rota padrão, todo o nosso tráfego irá passar pela VPN, nosso objetivo é apenas o tráfego da rede interna (VPC) passe pela VPN.
Confirme a remoção clicando em "Remove".
Digite o range de IP da sua VPC, anotamos ele na etapa 01, selecione qual o server deseja vincular o range e clique em "Attach".
Será exibida a seguinte mensagem "Successfully added route", agora clique em "Start Server".
Pronto, servidor configurado e pronto para ser utilizado.
Agora você pode importar o usuário para o client.
Etapa 08 - Importando o usuário para o Client PritUNL
Volte para a aba "Users", em seguida clique no botão parecido com uma corrente "Get temporary profile links" ele fica ao lado do botão parecido com um QR Code.
Será gerado 4 links temporários que expirão em 24h, iremos utilizar o terceiro link, copie e acesse pelo navegador.
Primeiro vamos realizar a alteração do código PIN, clique em "Configure Pin".
Digite o código PIN definido na etapa de criação do usuário e em seguida digite o novo código PIN (código numérico com pelo menos 6 dígitos). Em seguida clique em "Change Pin".
Será exibida a seguinte mensagem "Pin successfully changed", agora você deve escanear o QR Code em seu Google Authenticator ou similar. Em seguida anote o "Profile URI Link:" iremos utilizar ele no Client PritUNL para importar. Clique no "Download Client" para ser redirecionado para o site da PritUNL para baixar o client.
Baixe e instale o cliente PritUNL de acordo com a arquitetura do seu sistema operacional (Linux/Windows/MacOS).
Após instalar o client, abra e clique no botão "Import".
Cole o Profile URI copiado na etapa anterior e clique em "Import".
Pronto, usuário importado.
Etapa 09 - Testando a VPN
Com o client aberto, clique no botão "Connect".
Em "Pin", digite o seu código PIN.
Em "Authenticator Passcode", digite o código aleatório que é gerado no Google Authenticator.
Em seguida clique em "Connect".
Se as informações estiverem corretas, será exibido o IP do servidor VPN com o tempo de conexão.
Dentro do dashboard da VPN PritUNL você consegue verificar o status do usuário.
Agora vamos testar a comunicação com a rede interna (VPC), acesse a console AWS e em seguida acesse o serviço "EC2". Selecione a EC2 da VPN e copie o endereço IP privado.
Abra um terminal na sua máquina e utilize o comando "telnet" para verificar se você possui acesso a uma porta específica, no meu caso utilizei a porta HTTP 80.
telnet 10.0.0.11 80
Porta acessada com sucesso nossa VPN está funcionando. Agora podemos liberar o endereço IP privado da nossa instância no SG das demais instâncias EC2 para realizarmos o acesso via VPN.
Espero tê-lo ajudado! Se houver alguma dúvida, não hesite em entrar em contato.
Top comments (0)