Guia para Construir uma VPC Segura na AWS do Zero
A Amazon Web Services (AWS) Virtual Private Cloud (VPC) é um bloco de construção fundamental para implantar aplicações e recursos na nuvem. Ela fornece uma seção logicamente isolada da Nuvem AWS onde você pode lançar recursos da AWS em uma rede virtual que você define. Construir uma VPC segura do zero é crucial para proteger seus dados e aplicações contra acesso não autorizado. Este guia irá guiá-lo pelas etapas essenciais de projeto e configuração de uma nova VPC, cobrindo componentes chave como sub-redes, tabelas de rotas e considerações críticas de segurança para segmentação e isolamento de rede ideais.
Uma VPC bem projetada é a base de uma infraestrutura de nuvem segura. Ela permite controlar seu ambiente de rede, definir regras de acesso e segmentar seus recursos com base em sua sensibilidade e função. Ao planejar e implementar sua VPC cuidadosamente, você pode melhorar significativamente a postura de segurança de sua implantação na AWS, reduzindo a superfície de ataque e prevenindo a exposição involuntária de dados. Este guia irá equipá-lo com o conhecimento para criar uma VPC robusta e segura, adaptada às suas necessidades específicas.
Entendendo os Conceitos Centrais da VPC
Antes de mergulhar nas etapas de configuração, é essencial compreender os conceitos fundamentais da AWS VPC:
- VPC (Virtual Private Cloud): Uma rede virtual dedicada à sua conta AWS. É uma seção logicamente isolada da Nuvem AWS onde você pode lançar recursos da AWS.
- Sub-rede (Subnet): Um intervalo de endereços IP dentro da sua VPC. Você pode lançar recursos da AWS em sub-redes que você cria. As sub-redes são definidas pelo seu bloco CIDR, que é um subconjunto do bloco CIDR da VPC.
- Tabela de Rotas (Route Table): Um conjunto de regras, chamadas rotas, usadas para determinar para onde o tráfego de rede da sua sub-rede ou gateway deve ser direcionado.
- Internet Gateway (IGW): Um componente da VPC que permite a comunicação entre sua VPC e a internet. Ele possibilita que instâncias na sua VPC se conectem à internet e vice-versa.
- 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, enquanto impede conexões de entrada iniciadas pela internet.
- Security Group (Grupo de Segurança): Funciona como um firewall virtual para suas instâncias para controlar o tráfego de entrada e saída. Opera no nível da instância.
- Network Access Control List (NACL - Lista de Controle de Acesso de Rede): Uma camada opcional de segurança para sua VPC que atua como um firewall para controlar o tráfego que entra e sai de uma ou mais sub-redes. Opera no nível da sub-rede.
Criação Passo a Passo da VPC
Vamos começar a construir sua VPC segura.
1. Planeje Seu Esquema de Endereçamento IP
A primeira e mais crítica etapa é 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 (on-premises) ou a qualquer outra VPC da AWS à qual você possa se conectar via VPN ou Direct Connect. A AWS recomenda o uso dos intervalos de IP RFC 1918 (10.0.0.0/8, 172.16.0.0/12 ou 192.168.0.0/16). O bloco CIDR pode variar 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çamento para sua VPC.
- Exemplo:
-
Blocos CIDR de Sub-rede: Divida o bloco CIDR da sua VPC em blocos CIDR menores para suas sub-redes. Garanta 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.
- Acesse Painel da VPC > Suas VPCs > Criar VPC.
- Tag de Nome: Dê um nome descritivo à sua VPC (exemplo:
MinhaVPCSegura). - Bloco CIDR IPv4: Insira o bloco CIDR que você planejou (exemplo:
10.0.0.0/16). - Bloco CIDR IPv6: Você pode optar por habilitar um bloco CIDR IPv6, se necessário.
- Tenancy (Residência): Para a maioria dos casos de uso, Padrão (Default) é adequado. Dedicado (Dedicated) oferece isolamento de hardware a um custo maior.
- Clique em Criar VPC.
3. Crie Sub-redes
Agora, crie suas sub-redes públicas e privadas dentro da VPC.
- Acesse 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 (exemplo:
MinhaSubRedePublica-AZ1). - Zona de Disponibilidade (AZ): 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 (exemplo:
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 elas 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.
- Acesse Painel da VPC > Internet Gateways > Criar internet gateway.
- Tag de Nome:
MeuInternetGatewayVPC. - Clique em Criar internet gateway.
- Após a criação, selecione o IGW, clique em Ações e escolha Anexar à VPC (Attach to VPC). Selecione sua VPC e clique em Anexar internet gateway.
5. Crie Tabelas de Rotas
As tabelas de rotas direcionam o tráfego dentro da sua VPC. Você normalmente precisará de pelo menos duas: uma para sub-redes públicas e outra para sub-redes privadas.
a. Tabela de Rotas Pública:
- Acesse Painel da VPC > Tabelas de Rotas > Criar tabela de rotas.
- Tag de Nome:
MinhaTabelaRotasPublica. - VPC: Selecione sua VPC.
- Clique em Criar tabela de rotas.
- Selecione a
MinhaTabelaRotasPublicarecém-criada. - Na aba Rotas, clique em Editar rotas.
- Clique em Adicionar rota.
- Destino:
0.0.0.0/0(todo o tráfego IPv4). - Alvo (Target): Selecione Internet Gateway e escolha seu IGW.
- Clique em Salvar rotas.
- Associar Sub-redes: Vá para a aba Associações de Sub-rede, clique em Editar associações de sub-rede e associe suas sub-redes públicas a esta tabela de rotas.
b. Tabela de Rotas 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 acessíveis diretamente pela internet, você usará um NAT Gateway.
-
Crie um NAT Gateway:
- Acesse 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 geram custos. Para conectividade de saída básica, garanta que você tenha endereços IP suficientes disponíveis em sua sub-rede pública para o NAT Gateway.
-
Crie a Tabela de Rotas Privada:
- Acesse Painel da VPC > Tabelas de Rotas > Criar tabela de rotas.
- Tag de Nome:
MinhaTabelaRotasPrivada. - VPC: Selecione sua VPC.
- Clique em Criar tabela de rotas.
- Selecione a
MinhaTabelaRotasPrivada. - Na aba Rotas, clique em Editar rotas.
- Clique em Adicionar rota.
- Destino:
0.0.0.0/0. - Alvo (Target): Selecione NAT Gateway e escolha seu NAT Gateway.
- Clique em Salvar rotas.
- Associar Sub-redes: Vá para a aba Associações de Sub-rede, clique em Editar associações de sub-rede e associe suas sub-redes privadas a esta tabela de rotas.
6. Configure Grupos de Segurança
Os Grupos de Segurança atuam como firewalls com estado no nível da instância. Eles permitem ou negam tráfego com base nas regras que você define.
- Melhor Prática: Crie grupos de segurança específicos para diferentes tipos de recursos (exemplo: servidores web, servidores de banco de dados, servidores de aplicação). Evite usar regras excessivamente permissivas.
Exemplo: Grupo de Segurança de Servidor Web (WebServerSG)
- Acesse 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 (Inbound rules):
- 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 (Outbound rules): Por padrão, permita 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 de 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 (exemplo:
3306para MySQL,5432para PostgreSQL) apenas do grupo de segurança dos seus servidores de aplicação (exemplo:WebServerSGouAppServerSG). - Origem: Selecione Personalizado (Custom) e digite o ID do seu grupo de segurança de servidor de aplicação.
- Adicione uma regra permitindo tráfego na porta padrão do seu banco de dados (exemplo:
- Regras de saída: Normalmente, permita todo o tráfego de saída.
7. Configure Listas de Controle de Acesso de Rede (NACLs)
NACLs são firewalls sem estado que operam no nível da sub-rede. Elas atuam como uma camada adicional de defesa.
-
Com Estado vs. Sem Estado: Grupos de Segurança têm estado (se você permitir tráfego de entrada, a resposta de saída é automaticamente permitida). NACLs não têm estado (você deve definir explicitamente regras tanto para o tráfego de entrada quanto para o de saída).
-
Melhor Prática: NACLs são frequentemente deixadas com configurações padrão, a menos que seja necessário um controle de acesso específico no nível da sub-rede. Elas podem ser complexas de gerenciar.
Se você precisar usar NACLs:
- Acesse Painel da VPC > Network ACLs > Criar network ACL.
- Tag de Nome:
MinhaNacl. - VPC: Selecione sua VPC.
- Clique em Criar network ACL.
- Selecione a NACL e, em Regras de Entrada (Inbound Rules), adicione regras.
- Números de Regra: NACLs avaliam as regras em ordem, começando pela regra de menor número. Use números como
100,200,300, etc., para permitir a inserção futura de regras. - Permitir/Negar (Allow/Deny): 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 (Outbound Rules) correspondentes.
- Associe a NACL às suas sub-redes navegando até a aba Associações de Sub-rede (Subnet Associations).
Cenário de Implantação de Exemplo
Considere uma aplicação web típica:
- VPC:
10.0.0.0/16 - Sub-rede Pública 1 (
us-east-1a):10.0.1.0/24(Associada àMinhaTabelaRotasPublicae IGW) - Sub-rede Pública 2 (
us-east-1b):10.0.2.0/24(Associada àMinhaTabelaRotasPublicae IGW) - Sub-rede Privada 1 (
us-east-1a):10.0.10.0/24(Associada àMinhaTabelaRotasPrivadae NAT Gateway) -
Sub-rede Privada 2 (
us-east-1b):10.0.11.0/24(Associada àMinhaTabelaRotasPrivadae NAT Gateway) -
Internet Gateway: Anexado à VPC.
- NAT Gateway: Implantado na
Sub-rede Pública 1com um IP Elástico. - Tabela de Rotas Pública: Direciona
0.0.0.0/0para o IGW. Associada às Sub-redes Públicas. -
Tabela de Rotas Privada: Direciona
0.0.0.0/0para o NAT Gateway. Associada às Sub-redes Privadas. -
Grupo de Segurança para Load Balancers (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 Load Balancer, 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 por várias AZs para alta disponibilidade e recuperação de desastres. Isso é alcançado criando sub-redes em AZs diferentes e associando-as às tabelas de rotas 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 bastion hosts) devem estar em sub-redes públicas.
- Considere Bastion Hosts: Se você precisar fazer SSH em instâncias em sub-redes privadas, considere usar um bastion host endurecido (hardened) em uma sub-rede pública. Restrinja o acesso SSH ao bastion host a endereços IP conhecidos.
- VPC Flow Logs: Habilite os Logs de Fluxo da VPC para capturar informações sobre o tráfego IP que vai e vem 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 (exemplo: desenvolvimento, staging, produção) e diferentes camadas da sua aplicação.
Conclusão
Construir uma VPC segura na AWS do zero envolve planejamento cuidadoso e configuração de seus componentes centrais. Ao entender os blocos CIDR, sub-redes, tabelas de rotas e ao alavancar grupos de segurança e NACLs de forma eficaz, você pode estabelecer um ambiente de rede robusto e isolado para seus recursos AWS. Lembre-se de que a segurança é um processo contínuo, portanto, monitoramento contínuo, revisão e adesão às melhores práticas são fundamentais para manter uma infraestrutura de nuvem segura.