Antes de hablar sobre las cookies SYN y cómo se utilizan para prevenir el ataque SYN Flood, primero echemos un vistazo a cómo se establecieron las conexiones TCP hasta mediados de la década de 1990.
Cómo se establece la conexión TCP:
se crea un TCB (Bloque de control de transmisión) cuando una entidad TCP abre una conexión TCP, un TCB contiene el estado completo de la conexión. El estado de la conexión contiene:
- Número de secuencia local.
- Número de secuencia enviado por el cliente remoto.
Hasta mediados de la década de 1990, para evitar el desbordamiento de la memoria de la entidad con TCB, había un límite en la cantidad de conexiones TCP ‘medio abiertas’ (conexiones TCP en el estado SYN RCVD), que generalmente era de 100. Por lo tanto, un servidor podría solo tiene 100 conexiones TCP ‘medio abiertas’. La entidad TCP dejaría de aceptar nuevos segmentos SYN cuando se alcanzara el límite.
Una implementación TCP debe mantener un bloque de control de transmisión (TCB) para cada conexión TCP establecida. Un TCB debe contener toda la información requerida para enviar y recibir segmentos. Son los siguientes:
- Dirección IP local.
- Dirección IP remota.
- Número de puerto TCP local.
- Número de puerto TCP remoto.
- Estado actual del TCP FSM.
- Tamaño máximo de segmento (MSS).
Los siguientes diagramas muestran el proceso de conexión TCP:
PASO 1: El cliente envía una solicitud de conexión SYN al servidor
PASO 2: El servidor envía una solicitud de conexión SYN y un reconocimiento al cliente
PASO 3: El cliente envía un reconocimiento al servidor
Ataque de inundación SYN:
un ataque de inundación SYN es un tipo de ataque de denegación de servicio durante el cual un atacante inicia rápidamente una conexión TCP con una solicitud SYN a un servidor y no responde a SYN+ACK del servidor. El servidor tiene que gastar recursos (creando TCB para las requests de conexión) esperando conexiones semiabiertas ya que había un límite en el número de conexiones TCP ‘medio abiertas’. El servidor ya no aceptará nuevas conexiones. Esto hará que el sistema no responda al tráfico legítimo. Los siguientes pasos muestran cómo se llevó a cabo.
- El atacante enviaría cientos de segmentos SYN cada segundo a un servidor.
- El atacante no respondería a ningún segmento SYN+ACK recibido.
- El atacante enviaría estos segmentos SYN con una dirección IP diferente de su propia dirección IP para evitar ser atrapado.
- Una vez que un servidor ingresaba al estado SYN RCVD, permanecía en ese estado durante varios segundos, esperando un ACK y sin aceptar ninguna conexión nueva, posiblemente genuina, por lo que no estaba disponible.
Aquí hay algunos diagramas que representan un ataque de inundación SYN:
PASO 1: El cliente envía una solicitud de conexión SYN al servidor
PASO 2: El servidor envía una solicitud de conexión SYN y un reconocimiento al cliente
PASO 3: El cliente no responde con un ACK para completar el protocolo de enlace de tres vías
PASO 4: el atacante crea otras 100 conexiones semiabiertas desde varias direcciones IP
PASO 5: el búfer TCP estará lleno al final del servidor y el servidor no podrá aceptar nuevas conexiones
Los ataques de inundación SYN se pueden realizar de tres maneras diferentes:
- Ataque directo:
un ataque de inundación SYN en el que la dirección IP del atacante no se falsifica se denomina ataque directo. En un ataque directo, el atacante utiliza un único dispositivo de origen con una dirección IP real, por lo tanto, el atacante puede rastrearse fácilmente y las requests de la dirección IP del sistema malicioso pueden bloquearse para evitar el ataque. - Ataque falsificado:
un ataque de inundación SYN en el que la dirección IP del atacante se falsifica en cada paquete SYN se denomina ataque falsificado. Aunque la dirección IP está suplantada en cada paquete, se puede rastrear hasta su origen con la ayuda de los proveedores de servicios de Internet (ISP). - Ataque distribuido:
un ataque de inundación SYN creado mediante botnet se denomina ataque distribuido. Las posibilidades de rastrear estos ataques hasta su origen son extremadamente bajas. El atacante también puede falsificar la dirección IP de cada dispositivo distribuido para que sea más difícil de rastrear.
Prevención
de ataques de inundación SYN: los ataques de inundación SYN se pueden prevenir de varias maneras diferentes. Algunos enfoques incluyen:
- Aumento de la cola de trabajo pendiente:
existe un límite en la cantidad de conexiones medio abiertas en cada sistema operativo en un dispositivo de destino. Una forma de manejar un gran volumen de paquetes SYN es aumentar la cantidad máxima de conexiones semiabiertas que permitirá el sistema operativo. Para aumentar el retraso máximo, el sistema debe reservar recursos de memoria adicionales que puedan manejar todas las requests nuevas. Si el sistema no tiene suficiente memoria para manejar el aumento del tamaño de la cola de trabajos pendientes, el rendimiento del sistema se verá afectado, pero será mejor que la denegación de servicio. - Reciclaje de la conexión TCP
semiabierta más antigua: en esta estrategia, la conexión TCP semiabierta más antigua se sobrescribe una vez que se completa el trabajo pendiente. Esta estrategia funciona solo cuando las conexiones se pueden establecer por completo en menos tiempo del que se puede llenar con paquetes SYN maliciosos. Falla cuando aumenta el volumen de ataque o si el tamaño de la acumulación es demasiado pequeño. - Cookies
SYN: las cookies SYN son una técnica de mitigación de ataques de falsificación de IP mediante la cual el servidor responde a las requests TCP SYN con SYN-ACK elaborados, sin crear un nuevo TCB para la conexión TCP. Se crea un TCB para la conexión TCP respectiva solo cuando el cliente responde a esta respuesta diseñada. Esta técnica se utiliza para evitar que los recursos del servidor se llenen bajo inundaciones TCP SYN.
Cómo se usan las cookies SYN para prevenir el ataque de inundación SYN:
la forma en que las cookies SYN resuelven este problema (ataque de inundación SYN) es usar una función que usa alguna información del paquete SYN del cliente y alguna información del lado del servidor para calcular una secuencia inicial aleatoria número. Supongamos que este número es y-1, y-1 se envía al cliente en un mensaje SYN + ACK. Si se recibe un paquete ACK con un número de secuencia y, con la ayuda de algunos campos de encabezado de paquete y alguna información del lado del servidor, una función inversa puede verificar que el número de reconocimiento es válido. Si es válido, se crea un TCB y se establece una conexión. Si no es válido, se rechaza la conexión. La ventaja de las cookies SYN es que el servidor no tiene que crear y almacenar un TCB al recibir el segmento SYN.
Publicación traducida automáticamente
Artículo escrito por kavikumaran y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA