O blog da AWS
Acessando múltiplas VPCs usando o AWS Client VPN
Marcelo Oliveira, Arquiteto de Soluções, AWS Brasil Setor Público
Ernesto dos Santos (Tito), Arquiteto de Soluções Senior, AWS Brasil Setor Público
Isabela Gherson Monteiro, Arquiteta de Soluções, AWS Brasil Setor Público
Muitas organizações necessitam conectar seus escritórios locais ou virtuais à Amazon Web Services (AWS), afim de acessar seus ambientes em nuvem de maneira segura, e assim cumprirem sua jornada de trabalho.
O serviço AWS VPN fornece uma abordagem simplificada para estes casos de uso, uma vez que faz toda a configuração dos endpoints de VPN de maneira totalmente gerenciada, mantendo escalabilidade, disponibilidade e segurança desta conexão.
Com o serviço AWS VPN é possível estabelecer links de comunicação entre redes a partir do AWS Site-to-Site VPN, ou entre VPN clients e a AWS, a partir do AWS Client VPN.
Seguindo as melhores práticas do AWS Well Architected Framework, é recomendado manter workloads separados em múltiplas contas e ambientes, afim de se praticar uma melhor gestão de recursos, custos, e segurança. E para estes casos, pode ser necessário a configuração de acesso privado a múltiplas VPCs e/ou múltiplas AWS Accounts.
Neste post, explicaremos como realizar a utilização do AWS Client VPN como forma de acesso a rede AWS de maneira segura, criptografada, tendo como origem seu desktop pessoal ou sua estação de trabalho, considerando diferentes cenários.
Considerações iniciais
Antes de iniciarmos o provisionamento de um endpoint de AWS Client VPN, é interessante falarmos um pouco sobre como funciona uma Client-to-Site VPN. Em um cenário como este, trabalhamos com 3 intervalos de rede, onde temos: a rede de origem (usualmente representada pela rede do usuário), a rede transitiva (utilizada pelo AWS Client VPN para o correto direcionamento dos pacotes), e a rede destino (representada pela VPC onde iremos provisionar o nosso endpoint). Esta disposição é necessária por questões de roteamento. Se você quiser saber mais a respeito, veja esta documentação.
Considerando os 3 intervalos de rede mencionados acima, é importante indicar que precisamos respeitar as seguintes regras para que a configuração do AWS Client VPN funcione:
- Os intervalos das seguintes redes não podem se sobrepor (cenário de overlapping):
- Intervalo de rede (CIDR) do usuário
- Intervalo de rede (CIDR) do AWS Client VPN
- Intervalo de rede (CIDR) da VPC destino
- O intervalo de rede (CIDR) utilizado na configuração do AWS Client VPN, também chamado de “Client CIDR range” deve ter um bloco com uma máscara de pelo menos “/22”, e não deve ter uma máscara superior a “/12”.
- Caso você escolha realizar a autenticação das conexões VPN através de certificados digitais, será necessário que o usuário IAM utilizado para a configuração tenha em suas políticas, permissões necessárias para importar certificados no AWS Certificate Manager. Para mais detalhes, veja esta documentação de autenticação mútua.
Cenário 1: Acessando uma VPC usando o AWS Client VPN
Este primeiro cenário demonstra a implementação mais simples de acesso usando o AWS Client VPN, para permitir a comunicação de um usuário (cliente) a uma única VPC, conforme o diagrama abaixo:
Figura 1: Conexão VPN a uma VPC, através de um Client VPN EndPoint
Para essa conexão, será necessário configurar um Endpoint do Client VPN, associa-lo a VPC de destino, e configurar um Security Group o qual tenha uma regra de autorização para permitir que o usuário (client) possa acessar esta VPC.
Provisionando o AWS Client VPN
Faça o login na Console de Gerenciamento da AWS, e em seguida selecione o serviço VPC, conforme a figura abaixo.
Figura 2: Selecionando o serviço VPC através do Console de Gerenciamento
Na sessão “Rede privada virtual (VPN)”, situada no menu à esquerda, selecione “Endpoints de VPN cliente”. Clique então em “Criar endpoint da VPN do cliente”, como mostrado na imagem abaixo:
Figura 3: Iniciando a criação do Endpoint da VPN do Cliente
Na sessão “Detalhes”, vamos adicionar o nome “vpn_cliente” para este novo endpoint. Para a definição da rede transitiva utilizaremos o “CIDR IPV4 do cliente” como sendo “10.110.0.0/22” (este é o intervalo de IPs que será utilizado durante as conexões de VPN).
Figura 4: Detalhes Endpoint da VPN do Cliente
Para garantir maior segurança e integridade às conexões de VPN, é necessário conseguir determinar se os clientes têm permissão para se conectar ao endpoint. Essa validação é feita a partir de uma autenticação mútua (baseada em certificados TLD) ou através de usuários (baseados em Single Sign-On ou Active Directory), o que deve ser configurado na sessão “Informações de autenticação.
Neste blog, utilizaremos o mecanismo de autenticação mútua. Siga o passo-a-passo indicado nesta documentação (Sessão: Autenticação mútua) para criar e importar os dois certificados TLD ao AWS Certificate Manager (ACM). Em seguida, selecione os respectivos ARNs dos certificados recém importados, marcando a check-box “Usar autenticação mútua” nas “Opções de autenticação”.
Figura 5: Informações de Autenticação da Client VPN
Em “Outros parâmetros”, clique na opção “Habilitar split-tunnel“. Esta opção permitirá que você continue utilizando o seu acesso à internet local, ao invés de rotear todo o tráfego de rede do seu computador (dispositivo cliente) para o túnel VPN criado, ou seja, em direção à AWS.
Em seguida clique em “Criar endpoint da VPN do cliente”.
Figura 6: Habilitando split-tunnel na Client VPN
Após a criação do endpoint seu estado ficará como “pendente“, aguardando a associação das subnets que serão utilizadas. Acesse então a aba “Associações de rede de destino”, clicando em seguida em “Associar rede de destino”:
Figura 7: Associando a(s) rede(s) de destino ao Client VPN
Na opção abaixo, adicione todas as subnets as quais você deseja que se tornem acessíveis a partir de sua conexão Client VPN.
Figura 8: Configurando as subnets acessíveis através da Client VPN
Na aba “Grupos de segurança”, associe os grupos que permitem o acesso aos destinos a serem utilizados a partir desta conexão de Client VPN.
Figura 9: Associando grupo(s) de segurança(s) ao endpoint criado
Na aba “Regras de autorização”, adicione as redes de destino que você deseja ter acesso. Você deve ter uma regra de autorização para cada rede à qual deseja conceder acesso, ou adicionar 0.0.0.0/0 para todas as redes.
Clique então em “Adicionar regras de autorização”.
Figura 10: Adicionando as regras de autorização
Testando a Conexão
Faça o download das configurações da Client VPN, clicando em “Baixar configuração do cliente”:
Figura 11: Baixando as configuração da Client VPN
Edite o arquivo de configuração recém baixado em seu computador (usualmente nomeado como “downloaded-client-config”), adicione então duas novas linhas, onde você especificará o caminho dos certificados criados anteriormente em autenticação mútua.
O resultado da edição ficará conforme abaixo, evidenciado no quadro vermelho. Neste exemplo, os dois certificados criados estão no diretório “C:\vpn”. Repare que as barras invertidas devem ser indicadas de maneira duplicada “\\”.
Salve então o arquivo.
Figura 12: Adicionando ao arquivo de configuração do Client VPN, os caminhos dos certificados anteriormente criados
Para se conectar ao endpoint de Client VPN, você precisará realizar o download de um cliente VPN da sua escolha (o cliente escolhido precisa suportar o padrão “open-vpn“).
Neste tutorial iremos utilizar o AWS VPN Client, a partir de uma estação rodando Microsoft Windows:
Figura 13: Utilizando o AWS VPN Client para se conectar ao endpoint de Client VPN recém configurado
Após a instalação do AWS VPN Client, será necessário configurar um perfil com a localização do arquivo de configuração recém-baixado e editado conforme acima (arquivo “downloaded-client-config.ovpn”). Para isso, acesse as configurações File → Manage Profiles e clique em “Add Profile”, conforme abaixo.
Figura 14: Configurando um Perfil de acesso usando o AWS VPN Client
Adicione um nome para o seu perfil no campo “Display Name”, selecionando em seguida no campo “VPN Configuration File”, o local do arquivo de configuração anteriormente baixado e editado. Feito isso clique em “Add Profile” (Figura 15a). Em seguida clique em “Done” (Figura 15b). Na sequencia, clique em “Connect” (Figura 15c).
Figura 15a: Configurando o nome do perfil, e a localização do arquivo de configuração
Figura 15b: Confirmando a criação do perfil recém configurado
Figura 15c: Conectando-se ao endpoint do AWS Client VPN, através do perfil recém configurado
Para que você possa verificar as conexões ativas, acesse a aba “Conexões” a partir da console AWS. No exemplo abaixo podemos observar a nossa conexão recém configurada nos passos anteriores, com o status “Active”.
Figura 16: Validando as conexões ativas, a partir da console do AWS Client VPN
Cenário 2: Acessando uma VPC emparelhada através do AWS Client VPN
Segundo o AWS Well Architected Framework, temos como uma melhor prática manter workloads diferentes isolados a nível de VPC, ou até de contas AWS distintas. Esta prática trás uma melhor gestão de recursos, custos, e também de segurança. Dessa forma, existem muitos cenários onde faz-se necessário o acesso seguro a mais de uma VPC na AWS. Vamos então demonstrar como é possível fazer o uso de maneira otimizada do AWS Client VPN, afim de atender este cenário, através do uso do Emparelhamento de VPCs, conforme ilustrado na figura a seguir:
Figura 17: Conexão a uma VPC emparelhada através do Client VPN
Afim de testar esse passo a passo, crie uma nova VPC, a qual neste tutorial daremos o nome de “VPC B”. É importante termos atenção para que o CIDR escolhido para a “VPC B” não faça overlap com o já utilizado na “VPC A”.
Figura 18: “VPC B” recém criada para o nosso cenário
Emparelhando as VPCs
É possível configurar conectividade privada entre as VPCs de duas principais formas: via VPC Peering, ou utilizando-se o serviço AWS Transit Gateway.
O recurso de peering representa uma conectividade não transitiva, sem custo e ideal em cenários onde exista a necessidade de se interconectar um pequeno número de VPCs.
Caso exista a necessidade de se interconectar um número maior de VPCs, recomenda-se o uso do serviço AWS Transit Gateway, o qual suporta o estabelecimento de uma conectividade transitiva entre as VPCs envolvidas, simplificando o processo de configuração de comunicação (roteamento) entre os ambientes multi-account, e/ou com múltiplas redes na AWS.
Neste nosso cenário, onde há um número reduzido de VPCs, iremos realizar um Peering Connetion entre as duas VPCs envolvidas (Figura 18).
Consideraremos em nosso cenário de testes, que já possuímos o peering configurado entre as VPCs A e B (Figura 19).
Figura 19: Peering configurado entre as VPCs A e B
A partir deste ponto, precisaremos realizar a autorização desta nova rede (10.2.0.0/24) em nosso Client VPN Endpoint.
Utilizando-se do menu esquerdo da console do serviço AWS VPC, clicamos em “Endpoints de VPN cliente”. Como precisaremos adicionar uma nova Regra de autorização, para a nova VPC “VPC B” criada, clicamos em “Adicionar Regra de Autorização” (Figura 20a).
Figura 20a: Adicionando uma nova regra de autorização ao Endpoint da VPN Cliente
No formulário de adição de regras, em “Rede de destino para permitir acesso” digite o CIDR da nova “VPC B” (10.2.0.0/24). Deixe os outros parâmetros com os valores padrão, pois neste exemplo não restringiremos o acesso a usuários específicos.
Figura 20b: Incluindo o CIDR que iremos permitir tráfego através da VPN Client
Conforme podemos ver na figura abaixo, temos as duas VPCs autorizadas em nosso Endpoint da VPN Cliente (Figura 20c).
Figura 20c: Regras de autorização configuradas
Agora precisamos adicionar duas novas Tabelas de rotas, pois estas não são adicionadas automaticamente, já que o Client VPN não está configurado nesta nova VPC “VPC B”. Clicamos então em “Criar rota” (Figura 20d).
Figura 20d: Adicionando rotas ao VPN Client
No formulário de criação de rotas, em “Destino da rota” digite o CIDR da nova “VPC B” (10.2.0.0/24). No campo “ID da sub-rede para associação da rede de destino”, selecione a subnet desejada (Figura 20e).
Nota: Este procedimento de criação precisa ser realizado para todas as subnets as quais você deseja atingir/alcançar.
Figura 20e: Criando rotas ao VPN Client Endpoint
Abaixo podemos verificar como ficou a configuração completa, com todas as rotas desejadas tendo sido criadas (Figura 20f).
Figura 20f: Rotas criadas em nosso VPN Client Endpoint.
Conclusão
A partir deste ponto, podemos testar a conectividade entre a estação cliente, e ambas as VPCs A e B através de nossa conexão VPN.
Os dois cenários mostrados podem ser utilizados como referência para adaptações em outros cenários possíveis, como por exemplo: contemplar ambientes de múltiplas VPCs, e múltiplas contas AWS.
No decorrer deste blogpost tivemos a oportunidade de verificar como a tarefa de configuração e gestão de conexões seguras através do conceito de Client-to-Site VPN se torna simples, com a utilização do serviço AWS Client VPN.
Sobre os Autores
Marcelo Oliveira é Arquiteto de Soluções para Parceiros na AWS, apoiando parceiros do setor público em sua jornada para a nuvem AWS. Tem foco em projetos que envolvam arquiteturas distribuídas e escaláveis, além de grande interesse na área de infraestrutura, networking e segurança da informação. | |
Isabela Gherson Monteiro é Arquiteta de Soluções na AWS e atua hoje com foco no setor educacional ajudando EdTechs a construirem suas soluções seguindo as melhores práticas na nuvem AWS. Apresenta grande entusiasmo pelas áreas de Analytics e Inteligência Artificial. | |
Ernesto dos Santos (Tito) é Arquiteto de Soluções para Parceiros na AWS, apoiando parceiros do setor público de saúde em sua jornada para a nuvem AWS. Tem foco em projetos que envolvam arquiteturas distribuídas e escaláveis, além de grande interesse na área de segurança da informação, infraestrutura, networking e serverless. |