Criando VPN P2S [Point-to-Site] com certificado digital passo a passo - By Receita de Bolo



Autor: Eduardo Popovici
Dados do Autor: https://linktr.ee/edupopov

AVISO - Este post é do tipo receita de bolo (passo a passo). Significa que tento atender 100% do caminho até o resultado final, ou seja, pode ficar meio "massante" para analistas mais experientes. 

Se conectar ao local de trabalho de forma remota é uma das premissas básicas da atualidade, ou seja, você vai acabar fazendo em algum momento. Essa conexão remota pode ser feita de várias formas, mas duas chamam a atenção. A primeira é uma conexão direta conhecida como NAT de porta que é altamente arriscada e não recomendada (tenho até um post antigo sobre isso usando um D-Link) e a outra usando um túnel virtual criptografado chamado VPN.

O assunto VPN é meio que "batido" pela quantidade de artigos porém ainda é um tabu para muitos analistas durante sua implantação. A implementação de VPN´s se tornou muito comum nesse período de home office durante a pandemia. Seguindo a linha de laboratórios e posts sobre o Microsoft Azure, vou ensinar neste post a montar uma conexão VPN conhecida como point-to-site (a antiga client to site).

A VPN do tipo point-to-point é representado pela figura abaixo pensando no cenário de um usuário acessando, por exemplo, um servidor de arquivos dentro de uma nuvem pública. Imagine que a nuvem pública é uma extensão da rede corporativa e deve satisfazer as necessidades remotas de usuários com mais resiliência. O processo não é complicado, mas um pouco trabalhoso para quem nunca montou a configuração antes. Depois que pegar o jeito, fica fácil.

Quais itens deverão existir (serem criados), para que a configuração funcione? Bem, vamos precisar criar:

a) Uma rede virtual (VNET)

b) Um VPN Gateway

c) Certificado digital



1. Faça o logon em seu portal do Azure;

2. Para este laboratório já tenho criado um grupo de recursos chamado LAB-VPN-POINT-TO-POINT-POPOVICI. Crie um grupo de recursos para começar. Para criar um grupo de recursos você pode. 


3. Clique em Create para prosseguir;



4. Preencha os dados da subscrição, nome do grupo de recursos e a região. Ai é só clicar em Review + create.


5. O resultado é exatamente este, um grupo de recursos vazio e pronto para utilização. 


6. Agora vamos nos concentrar na VNET. No mundo real seria interessante separar os recursos em grupos diferentes, mas como este é um post conceitual, não pretendo escovar bit de forma desnecessária (e olha que o post vai ficar grande). Clique em + Add para adicionarmos o recurso diretamente ao grupo de recursos.


7. Na barra de pesquisas digite VNET (ou Virtual Network). Quando aparecer na lista, clique em Virtual Network.


8. Agora é só clicar em Create e preencher as informações.


9. São basicamente quatro informações relevantes. A Subscription (sua subscrição), depois o grupo de recursos, que já virá preenchido se o processo de criação veio de dentro dele, o nome da VNET e a região (que mantive igual a região do grupo de recursos). Depois de preencher as informações, basta clicar em Review + create. Na tela de revisão clique em Create


10. Assim que a criação for finalizada, clique em Go to resource pela opção de notificações no ícone que parece um sino, no canto direito superior de sua tela.


11. Agora você consegue visualizar dados relevantes de sua VNET, como endereço IP, grupo de recursos, nome, quem prove o DNS (neste caso o azure de forma automática), etc...


12. Agora clique em + Create a resource, depois na barra de pesquisa digite virtual network gateway. Quando essa opção aparecer, clique em cima dela.


13. Assim que a tela aparecer, clique em Create e vamos configurar as opções.


14. Bom, esta tela tem diversas configurações. Vamos trabalhar todas e concentrar nas mais relevantes neste momento. Lembre-se que cada uma das opções é importante dentro de um cenário ou momento específico. Tudo depende da avaliação do projeto, ou seja, estas configurações que estou ensinando (by receita de bolo) podem não atender demandas específicas.

a) Subscription: Identifique aqui sua subscrição

b) Resource group: Veja que o grupo de recursos já esta definido

