0 XP
Módulo 6 · AWS, Cloud e Segurança

Security Groups, NACLs e exposição mínima

Intermediário 40 min+25 XPAWS EC2Security Groups

Objetivos desta aula

  • Configurar SG com referência entre grupos
  • Distinguir SG de NACL
  • Auditar exposição da conta

Security Group é firewall com estado, aplicado à interface de rede: você declara o que entra, e a resposta sai automaticamente. NACL é sem estado, aplicada à subnet, e exige regras de ida e volta — usada como camada adicional grosseira, não como controle principal.

A técnica que separa amador de profissional é referenciar SG em vez de CIDR: o SG do banco permite 5432 apenas com origem no SG da aplicação. Assim, quando novas instâncias entram, a permissão acompanha automaticamente e nenhum IP precisa ser mantido à mão.

Auditar exposição deveria ser rotina semanal: procurar regras com 0.0.0.0/0 em portas administrativas ou de banco. Encontrar 22 ou 5432 abertos ao mundo é o achado mais comum — e o mais explorado.

1. Security Group é stateful

Se a entrada foi permitida, a resposta sai automaticamente. SGs só têm regras de allow e se aplicam a interfaces de rede (instância, ALB, RDS).

2. Referenciar SG em vez de IP

A regra do banco diz 'aceito 5432 vindo do SG da API'. Se a API escalar para 50 instâncias, nada muda. Essa é a forma idiomática de encadear camadas.

3. NACL é stateless

Aplica-se à subnet, tem allow e deny numerados e precisa liberar também as portas efêmeras de retorno (1024–65535). Use raramente, como camada extra de bloqueio.

4. Acesso administrativo sem porta 22

O AWS Systems Manager Session Manager abre shell sem SSH, sem bastion e com auditoria. Assim nenhum SG precisa de 22 aberto para a internet.

5. Checagem final

Apenas o ALB aceita 443 da internet; a API aceita só do ALB; o banco só da API.

Na prática

SG referenciando SG e auditoria de exposição

bash

SG_APP=$(aws ec2 create-security-group --group-name cloudshop-app \
  --description "API CloudShop" --vpc-id "$VPC_ID" --query GroupId --output text)
SG_DB=$(aws ec2 create-security-group --group-name cloudshop-db \
  --description "RDS CloudShop" --vpc-id "$VPC_ID" --query GroupId --output text)

# somente o ALB acessa a aplicacao na 3000
aws ec2 authorize-security-group-ingress --group-id "$SG_APP" \
  --protocol tcp --port 3000 --source-group "$SG_ALB"

# somente a aplicacao acessa o banco
aws ec2 authorize-security-group-ingress --group-id "$SG_DB" \
  --protocol tcp --port 5432 --source-group "$SG_APP"

# auditoria: regras abertas ao mundo
aws ec2 describe-security-groups \
  --query 'SecurityGroups[?IpPermissions[?IpRanges[?CidrIp==`0.0.0.0/0`]]].{ID:GroupId,Nome:GroupName}'

Nota de segurança: SSH aberto ao mundo (22 em 0.0.0.0/0) sofre ataque contínuo. Use SSM Session Manager ou bastion com IP restrito.

Cadeia de security groups

text

sg-alb  : inbound 443 de 0.0.0.0/0
sg-api  : inbound 3000 de sg-alb        <- referencia ao SG, nao IP
sg-db   : inbound 5432 de sg-api
(nenhum SG com 22 aberto; acesso via SSM Session Manager)

Encontrar exposições perigosas

bash

aws ec2 describe-security-groups \
  --query "SecurityGroups[?IpPermissions[?IpRanges[?CidrIp=='0.0.0.0/0'] && (FromPort==\`22\` || FromPort==\`5432\`)]].GroupId"
aws ssm start-session --target i-0123456789abcdef0   # shell sem SSH

Nota de segurança: Porta 22 ou de banco aberta para 0.0.0.0/0 é um dos achados mais explorados em ataques automatizados.

Por que isso importa

Este é literalmente o boss do módulo e um dos achados mais comuns em auditoria real.

Erro comum

Liberar 0.0.0.0/0 'temporariamente' para testar e esquecer de fechar.

Dica de produção

Prefira SSM Session Manager a SSH: acesso auditado, sem porta aberta e sem chave para vazar.

Alerta de segurança

Banco acessível pela internet com senha fraca é comprometido em horas por varredura automatizada.

Pergunta de entrevista

Diferencie Security Group e NACL e explique quando usar cada um.

Glossário

stateful
Firewall que rastreia conexões e libera a resposta automaticamente.
referência de SG
Regra cuja origem é outro Security Group, e não um bloco de IPs.
stateful
Lembra conexões; a resposta de um tráfego permitido é liberada automaticamente.
NACL
Lista de controle de acesso stateless aplicada à subnet.
Session Manager
Acesso a instâncias via SSM, sem SSH nem portas abertas.

Conexão com o CloudShop

Fechar o acesso ao banco do CloudShop apenas ao SG da API.

Quiz da aula

  1. 1. Qual origem é correta na regra 5432 do SG do banco?

  2. 2. Qual a forma idiomática de liberar o banco só para a API?

  3. 3. NACL precisa liberar portas de retorno?

Minhas anotações

Salvo automaticamente neste navegador.

AnteriorPróxima