Cuando comienzas tu camino en el mundo Cloud, especialmente en AWS, uno de los conceptos que suele generar más confusión —sobre todo para quienes no vienen del ámbito de networking— es entender cómo funcionan los Security Groups (SG) y las Network ACLs (NACLs).
Ambos forman parte esencial de la capa de seguridad dentro de una VPC, pero cumplen roles distintos, operan en niveles diferentes y, sobre todo, no se comportan igual.
Es muy común que los principiantes los confundan o los utilicen de manera incorrecta. Esta confusión puede provocar problemas de conectividad, fallas inesperadas entre servicios o, peor aún, brechas en la seguridad del entorno. Por eso, comprender claramente su propósito, su ámbito de aplicación y la diferencia entre stateful y stateless es fundamental para diseñar arquitecturas seguras y mantener un control adecuado del tráfico en AWS.
✔️ En este artículo analizaremos en detalle:
- Qué son los Security Groups y cómo operan a nivel de instancia/ENI.
- Qué son las Network ACLs y cómo actúan como firewalls de subred.
- Qué significa que algo sea stateful o stateless, y por qué esto cambia totalmente el comportamiento del tráfico.
- Cuándo usar uno, cuándo usar el otro y cuándo usar ambos para una estrategia de defense in depth.
- Ejemplos reales de configuraciones y errores comunes que suelen encontrarse en entornos productivos.
El objetivo es que, al finalizar esta lectura, tengas una visión clara y práctica para aplicar estos conceptos en tus propios proyectos en AWS sin caer en las confusiones típicas del inicio.
✔️ ¿Qué es un Security Group (SG)?
Son un conjunto de reglas, que controla que trafico de red puede entrar o salir de nuestras cargas de trabajo. Es el mecanismo de defensa mas cercano a nuestras cargas de trabajo.
✔️ Características clave
- Es stateful.
- Se aplica a nivel de recursos (EC2, RDS, Lambda ENI, etc.).
- Reglas de inbound y outbound.
- Permite reglas evaluando otros security group, IP o rangos de Ips.
- Solo se puede permitir trafico.
✔️ Ejemplo de uso
- Permitir solo tráfico HTTP/HTTPS a un servidor web.
- Permitir acceso SSH solo desde una IP fija.
✔️ Statefull
Es un concepto fundamental para comprender el comportamiento del tráfico en los Security Groups (SG).
Cuando decimos que los SG son stateful, nos referimos a que tienen la capacidad de recordar el estado de una conexión. Esto significa que, si en una regla —ya sea inbound o outbound— se permite un tipo de tráfico, no es necesario crear una regla adicional para permitir su retorno.
En palabras más simples:
Si permito la salida desde mi máquina hacia un destino, entonces la respuesta asociada a ese tráfico queda automáticamente permitida.
Y si permito la entrada de cierto tráfico, la salida de retorno también queda permitida sin definir reglas adicionales.
Es decir, los Security Groups se encargan automáticamente del flujo bidireccional asociado a una conexión legítima, simplificando la configuración y reduciendo errores.
✔️ ¿Qué es una Network Control Access List (NACLs)?
Una NACL es una lista de control de acceso a nivel de subred (Subnet) dentro de una VPC.
Actúa como un firewall stateless que filtra el tráfico que entra y sale de cada subnet.
Piensa en la NACL como una frontera que protege la red antes de que el tráfico llegue a las instancias.
✔️ Características clave
- Es stateless.
- Se procesa ordenadamente por número de regla.
- Requiere reglas explícitas tanto para entrada como salida.
- Puede permitir o denegar tráfico.
- Se aplica a subnets completas.
✔️ Ejemplo de uso
- Bloquear tráfico no deseado a una subnet completa.
- Limitar puertos específicos antes de que lleguen a los SG.
✔️ Stateless
A diferencia de los Security Groups, las Network ACLs (NACLs) en AWS son stateless, y este concepto es clave para entender por qué requieren una configuración más precisa —y a veces más compleja— a la hora de permitir o denegar tráfico dentro de una VPC.
Cuando decimos que las NACLs son stateless, nos referimos a que no tienen la capacidad de recordar el estado de una conexión. No rastrean ni reconocen que un paquete pertenece a una sesión ya establecida.
Esto implica algo muy importante:
Cada dirección del tráfico debe ser permitida explícitamente.
En palabras más simples:
Si permites la entrada de cierto tráfico en una NACL, esto NO implica que la salida de retorno esté permitida.
Y si permites la salida hacia un destino, la respuesta tampoco estará permitida automáticamente.
Debes crear dos reglas independientes: una para el trafico de ida y otra para el tráfico de vuelta.
Esto significa que, en una NACL, permitir tráfico implica siempre pensar en ambos sentidos, porque la NACL no hará ninguna “magia” adicional como sí ocurre con los SG.
✔️ Comparación rápida: NACL vs Security Group
✔️ Puertos Efimeros (ojo importante a esto)
Los puertos efímeros son puertos temporales que usa el sistema operativo para establecer conexiones salientes.
Cuando una instancia, contenedor o servicio envía una solicitud hacia otro destino, el tráfico de ida utiliza el puerto específico del servicio (por ejemplo, 443), pero la respuesta vuelve por un puerto efímero.
Ejemplo típico:
La EC2 inicia conexión al puerto 443 de un servidor externo.
El servidor responde, pero la respuesta llega a un puerto aleatorio, como por ejemplo TCP 49152.
Estos puertos se asignan de forma automática y varían según el sistema operativo, pero normalmente están en rangos como:
1024 – 65535 (Linux)
49152 – 65535 (rango IANA recomendado)
✔️ Cómo afectan los puertos efímeros a las NACLs y SG
SG: Como vimos, los Security Groups son stateful, lo que significa que el sistema reconoce automáticamente que una respuesta forma parte de una conexión válida ya establecida. Gracias a este comportamiento, no es necesario configurar reglas adicionales para permitir el tráfico de retorno: si la conexión fue permitida en un sentido, la respuesta quedará permitida de forma automática.
En otras palabras, los SG gestionan de forma transparente el flujo bidireccional asociado a cada conexión, simplificando la configuración y reduciendo enormemente el riesgo de errores.
NACLs: En el caso de las NACLs, como vimos, son completamente stateless, lo que significa que no recuerdan ninguna conexión. Debido a esto, debes tener especial cuidado al configurar reglas: si permites tráfico en un sentido, debes permitir explícitamente el tráfico de respuesta en el sentido contrario.
Y aquí es donde entra en juego un punto clave:
La mayoría de los servicios no responden usando el mismo puerto al que te conectaste, sino que utilizan puertos efímeros para enviar la respuesta. Si no tienes un patrón específico de puertos definidos y no habilitas el rango de puertos efímeros adecuado, la respuesta será bloqueada por la NACL, incluso si la regla de ida está correctamente configurada.
Por eso, al trabajar con NACLs, siempre debes asegurarte de permitir los puertos efímeros en la dirección contraria al tráfico iniciado. De lo contrario, la conexión fallará, aunque todo lo demás esté bien configurado.
✔️ Conclusión
Los Security Groups y las Network ACLs forman la base de la seguridad en cualquier arquitectura desplegada dentro de una VPC en AWS. Aunque a primera vista pueden parecer similares, entender sus diferencias es fundamental para diseñar entornos seguros, eficientes y libres de errores de conectividad.
Los Security Groups, al ser stateful, simplifican enormemente la administración del tráfico a nivel de instancia, permitiendo que toda conexión legítima fluya sin necesidad de reglas duplicadas. Son ideales para controlar el acceso directo a recursos específicos, aplicar principios de mínimo privilegio y asegurar servicios críticos como EC2, RDS, Load Balancers, entre otros.
Por otro lado, las NACLs, al ser stateless, proporcionan una capa adicional de seguridad a nivel de subred. Su capacidad de permitir y denegar tráfico explícitamente las convierte en un mecanismo poderoso para implementar políticas más estrictas o filtrar tráfico antes de que alcance los recursos internos. Sin embargo, su naturaleza stateless requiere mayor precisión al configurarlas, ya que cada flujo debe ser permitido en ambos sentidos.
En conjunto, SG y NACL ofrecen un enfoque de defense in depth, donde cada capa de la red contribuye a proteger los sistemas ante accesos no autorizados, errores de configuración o vulnerabilidades inesperadas. Un diseño bien equilibrado entre ambos no solo mejora la seguridad, sino también la estabilidad operativa de la plataforma.
Comprender cómo funcionan, cómo interactúan y cuándo utilizar cada uno es un paso clave para cualquier profesional que esté construyendo soluciones en AWS. Al dominar estos conceptos, podrás crear entornos más robustos, seguros y alineados con las mejores prácticas del mundo Cloud.
Happy learnning on AWS!



Top comments (4)
¡Excelente artículo! Es una guía clara, estructurada y muy necesaria para cualquier persona que esté dando sus primeros pasos en AWS.
Lo que hace que este contenido destaque es:
Es un recurso de gran valor para la comunidad, ideal para evitar errores comunes de configuración y brechas de seguridad en entornos productivos. ¡Sigue compartiendo contenido así de útil!
Excelente Post
Muy claro y se nota que hay mucha experiencia en implementaciones con nubes
Siga así profesor Oscar
Excelente articulo para entender de manera rápida las diferencias entre ambas y como aplicar estas capas de seguridad a nuestra infraestructura en AWS.