Saltar al contenido

Temas

Modelo TCP/IP y el handshake

Las capas de red, la encapsulación, las direcciones y puertos, y el handshake TCP, con lo que cada nivel implica para la seguridad en AWS.

FundamentosEn progreso 6 min de lectura1 oct 2026#tcp-ip#osi#encapsulacion#handshake#puertos#redes

Cuando lees un log de red, una regla de un security group o una alerta de GuardDuty, estás mirando distintas capas del mismo viaje: el que hace un mensaje desde una aplicación hasta el cable y vuelta. Si entiendes ese viaje —qué añade cada capa y en qué orden— esos logs dejan de ser ruido. El modelo TCP/IPModelo TCP/IPModelo de red en capas (enlace, Internet, transporte, aplicación) sobre el que funciona Internet; cada capa añade su cabecera al encapsular los datos. es el mapa de ese viaje, y casi toda la seguridad de red consiste en decidir qué dejas pasar en cada etapa.

Dos modelos, el mismo viaje#

Hay dos formas de nombrar las capas. El modelo OSI tiene siete y se usa como vocabulario de referencia: cuando alguien dice “esto es un ataque de capa 7” o “un balanceador de capa 4”, habla de OSI. El modelo TCP/IP tiene cuatro y es el que realmente implementa Internet. Se corresponden así:

TCP/IP OSI Ejemplos Unidad de datos
Aplicación 5-7 (sesión, presentación, aplicación) HTTP, DNS, TLS mensaje / datos
Transporte 4 TCP, UDP segmento (TCP) / datagrama (UDP)
Internet 3 IP, ICMP paquete
Enlace 1-2 (físico, enlace) Ethernet, Wi-Fi, ARP trama

No necesitas memorizar las siete capas de OSI, pero sí dos números: L3 (Internet, donde mandan las direcciones IP) y L4 (transporte, donde mandan los puertos). Con esos dos entiendes la mayoría de los controles de red de AWS.

Encapsulación: cada capa envuelve a la de arriba#

Al enviar, cada capa toma los datos de la capa superior y les añade su propia cabecera —como meter una carta en sobres cada vez más grandes—. Al recibir, cada capa abre su sobre y pasa el contenido hacia arriba. Esto es la encapsulación y la desencapsulación, y es literalmente lo que ves en Wireshark cuando despliegas un paquete.

Encapsulación TCP/IP: cómo se envuelve un mensaje
ClienteemisorServidorreceptorL7 · AplicaciónL4 · TransporteL3 · InternetL2 · EnlaceL7 · AplicaciónL4 · TransporteL3 · InternetL2 · EnlaceEthIPTCPHTTP · datosFCSdatossegmento TCPpaquete IPtrama EthernetSYNSYN-ACKACK

Paso 1 de 7Dos pilas

Cliente y servidor hablan por las mismas cuatro capas. Lo que una capa escribe en el emisor, solo lo lee la misma capa en el receptor.

La clave de seguridad es que cada capa solo entiende su propia cabecera. Un security group lee puertos e IPs (L3/L4) pero no sabe nada del contenido HTTP; un WAF lee la petición HTTP (L7) pero no reescribe rutas. Por eso necesitas controles en varias capas: ninguno lo ve todo.

Direcciones y puertos: cómo se dirige el tráfico#

Dos piezas dirigen cada paquete:

  • La dirección IP (L3) identifica una interfaz de red en Internet. IPv4 son 32 bits (10.0.3.15); IPv6 son 128 bits. Las IP privadas (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) no son enrutables en Internet: por eso las subredes privadas salen por NAT.
  • El puertoPuertoNúmero de 16 bits que identifica un servicio o proceso dentro de una máquina; junto con la IP forma el socket que dirige el tráfico de transporte (TCP/UDP). (L4) identifica el proceso dentro de la máquina. Los well-known (0-1023) son servicios estándar: 443 (HTTPS), 53 (DNS), 22 (SSH).

La combinación IP:puerto es un socket, y la 5-tupla (IP y puerto de origen, IP y puerto de destino, protocolo) identifica de forma única una conexión. Esa 5-tupla es exactamente lo que registran los VPC Flow Logs y lo que evalúa un security group.

El handshake TCP de 3 vías#

TCP es fiable y orientado a conexión: antes de enviar datos, las dos partes se sincronizan con tres mensajes.

  1. SYN: el cliente envía un segmento con el flag SYN y un número de secuencia inicial. “Quiero hablar, empiezo por x”.
  2. SYN-ACK: el servidor responde con SYN + ACK, confirma el del cliente y propone el suyo. “De acuerdo, confirmo x+1, yo empiezo por y”.
  3. ACK: el cliente confirma con ACK. “Confirmo y+1”. La conexión está establecida (ESTABLISHED).

El cierre es simétrico y usa FIN/ACK en ambos sentidos (o un RST abrupto para cortar). Conocer estos flags importa para leer capturas y Flow Logs: en los Flow Logs el campo tcp-flags codifica SYN como 2 y SYN-ACK como 18, y un aluvión de SYN sin completar el handshake es la firma de un escaneo o de un SYN flood.