Em Instance details

c) Name: Adicione um nome. No meu caso ficou como LAB-VPN-POPOVICI

d) Region: Em região deixei como Brasil South, mantendo um padrão com os outros recursos criados

e) Gateway type: Deixe como VPN (vale saber a diferença entre VPN e ExpressRoute; quando usar um ou outro para cada tipo de projeto)

f) VPN type: Deixe aqui marcado Route-based

g) SKU: Esta como VpnGw1. Isso significa que é o primeiro modelo de VPN de uma lista. Vou colocar o print da lista aqui, mas vale conferir os preços e se houve modificação de limitações. Sempre verifique a tabela oficial antes de montar uma configuração que será colocada em produção.

O SKU VpnGw1 (até a data deste post), permite uma largura de banda de 100 Mbps com 10 túneis S2S e até 128 túneis P2S. Acredito que atenda muito bem a inúmeros casos ;-)

Link para a tabela oficial (que também pode mudar a qualquer momento - lembre-se que aqui tudo é vivo, tudo muda sem aviso prévio): 



15. Vamos continuar com a configuração na mesma tela:

a) Gateway subnet address range: Coloque a sub-rede que será utilizada. Se você não colcoar nada o Azure preenche para você dentro do bloco existente (muito prático).

Em Public IP address

b) Public IP address: Selecione Create new (se você já tem um IP pode atribuir aqui pela opção Use existing);

c) Public IP address name: O recurso de IP público precisa de um nome. Eu recomendo colocar algo que faça sentido com tudo o que já foi criado até o momento, ou seja, coloquei o nome de IP-VPN-LAB-POPOVICI

d) Enable active-active mode: Deixe como disable

e) Configure BGP ASN: Deixe como disable

Com tudo preenchido, pode revisar e criar, ou seja, clique em Review + create e depois em Create. Abaixo você pode conferir a figura informativa com o resumo das configurações. 


16. Outro ponto importante, o processo não é automático. A criação do Virtual Network Gateway pode levar de 20 a 30 minutos. Você pode acompanhar o progresso pelas notificações. Até aqui posso dizer que as configurações relacionadas a VPN estão prontas. Agora vamos passar para a estação cliente com o Windows 10 (vamos para a autenticação dos clientes).



17. Vamos falar sobre procolos e autenticação.

É importante lembrar que a VPN do Azure utiliza os protocolos SSTP (SSL utilizado pela Microsoft), IKEv2 e OpenVPN (SSL de código aberto) em sua concepção, porém (e sempre tem um porém), como o nosso SKU se trata do Basic (o primeiro da lista) não temos suporte a outros tipos de conexão que não sejam o SSTP (pelo menos até agora). Resumindo, é esse protocolo que vamos utilizar. No dia a dia é importante validar dentro do projeto se existe algum impeditivo em relação aos protocolos antes para não ter surpresas posteriores. 

Em endpoints e estações clientes, mais especificamente nos firewalls, a porta de saída utilizada que deve ser liberada é a 443. Se não houver a liberação a conexão não acontece.

Sobre autenticação, vamos colocar aqui que podemos utilizar basicamente dois tipos. A autenticação baseada em certificado digital nativo do Azure ou a autenticação baseada em um controlador de domínio. Neste post os passos são para quem não possui um controlador de domínio (ainda farei um novo com autenticação por domain controler - vai ficar para um próximo post).

Guarde estes comandos em powershell, vamos precisar deles. Quando você copiar o comando deste post, fique atento as aspas duplas e aspas simples. Este comando gera um certificado digital auto assinado em servidores. Como não temos um controlador de domínio, vamos precisar do certificado para entregar no Microsoft Azure.

# Criar certificado digital VPN-POPOVICI
$cert = New-SelfSignedCertificate -Type Custom -KeySpec Signature -Subject "CN=CertificadoPrincipal" -KeyExportPolicy Exportable -HashAlgorithm sha256 -KeyLength 2048 -CertStoreLocation "Cert:\CurrentUser\My" -KeyUsageProperty Sign -KeyUsage CertSi 


