Guia para Construir uma VPC Segura na AWS do Zero
Construa uma VPC segura na AWS com intervalos CIDR planejados, sub-redes públicas e privadas, tabelas de roteamento, NAT, grupos de segurança e logs de fluxo.
Guia para Construir uma VPC Segura na AWS do Zero
Uma VPC da AWS fornece um limite de rede privada para seus recursos na nuvem, mas o formato padrão raramente é suficiente para produção. Se você colocar bancos de dados em sub-redes públicas, reutilizar intervalos CIDR sobrepostos ou abrir regras amplas de grupos de segurança, pode criar problemas difíceis de desfazer posteriormente.
Este guia mostra como construir uma VPC segura na AWS do zero com sub-redes públicas para pontos de entrada, sub-redes privadas para cargas de trabalho de aplicação e banco de dados, tabelas de roteamento, NAT, grupos de segurança e monitoramento básico.
Entendendo os Conceitos Fundamentais da VPC
Antes de mergulhar nas etapas de configuração, é essencial compreender os conceitos fundamentais da VPC da AWS:
- VPC (Virtual Private Cloud): Uma rede virtual dedicada à sua conta AWS. É uma seção logicamente isolada da Nuvem AWS onde você pode iniciar recursos AWS.
- Sub-rede: Um intervalo de endereços IP na sua VPC. Você pode iniciar recursos AWS em sub-redes que criar. As sub-redes são definidas pelo seu bloco CIDR, que é um subconjunto do bloco CIDR da VPC.
- Tabela de Roteamento: Um conjunto de regras, chamadas rotas, usadas para determinar para onde o tráfego de rede da sua sub-rede ou gateway é direcionado.
- Internet Gateway (IGW): Um componente da VPC que permite tráfego roteável pela internet para recursos com endereços IP públicos e uma rota para o gateway.
- NAT Gateway (Network Address Translation): Um serviço NAT altamente disponível e escalável que permite acesso à internet para instâncias em uma sub-rede privada, impedindo conexões de entrada iniciadas pela internet.
- Grupo de Segurança: Atua como um firewall virtual para suas instâncias, controlando o tráfego de entrada e saída. Opera no nível da instância.
- Network Access Control List (NACL): Uma camada opcional de segurança para sua VPC que atua como um firewall para controlar o tráfego de entrada e saída de uma ou mais sub-redes. Opera no nível da sub-rede.
Criação da VPC Passo a Passo
Vamos começar a construir sua VPC segura.
1. Planeje seu Esquema de Endereços IP
O primeiro e mais crítico passo é planejar seu intervalo de endereços IP para a VPC e suas sub-redes. Isso envolve selecionar um bloco Classless Inter-Domain Routing (CIDR) para sua VPC.
Bloco CIDR da VPC: Escolha um intervalo de endereços IP privados que não se sobreponha à sua rede local ou a qualquer outra VPC da AWS à qual você possa se conectar via VPN ou Direct Connect. A AWS recomenda usar intervalos de endereços IP RFC 1918 (10.0.0.0/8, 172.16.0.0/12 ou 192.168.0.0/16). O bloco CIDR pode ser de /16 (65.536 endereços IP) a /28 (16 endereços IP).
- Exemplo:
10.0.0.0/16fornece um grande espaço de endereços para sua VPC.
- Exemplo:
Blocos CIDR das Sub-redes: Divida o bloco CIDR da sua VPC em blocos CIDR menores para suas sub-redes. Certifique-se de que o bloco CIDR de cada sub-rede seja um subconjunto do bloco CIDR da VPC e não se sobreponha a outras sub-redes.
- **Exemplo (se a VPC for
10.0.0.0/16):- Sub-rede Pública 1:
10.0.1.0/24 - Sub-rede Pública 2:
10.0.2.0/24 - Sub-rede Privada 1:
10.0.10.0/24 - Sub-rede Privada 2:
10.0.11.0/24
- Sub-rede Pública 1:
- **Exemplo (se a VPC for
2. Crie sua VPC
Navegue até o painel da VPC no Console de Gerenciamento da AWS e crie uma nova VPC.
- Vá para Painel da VPC > Suas VPCs > Criar VPC.
- Nome da tag: Dê um nome descritivo à sua VPC (ex.:
MinhaVPCSegura). - Bloco CIDR IPv4: Insira o bloco CIDR que você planejou (ex.:
10.0.0.0/16). - Bloco CIDR IPv6: Você pode optar por habilitar um bloco CIDR IPv6, se necessário.
- Locação: Para a maioria dos casos de uso, Padrão é adequado. Dedicada oferece isolamento de hardware a um custo mais alto.
- Clique em Criar VPC.
3. Crie Sub-redes
Agora, crie suas sub-redes públicas e privadas dentro da VPC.
- Vá para Painel da VPC > Sub-redes > Criar sub-rede.
- ID da VPC: Selecione a VPC que você acabou de criar.
- Nome da sub-rede: Forneça um nome (ex.:
MinhaSub-redePublica-AZ1). - Zona de Disponibilidade: Escolha uma Zona de Disponibilidade (AZ). É uma boa prática implantar recursos em várias AZs para alta disponibilidade.
- Bloco CIDR IPv4: Insira o bloco CIDR para esta sub-rede (ex.:
10.0.1.0/24). - Clique em Criar sub-rede.
Repita este processo para criar todas as suas sub-redes públicas e privadas planejadas, garantindo que estejam em Zonas de Disponibilidade diferentes para resiliência.
4. Crie um Internet Gateway (IGW)
Um IGW é necessário para que suas sub-redes públicas acessem a internet.
- Vá para Painel da VPC > Internet Gateways > Criar internet gateway.
- Nome da tag:
MeuInternetGatewayVPC. - Clique em Criar internet gateway.
- Após a criação, selecione o IGW, clique em Ações e escolha Anexar à VPC. Selecione sua VPC e clique em Anexar internet gateway.
5. Crie Tabelas de Roteamento
As tabelas de roteamento direcionam o tráfego dentro da sua VPC. Normalmente, você precisará de pelo menos duas: uma para sub-redes públicas e outra para sub-redes privadas.
a. Tabela de Roteamento Pública:
- Vá para Painel da VPC > Tabelas de Roteamento > Criar tabela de roteamento.
- Nome da tag:
MinhaTabelaDeRoteamentoPublica. - VPC: Selecione sua VPC.
- Clique em Criar tabela de roteamento.
- Selecione a
MinhaTabelaDeRoteamentoPublicarecém-criada. - Na guia Rotas, clique em Editar rotas.
- Clique em Adicionar rota.
- Destino:
0.0.0.0/0(todo o tráfego IPv4). - Alvo: Selecione Internet Gateway e escolha seu IGW.
- Clique em Salvar rotas.
- Associar Sub-redes: Vá para a guia Associações de sub-rede, clique em Editar associações de sub-rede e associe suas sub-redes públicas a esta tabela de roteamento.
b. Tabela de Roteamento Privada (com NAT Gateway):
Para permitir que instâncias em sub-redes privadas iniciem conexões de saída para a internet (ex.: para atualizações de software) sem serem diretamente acessíveis pela internet, você usará um NAT Gateway.
Crie um NAT Gateway:
- Vá para Painel da VPC > NAT Gateways > Criar NAT gateway.
- Nome:
MeuNATGateway. - Sub-rede: Selecione uma de suas sub-redes públicas.
- Tipo de conectividade:
Público. - ID de alocação de IP elástico: Clique em Alocar IP elástico para criar e atribuir um novo endereço IP elástico.
- Clique em Criar NAT gateway.
- Nota: NAT Gateways incorrem em custos. Para conectividade básica de saída, certifique-se de ter endereços IP suficientes disponíveis em sua sub-rede pública para o NAT Gateway..
Crie a Tabela de Roteamento Privada:
- Vá para Painel da VPC > Tabelas de Roteamento > Criar tabela de roteamento.
- Nome da tag:
MinhaTabelaDeRoteamentoPrivada. - VPC: Selecione sua VPC.
- Clique em Criar tabela de roteamento.
- Selecione a
MinhaTabelaDeRoteamentoPrivada. - Na guia Rotas, clique em Editar rotas.
- Clique em Adicionar rota.
- Destino:
0.0.0.0/0. - Alvo: Selecione NAT Gateway e escolha seu NAT Gateway.
- Clique em Salvar rotas.
- Associar Sub-redes: Vá para a guia Associações de sub-rede, clique em Editar associações de sub-rede e associe suas sub-redes privadas a esta tabela de roteamento.
6. Configure Grupos de Segurança
Os Grupos de Segurança atuam como firewalls stateful no nível da instância. Eles permitem ou negam tráfego com base em regras que você define.
- Melhor Prática: Crie grupos de segurança específicos para diferentes tipos de recursos (ex.: servidores web, servidores de banco de dados, servidores de aplicação). Evite usar regras excessivamente permissivas.
Exemplo: Grupo de Segurança para Servidor Web (WebServerSG)
- Vá para Painel da VPC > Grupos de Segurança > Criar grupo de segurança.
- Nome do grupo de segurança:
WebServerSG. - Descrição:
Permitir acesso HTTP e HTTPS. - VPC: Selecione sua VPC.
- Regras de entrada:
- Tipo:
HTTP, Protocolo:TCP, Intervalo de portas:80, Origem:0.0.0.0/0(ou um intervalo de IP confiável mais específico). - Tipo:
HTTPS, Protocolo:TCP, Intervalo de portas:443, Origem:0.0.0.0/0(ou um intervalo de IP confiável mais específico). - (Opcional) Tipo:
SSH, Protocolo:TCP, Intervalo de portas:22, Origem:Seu endereço/intervalo de IP confiável(crucial para gerenciamento).
- Tipo:
- Regras de saída: Por padrão, permitir todo o tráfego de saída (
0.0.0.0/0). Você pode restringir isso, se necessário. - Clique em Criar grupo de segurança.
Exemplo: Grupo de Segurança para Servidor de Banco de Dados (DatabaseSG)
- Crie um novo grupo de segurança chamado
DatabaseSG. - Regras de entrada:
- Adicione uma regra permitindo tráfego na porta padrão do seu banco de dados (ex.:
3306para MySQL,5432para PostgreSQL) apenas do grupo de segurança dos seus servidores de aplicação (ex.:WebServerSGouAppServerSG). - Origem: Selecione Personalizado e digite o ID do grupo de segurança do seu servidor de aplicação.
- Adicione uma regra permitindo tráfego na porta padrão do seu banco de dados (ex.:
- Regras de saída: Normalmente, permitir todo o tráfego de saída.
7. Configure Listas de Controle de Acesso à Rede (NACLs)
As NACLs são firewalls stateless que operam no nível da sub-rede. Elas atuam como uma camada adicional de defesa.
Stateful vs. Stateless: Os Grupos de Segurança são stateful (se você permitir tráfego de entrada, a resposta de saída é automaticamente permitida). As NACLs são stateless (você deve definir explicitamente regras para tráfego de entrada e saída).
Melhor Prática: As NACLs são frequentemente deixadas com configurações padrão, a menos que o controle de acesso no nível da sub-rede seja necessário. Elas podem ser complexas de gerenciar.
Se você precisar usar NACLs:
- Vá para Painel da VPC > Network ACLs > Criar network ACL.
- Nome da tag:
MinhaNacl. - VPC: Selecione sua VPC.
- Clique em Criar network ACL.
- Selecione a NACL e, em Regras de entrada, adicione regras.
- Números das Regras: As NACLs avaliam as regras em ordem, começando com o número de regra mais baixo. Use números como
100,200,300, etc., para permitir a inserção futura de regras. - Permitir/Negar: Especifique se deve permitir ou negar o tráfego.
- Protocolo, Intervalo de Portas, Origem/Destino: Defina os parâmetros de tráfego.
- Lembre-se de configurar as Regras de saída correspondentes.
- Associe a NACL às suas sub-redes indo até a guia Associações de sub-rede.
Cenário de Implantação de Exemplo
Considere uma aplicação web típica:
VPC:
10.0.0.0/16Sub-rede Pública 1 (
us-east-1a):10.0.1.0/24(Associada àMinhaTabelaDeRoteamentoPublicae IGW)Sub-rede Pública 2 (
us-east-1b):10.0.2.0/24(Associada àMinhaTabelaDeRoteamentoPublicae IGW)Sub-rede Privada 1 (
us-east-1a):10.0.10.0/24(Associada àMinhaTabelaDeRoteamentoPrivadae NAT Gateway)Sub-rede Privada 2 (
us-east-1b):10.0.11.0/24(Associada àMinhaTabelaDeRoteamentoPrivadae NAT Gateway)Internet Gateway: Anexado à VPC.
NAT Gateway: Implantado na
Sub-rede Pública 1com um IP elástico.Tabela de Roteamento Pública: Direciona
0.0.0.0/0para o IGW. Associada às Sub-redes Públicas.Tabela de Roteamento Privada: Direciona
0.0.0.0/0para o NAT Gateway. Associada às Sub-redes Privadas.Grupo de Segurança para Balanceadores de Carga (em Sub-redes Públicas): Permite HTTP/HTTPS de
0.0.0.0/0.Grupo de Segurança para Servidores Web (em Sub-redes Privadas): Permite HTTP/HTTPS do SG do Balanceador de Carga e SSH do seu IP confiável.
Grupo de Segurança para Bancos de Dados (em Sub-redes Privadas): Permite MySQL/PostgreSQL do SG do Servidor Web.
Considerações Críticas de Segurança
- Princípio do Menor Privilégio: Conceda apenas as permissões necessárias para seus grupos de segurança e NACLs. Restrinja os endereços IP de origem o máximo possível.
- Use Múltiplas Zonas de Disponibilidade: Distribua suas sub-redes e recursos em várias AZs para alta disponibilidade e recuperação de desastres. Isso é alcançado criando sub-redes em diferentes AZs e associando-as a tabelas de roteamento apropriadas.
- Revise Regularmente Grupos de Segurança e NACLs: À medida que sua aplicação evolui, suas regras de segurança também devem evoluir. Audite e atualize-as periodicamente.
- Evite Sub-redes Públicas para Recursos Sensíveis: Bancos de dados, servidores de aplicação e outros recursos sensíveis devem residir em sub-redes privadas. Apenas recursos que exigem acesso direto à internet (como balanceadores de carga ou hosts bastiões) devem estar em sub-redes públicas.
- Considere Hosts Bastiões: Se você precisar fazer SSH em instâncias em sub-redes privadas, considere usar um host bastião reforçado em uma sub-rede pública. Restrinja o acesso SSH ao host bastião a endereços IP conhecidos.
- VPC Flow Logs: Habilite os VPC Flow Logs para capturar informações sobre o tráfego IP que entra e sai das interfaces de rede em sua VPC. Isso é inestimável para monitoramento de segurança e solução de problemas.
- Segmentação de Rede: Use diferentes VPCs e sub-redes para segmentar ambientes (ex.: desenvolvimento, homologação, produção) e diferentes camadas da sua aplicação.
Conclusão Final
Construa a VPC em torno do fluxo de tráfego: sub-redes públicas devem expor apenas balanceadores de carga, NAT gateways ou acesso bastião rigidamente controlado, enquanto os recursos de aplicação e banco de dados permanecem privados. Após o lançamento, continue revisando grupos de segurança, tabelas de roteamento e VPC Flow Logs para que a rede permaneça alinhada com a forma como sua aplicação realmente funciona.