Faaaaaala seus trem bunito!! Tudo bem com vocês?

Comigo tá tudo sussa! (Graças à Deus!)

No post anterior eu falei sobre VPN no Azure, (basicamente eu falei bem sobre os tipos de protocolo, etc), e inclusive demonstrei como criar uma VPN S2S no Azure (Site-to-Site).

Porém no post anterior falei também sobre um outro tipo de conexão VPN disponível no Azure, que é a VPN P2S (Point-to-Site).

Imagine o seguinte cenário:

Você é proprietário de uma empresa de bebidas e possui uma infraestrutura bem complexa. Porém, você migrou muitas aplicações e serviços para o Azure, para aliviar sua infra local, e claro trazer mais performance. Porém, você possui muitos vendedores externos que utilizam esses recursos que estão na nuvem (Azure), mas você precisa assegurar que eles possam acessar esses sistemas, sem a necessidade de estar dentro da empresa.

Isso é possível? 

Claro! Os colaboradores podem acessar esses recursos que estão no Azure à qualquer momento, de qualquer lugar, desde que tenham um acesso à internet, fechando a comunicação através de uma: VPN P2S (Poin-to-Site).

VPN P2S (Point-to-Site): É um outro modelo de implantação porém, é voltado para conexão de um único dispositivo (independente de onde você esteja) com o Azure. Utiliza o protocolo SSTP (Secure Socket Tunneling Protocol) baseado em SSL, porém tem suporte apenas em plataformas Windows.

[Gateway Virtual]: É um Gateway de Comunicação que envia o tráfego criptografado em uma conexão pública para a conexão local. Basicamente, é composto por duas ou mais máquinas virtuais que são implantadas em uma subnet específica (GatewaySubnet). Essas máquinas são transparentes à nível de usuário (ou seja, você não vê essas máquinas no portal). Elas contém as tabelas de roteamento e os serviços específicos desse gateway. Por isso o Gateway Virtual pode demorar até 45 minutos para ser criado, pois as VMs do Gateway são implementadas com configurações específicas, e inerentes ao ambiente a ser criado.

Os tipos de gateway são:

      Tipo              Máximo de Túneis         Máximo de Conexões P2S          Máximo da Tx de Transferência

VpnGw1                                30                                                           128                                                        650 Mbps

VpnGw2                                30                                                           128                                                            1 GbpS

VpnGw3                                30                                                           128                                                        1,25 Gbps

Básico                                   10                                                           128                                                         100 Mbps

Obs.: Cada Gateway possui suas limitações e consequentemente, cobrança diferente. Logo, muito cuidado ao criar um Gateway no Azure.

  • Há uma limitação de 128 Hosts da própria plataforma. Logo, caso tenha a necessidade de ter mais de 128 acessos simultâneos outro Gateway deve ser criado.
  • É possível aproveitar um Gateway de VPN já existente na assinatura. Ou seja, se você possui uma VPN S2S, você pode aproveitar o mesmo gateway para configurar o acesso P2S.
  • A princípio (Nov/2017), esse método de conexão é suportado apenas por computadores Windows. (7/8/8.1 e10)

Bom passada toda a explicação (sua cabeça deve estar cozinhando né? Hahaha) vamos para o Powershell, vamos então criar nossa conexão P2S no Azure.

[Nota: Se você leu o artigo anterior, já estará bem ambientado em criar um Gateway de VPN. Logo, nós vamos aproveitar nossa infra já criada no Azure, OK? Então, dê uma conferida aqui antes de prosseguir.] [1]  Vamos Logar via Powershell, em nossa conta:

[sourcecode language=”powershell”]Login-AzureRmAccount[/sourcecode] [2] Agora, vamos listar os grupos de recurso e os Gateways existentes em nossa assinatura:

[sourcecode language=”powershell”]Get-AzureRmResourceGroup|Select Name
$rg="nome-do-grupo-de-recursos"
#Ex.: $rg="VPN-AZURE"
$location="nome-da-location"
#Ex.: $location="brazilsouth"
Get-AzureRmVirtualNetworkGateway -ResourceGroupName $rg[/sourcecode] [3] Então, vamos declarar algumas variáveis, que irão nos ajudar na criação da conexão P2S:

