Volver a artículos
security-compliance12 min de lectura2025-12-11

Security Groups vs NACLs

Comprende las diferencias entre los dos niveles de firewall en AWS VPC.

Security GroupsNACLfirewallVPCseguridad de redstatefulstateless

1Dos Niveles de Firewall

AWS proporciona dos mecanismos de seguridad de red en VPC:

  1. Security Groups (SG): Firewall a nivel de instancia (ENI)
  2. Network ACLs (NACL): Firewall a nivel de subred

Ambos trabajan juntos para proteger tus recursos, pero funcionan de manera diferente.

Internet
    │
    ▼
[Internet Gateway]
    │
    ▼
┌───────────────────────┐
│  Subred Pública       │ ◄── NACL (primer filtro)
│  ┌─────────────────┐  │
│  │    EC2          │  │ ◄── Security Group (segundo filtro)
│  └─────────────────┘  │
└───────────────────────┘

2Security Groups

¿Qué son?

Firewalls virtuales a nivel de interfaz de red (ENI). Controlan el tráfico de entrada y salida de instancias.

Características clave:

CaracterísticaDescripción
NivelInstancia (ENI)
EstadoStateful (con estado)
ReglasSolo ALLOW
EvaluaciónTodas las reglas se evalúan
DefaultDeny todo inbound, Allow todo outbound

Stateful significa:

Si permites tráfico de entrada, la respuesta sale automáticamente (y viceversa).

Ejemplo:

  • Regla inbound: Allow TCP 443 desde 0.0.0.0/0
  • La respuesta del servidor (salida) está automáticamente permitida
  • No necesitas regla outbound explícita para la respuesta

Sintaxis de reglas:

Inbound (entrada):

TypeProtocolPort RangeSource
HTTPSTCP4430.0.0.0/0
SSHTCP2210.0.0.0/16
CustomTCP3000sg-abc123 (otro SG)

Outbound (salida):

TypeProtocolPort RangeDestination
All trafficAllAll0.0.0.0/0

3Network ACLs (NACLs)

¿Qué son?

Firewalls a nivel de subred. Todo el tráfico que entra o sale de la subred pasa por la NACL.

Características clave:

CaracterísticaDescripción
NivelSubred
EstadoStateless (sin estado)
ReglasALLOW y DENY
EvaluaciónEn orden numérico
DefaultAllow todo (NACL por defecto)

Stateless significa:

Debes definir reglas tanto para entrada como para salida explícitamente.

Ejemplo:

  • Para permitir HTTP: necesitas regla inbound puerto 80 Y regla outbound puertos efímeros (1024-65535)

Sintaxis de reglas:

Inbound:

Rule #TypeProtocolPortSourceAllow/Deny
100HTTPTCP800.0.0.0/0ALLOW
110HTTPSTCP4430.0.0.0/0ALLOW
*AllAllAll0.0.0.0/0DENY

Outbound:

Rule #TypeProtocolPortDestinationAllow/Deny
100CustomTCP1024-655350.0.0.0/0ALLOW
*AllAllAll0.0.0.0/0DENY

Evaluación por número:

Las reglas se evalúan en orden numérico ascendente. La primera que hace match se aplica.

Ejemplo:

  • Rule 100: DENY SSH desde 1.2.3.4
  • Rule 110: ALLOW SSH desde 0.0.0.0/0
  • Resultado: SSH denegado solo para 1.2.3.4, permitido para el resto

4Comparación Detallada

Security Groups vs NACLs

AspectoSecurity GroupNACL
Aplica aInstancia (ENI)Subred
Stateful✅ Sí❌ No
Tipos de reglaSolo AllowAllow y Deny
Regla defaultDeny implícitoAllow all (NACL default)
EvaluaciónTodas las reglasPrimera que hace match
AsociaciónMúltiples SG por instanciaUna NACL por subred
CambiosEfecto inmediatoEfecto inmediato

Cuándo usar cada uno:

Security Groups (uso principal):

  • Control granular por instancia
  • Reglas basadas en otros Security Groups
  • La mayoría de casos de uso

NACLs:

  • Bloquear IPs específicas (deny rules)
  • Capa adicional de defensa
  • Control a nivel de subred

5Patrones Comunes

Patrón: Web Server

Security Group "web-sg":

Inbound:
- HTTP (80) desde 0.0.0.0/0
- HTTPS (443) desde 0.0.0.0/0
- SSH (22) desde 10.0.0.0/16 (solo VPC)

Outbound:
- All traffic to 0.0.0.0/0

Patrón: Base de Datos

Security Group "db-sg":

Inbound:
- MySQL (3306) desde web-sg (referencia al SG del web server)

Outbound:
- All traffic to 0.0.0.0/0

La referencia a otro SG es poderosa: permite tráfico de cualquier instancia que tenga ese SG, sin importar su IP.

Patrón: Bloquear IP Maliciosa

NACL (para bloquear 1.2.3.4):

Rule 50: DENY All from 1.2.3.4/32
Rule 100: ALLOW HTTPS from 0.0.0.0/0
...

Usamos NACL porque Security Groups no permiten DENY.

6Default Security Group vs Custom

Default Security Group (creado con la VPC)

Inbound:

  • Allow todo desde instancias con el mismo SG

Outbound:

  • Allow todo hacia 0.0.0.0/0

⚠️ El default SG permite comunicación entre todas las instancias que lo usan. Crea SGs personalizados para control granular.

Default NACL (creada con la VPC)

Inbound:

  • Rule *: ALLOW all from 0.0.0.0/0

Outbound:

  • Rule *: ALLOW all to 0.0.0.0/0

La NACL por defecto permite todo. Al crear NACLs custom, el default es DENY todo.

Custom NACL (cuando creas una nueva)

Inbound:

  • Rule *: DENY all

Outbound:

  • Rule *: DENY all

Debes agregar reglas explícitas para permitir tráfico.

7En el Examen CLF-C02

Puntos clave:

  1. Security Groups: Stateful, nivel de instancia, solo Allow
  2. NACLs: Stateless, nivel de subred, Allow y Deny
  3. Stateful: Respuesta automática permitida
  4. Stateless: Necesitas reglas explícitas en ambas direcciones
  5. Para bloquear IPs: Usa NACL (tiene Deny)
  6. Referencia entre SGs: Permite tráfico por grupo, no por IP

Preguntas típicas:

"¿Qué firewall opera a nivel de subred?" → Network ACL (NACL)

"¿Cómo bloquear una IP específica en VPC?" → NACL con regla DENY

"¿Por qué no necesito regla outbound en Security Group si permito inbound?" → Porque es stateful, la respuesta sale automáticamente

"¿Qué sucede si quiero permitir tráfico solo desde mis servidores web a mi base de datos?" → En el SG de la DB, permite tráfico desde el SG del web server

"¿En qué orden se evalúan las reglas de NACL?" → En orden numérico ascendente

Puntos Clave para el Examen

  • Security Groups: Nivel instancia, stateful, solo Allow
  • NACLs: Nivel subred, stateless, Allow y Deny
  • Stateful: Respuesta automática (no necesita regla outbound)
  • Stateless: Necesitas reglas en ambas direcciones
  • Para bloquear IPs: NACL (única opción con Deny)
  • SG puede referenciar otro SG (tráfico por grupo)
  • NACL evalúa reglas en orden numérico
AprobaYa - Prepárate para tus Certificaciones