UDP: rápido y sin ceremonias#

No todo necesita fiabilidad. UDP no tiene handshake ni confirmaciones: envías datagramas y esperas lo mejor. Se usa donde la latencia importa más que perder algún paquete: DNS (consultas pequeñas), QUIC/HTTP3, streaming, telemetría. La contrapartida de seguridad es doble: al no haber handshake, es trivial falsificar la IP de origen (spoofing), lo que hace a UDP el protagonista de los ataques de amplificación (DNS, NTP); y como no hay estado de conexión, filtrarlo requiere reglas distintas.

Por qué esto decide tu arquitectura en AWS#

Aquí es donde las capas se vuelven dinero y riesgo. Dos controles de red de AWS parecen lo mismo y no lo son:

Vulnerable

Seguro

Security group — con estado (L4)
# Se adjunta a la ENI (instancia, tarea, endpoint).
# Reglas solo de ALLOW. Es STATEFUL:
# si permites la conexión de salida, la respuesta
# vuelve automáticamente, sin regla de entrada.
Entrada: 443/tcp desde el ALB
Salida: todo permitido
# La respuesta a una petición entrante al 443
# se permite aunque "salida" no la mencione.
NACL — sin estado (L4)
# Se adjunta a la SUBRED. Reglas ALLOW y DENY,
# evaluadas por orden de número. Es STATELESS:
# debes permitir EXPLÍCITAMENTE ambos sentidos,
# incluidos los puertos efímeros de respuesta.
Entrada: 100 ALLOW 443/tcp desde 0.0.0.0/0
Salida: 100 ALLOW 1024-65535/tcp hacia 0.0.0.0/0
# Si olvidas los puertos efímeros de salida,
# la conexión entra pero la respuesta no sale.

La diferencia stateful vs stateless es la causa número uno de reglas de red rotas. El security group recuerda la conexión (guarda estado de la 5-tupla) y deja volver la respuesta; la NACL no recuerda nada y evalúa cada paquete de forma aislada, así que tienes que abrir el rango de puertos efímeros (normalmente 1024-65535) para el tráfico de vuelta.

Tu turno

Dibuja la 5-tupla de una conexión de tu stack

Elige una conexión real de un sistema que gestiones (cliente → balanceador, servicio → base de datos, función → API externa) y complétala. Si no sabes algún puerto, búscalo: forma parte del ejercicio.

  • Rellena origen y destino: IP_origen:puerto_origen → IP_destino:puerto_destino sobre TCP o UDP.
  • ¿Qué capa controla cada salto? ¿Hay un control L4 (security group/NACL) y uno L7 (WAF/proxy)?
  • Si usas NACL además de security groups, ¿están abiertos los puertos efímeros de salida para las respuestas?
conexion.md
Conexión: ...
5-tupla: 10.0.1.20:50314 → 10.0.3.15:443 / TCP
Control L4: security group sg-api (entrada 443 desde sg-alb)
Control L7: WAF en el ALB

Reto

Un security group permite la salida al puerto 443 pero no tiene ninguna regla de entrada para ese puerto. Tu instancia hace una petición HTTPS a una API externa. ¿Llega la respuesta?

▸Mostrar solución

Sí. El security group es stateful: al permitir la conexión saliente, recuerda la 5-tupla y deja volver automáticamente la respuesta, aunque no exista regla de entrada que la mencione. Con una NACL (sin estado) tendrías que haber permitido explícitamente el rango de puertos efímeros de entrada.

Reto

¿Por qué es más fácil falsificar la IP de origen en UDP que en TCP?

▸Mostrar solución

Porque TCP exige completar el handshake de 3 vías: para mantener una conexión necesitas recibir el SYN-ACK del servidor, y ese llega a la IP que pusiste como origen. Si la falsificaste, no lo recibes y no puedes continuar. UDP no tiene handshake ni estado, así que un atacante pone cualquier IP de origen y el servidor responde a esa IP: la base de los ataques de amplificación.

En resumen#

  • TCP/IP tiene cuatro capas; quédate con L3 (IP, direcciones) y L4 (TCP/UDP, puertos): explican casi todos los controles de red.
  • La encapsulación envuelve los datos con una cabecera por capa; cada control solo ve su capa, por eso defiendes en varias.
  • La 5-tupla identifica una conexión y es lo que registran los Flow Logs y evalúan los security groups.
  • El handshake de 3 vías (SYN, SYN-ACK, ACK) abre la conexión TCP; sus flags delatan escaneos y floods. UDP no tiene handshake: rápido, pero fácil de falsificar.
  • En AWS, los security groups son stateful a nivel L4 (la respuesta vuelve sola) y las NACL son stateless (abre ambos sentidos, incluidos los puertos efímeros).

Referencias#

Notas relacionadas

ESC
↑↓ para navegar↵ para abriresc para cerrar