# Certificado auto assinado
New-SelfSignedCertificate -Type Custom -DnsName P2SChildCert -KeySpec Signature -Subject "CN=Certificadocliente" -KeyExportPolicy Exportable -HashAlgorithm sha256 -KeyLength 2048 -CertStoreLocation "Cert:\CurrentUser\My" -Signer $cert -TextExtension @(“2.5.29.37={text}1.3.6.1.5.5.7.3.2”)

A saída deste segundo comando é a seguinte:



18. Neste passo vamos exportar a chave pública para poder utilizar no Azure. Em sua estação de trabalho vá até o executar e digite certmgr.msc;


19. Veja, aqui tenho o certificado criado e a data de criação. O certificado fica armazenado em Certificados, Pessoal, certificados. O nome do certificado esta como Certificadocliente e Certificado Principal (usando os scripts à cima). 


20. Clique com o botão direito do mouse em CertificadoPrincipal, todas as tarefas e exportar. Quando o assistente abrir, clique em avançar.



21. Selecione a segunda opção (Não, não exportar a chave primaria). Depois clique em avançar.


22. Marque a segunda opção (X.509 certificado na base 64 *.cer e clique em Avançar.



23. Valide o caminho para salvar o arquivo com extensão .cer e clique em avançar. 



24. Quando você concluir o assistente, receberá uma mensagem confirmando a ação.



25. Abra o certificado digital que criou no bloco de notas.




26. O arquivo terá este formato. Você vai precisar desse contexto para usar no Azure. Copie o texto em sua íntegra (não altere nada). A minha imagem esta cortada propositalmente ok rs.. a sua estará completa. Copie as informações de -----BEGIN CERTIFICATE----- até o final -----END CERTIFICATE-----. Copie tudo.


27. Agora vamos levar essa informação ao Azure. Você precisa navegar até até o grupo de recursos que criamos e acessar o recurso de Virtual Network Gateway. A próxima figura tem o caminho completo até chegar ao recurso. Clique no recurso para começar a configuração.



28. Clique em User VPN configuration e em seguida em Configure now


29. Aqui temos alguns passos importantes:

a) Address pool: Identifique aqui um range de endereços que será utilizado para a conexão. Use como modelo o formato da imagem se preferir

b) Tunnel type: O tipo do túnel esta como SSTP (SSL)

c) Root certificates: Adicione um nome ao certificado e na linha de Public certificate data, cole as informações do certificado. Cole as informações de -----BEGIN CERTIFICATE----- até o final -----END CERTIFICATE-----. Cole tudo.

d) Clique em Azure certificate

e) Salve as configurações



29. Depois de salvar as configurações, nesta mesma tela, clique em Download VPN Client. Quando finalizar o Download é só executar o aplicativo e fazer a conexão.




Lembre-se de exportar o certificado cliente e guardar uma cópia por segurança. Em um próximo post vamos trabalhar a conexão VPN utilizando autenticação por Active Directory.

Uma boa referência e material complementar esta aqui:
https://docs.microsoft.com/pt-br/azure/vpn-gateway/vpn-gateway-about-vpn-gateway-settings

Este material é excelente e serve como boa referência:
https://docs.microsoft.com/en-us/azure/vpn-gateway/vpn-gateway-howto-point-to-site-resource-manager-portal

Em algum momento pode ocorrer um erro em relação ao certificado. Neste caso recomendo ler esta questão do fórum:
https://social.msdn.microsoft.com/Forums/en-US/bb082e6c-5e9d-4a12-bb27-dc16045abfbf/point-to-site-vpn-data-for-certificate-invalid?forum=WAVirtualMachinesVirtualNetwork

Este link também pode se fazer útil para alguns erros:
https://docs.microsoft.com/en-us/azure/vpn-gateway/vpn-gateway-troubleshoot-vpn-point-to-site-connection-problems





Aproveitando, vou deixar aqui o link para meus cursos na plataforma Udemy.









1 Comentários

Comente sem faltar com respeito - ;-)

  1. Olá Eduardo,

    Estou com algumas dúvidas em configurações do Hyper V e gostaria de saber se você pode me ajudar.

    Muito obrigado

    grande abraço

    Lucas

    ResponderExcluir
Postagem Anterior Próxima Postagem