[sourcecode language=”powershell”] $gwname= "gwvirt"
$vpnclientaddpool= "172.16.10.0/24"
#Obs.: A variável $vpnclientaddpool, deverá armazenar uma faixa de IP’s diferente da faixa existente na VNet e na rede interna.[/sourcecode] [4] Vamos pegar as informações do gateway que iremos utilizar:

[sourcecode language=”powershell”]$gatewayconfig = Get-AzureRmVirtualNetworkGateway -ResourceGroupName $rg -Name $gwname[/sourcecode] [5] Agora, vamos criar a configuração de nossa conexão P2S no Azure, setando essa classe de IP no Gateway:

[sourcecode language=”powershell”]Set-AzureRmVirtualNetworkGateway -VirtualNetworkGateway $gatewayconfig -VpnClientAddressPool $vpnclientaddpool[/sourcecode]

Após a criação dessa configuração, vamos precisar criar 2 certificados (raiz e cliente) para assegurar que nossa conexão com o Azure seja criptografada e que apenas o usuário que possuir esse certificado, conseguirá fechar uma conexão com o ambiente Azure. O certificado é usado para autenticar o cliente quando ele inicia uma conexão de rede virtual. Para criar esses certificados é possível usar as ferramentas: PowerShell (Windows 10), MakeCert ou OpenSSL.

[Nota: Nesse artigo, vou optar por utilizar o Powershell, logo, criaremos esses 2 certificados utilizando os comandos abaixo.]
[6] Gerar o certificado Raiz (Root)

  • Execute o Powershell como administrador. (Shift + Botão Direito Mouse)
  • Vamos criar o certificado raiz, usando o seguinte comando:
[sourcecode language=”powershell”]$cert = New-SelfSignedCertificate -Type Custom -KeySpec Signature -Subject "CN=VPN-AZR-P2S-ROOT" -KeyExportPolicy Exportable -HashAlgorithm sha256 -KeyLength 2048 -CertStoreLocation "Cert:\CurrentUser\My" -KeyUsageProperty Sign -KeyUsage CertSign[/sourcecode] [7] Agora vamos exportar esse certificado para importarmos ele no Azure.

  • Digite na busca/cortana o comando certmgr.msc.

  • Navegue até: Certificados – Usuário Atual / Pessoal / Certificados
  • Ache o certificado em questão (VPN-AZR-P2S-ROOT), clique com o botão direito e vá em: Todas as tarefas / Exportar
  • O Assistente de exportação será iniciado, e logo poderemos exportar nosso certificado raiz auto-assinado.
  • Clique em “Avançar”.

  • Selecione a opção: “NÃO, NÃO EXPORTAR A CHAVE PRIVADA.”
  • Clique em “Avançar”.

  • Selecione a opção: “X.509 Codificado na base 64 (*.cer)”
  • Clique em “Avançar”.

  • Clique em “Procurar” e Salve o arquivo (.cer) em algum diretório em seu computador.
  • Clique em “Avançar”.

  • As informações do certificado serão apresentadas na tela, dê uma conferida.
  • Clique em “Concluir”.

  • E pronto! O Certificado já foi exportado para o diretório que você escolheu!

[8] Gerar o certificado Cliente (Client)

[sourcecode language=”powershell”]#Obs.: Execute esse comando na mesma sessão de Powershell, que você digitou o comando anterior. Utilizaremos algumas informações do certificado Root para gerarmos este certificado client.
New-SelfSignedCertificate -Type Custom -KeySpec Signature -Subject "CN=VPN-AZR-P2S-CLIENT" -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")
#Obs.2: Veja que no parâmetro -Signer, passamos a variável $cert, que carrega as informações de criação do certificado root que criamos no passo anterior.[/sourcecode]

Cada computador cliente que deseja se conectar a uma VPN P2S deve ter o certificado de cliente instalado. Logo, vamos gerar um certificado de cliente com base no certificado raiz auto-assinado e, em seguida, exportamos e instalamos o certificado na máquina que deverá se conectar. Lembre-se: Se o certificado do cliente não estiver instalado, a autenticação falhará.

[8] Vamos agora listar os certificados que geramos em nosso ambiente.

[sourcecode language=”powershell”]Get-ChildItem -Path “Cert:\CurrentUser\My”[/sourcecode] [9] Agora vamos exportar esse certificado para utilizarmos nas máquinas cliente.

  • Digite na busca/cortana o comando certmgr.msc.

  • Navegue até: Certificados – Usuário Atual / Pessoal / Certificados
  • Ache o certificado em questão (VPN-AZR-P2S-CLIENT), clique com o botão direito e vá em: Todas as tarefas / Exportar.

 

 

 

 

 

 

 

 

 

 

  • O Assistente de exportação será iniciado, e logo poderemos exportar nosso certificado raiz auto-assinado.
  • Clique em “Avançar”.

  • Selecione a opção: “SIM, EXPORTAR A CHAVE PRIVADA.”
  • Clique em “Avançar”.

  • Selecione a opção: “Troca de Informações Pessoais – PKCS nº 12 (.PFX,.P12) e outras opções (Confira na Imagem)
  • Clique em “Avançar”.

  • Proteja o arquivo com uma senha (de preferência).
  • Clique em “Avançar”.

  • Clique em “Procurar” e Salve o arquivo (.pfx) em algum diretório em seu computador.
  • Clique em “Avançar”.

  • As informações do certificado serão apresentadas na tela, dê uma conferida.
  • Clique em “Concluir”.

E pronto! O Certificado já foi exportado para o diretório que você escolheu

        

[10] Após criar os certificados, vamos importar esse certificado no Gateway do Azure.

#Obs.: Copie o certificado root (.cer) para um diretório e no C:\.

[sourcecode language=”powershell”]mkdir c:\cert
$filePathForCert = "C:\cert\vpn-azure-p2s-root.cer"
$cert = new-object System.Security.Cryptography.X509Certificates.X509Certificate2($filePathForCert)
$CertBase64 = [system.convert]::ToBase64String($cert.RawData)
$p2srootcert = New-AzureRmVpnClientRootCertificate -Name $certname -PublicCertData $CertBase64
Add-AzureRmVpnClientRootCertificate -VpnClientRootCertificateName vpn-azure-p2s-root.cer -VirtualNetworkGatewayname $gwname -ResourceGroupName $rg -PublicCertData $CertBase64[/sourcecode] [11] Após importar o certificado, ele irá aparecer no Gateway no Azure, conforme imagem abaixo.

[sourcecode language=”powershell”]Get-AzureRmVpnClientPackage -ResourceGroupName $rg -VirtualNetworkGatewayName $gwname -ProcessorArchitecture "Amd64"
#Obs.: Aparecerá a URI de download da conexão de VPN P2S. Selecione essa URI e cole no comando abaixo.
$client = new-object System.Net.WebClient
$client.DownloadFile(“cole-a-uri-aqui”,”C:\vpn-azure-con-p2s.exe”)
#Obs.2.: Exemplo do comando acima: $client.DownloadFile(“https://cq0nfvetwgwmprod.blob.core.windows.net/cmakexe/2e381d71-4cda-4288-b498-a244033da71c/amd64/2e381d71-4cda-4288-b498-a244033da71c.exe?sv=2015-04-05"sr=bsig=sqJqhn4zITBGy%2Bq5xDV%2F4PH4wK0178AJRfJ4X93hbhc%3D&st=2017-11-29T20%3A20%3A36Z&se=2017-11-29T21%3A20%3A36Z&sp=r&fileExtension=.exe”,”C:\vpn-azure-con-p2s.exe”)[/sourcecode]

Após o download o arquivo já estará disponível para uso. (Clique 2x e instale)

[12] Instalação: É bem simples e descomplicada. (O pior já passou! kakakaka)

  • Clique em “Sim”.

  • Automaticamente, o instalador irá criar uma interface de conexão VPN, junto às redes existentes.
  • Clique em “Conectar”, para abrir o assistente de conexão.

  • Clique em “Conectar-se”

  • E pronto! Você já estará conectado ao seu ambiente no Azure, e será possível utilizar e gerir todos os seus recursos de qualquer lugar do MUNDO!

Simples? Fácil? Rápido? (Deixe seu feedback!)

Acho que vai rolar um #PAPODECLOUD hein? (Se der tempo, eu faço e posto aqui! lol)

E num é que rolou um #PAPODECLOUD? HAHAHAHAHA, Dá uma olhada no vídeo:

 

 

Se gostou, compartilhe esse post! (Acho que vale seu compartilhamento, não acha?)

Aguardo você para no próximo post! (Valeu mesmo! Obrigado por acreditar no meu trabalho! #tamojunto)

Um Forte Abraço!

Gustavo Magella

#borapranuvem #cloud4all #uaizure