LINUX

¿Qué es SYN Flood Attack? Detección y prevención en Linux

El ataque de inundación SYN es una forma de ataque de denegación de servicio en el que un atacante envía una gran cantidad de solicitudes SYN a los servicios de un sistema de destino que utilizan el protocolo TCP. Esto consume los recursos del servidor para que el sistema no responda ni siquiera al tráfico legítimo. Este ataque puede ocurrir en cualquier servicio que use el protocolo TCP pero principalmente en el servicio web. En este tutorial, repasaremos los conceptos básicos de los ataques de inundación SYN y los pasos de mitigación en detalle.

El ataque SYN Flood explota una característica de implementación del Protocolo de control de transmisión (TCP), que se denomina protocolo de enlace de 3 vías.

Los siguientes son los pasos que ocurren en un apretón de manos de 3 vías normal:

1. El cliente solicita una conexión enviando un mensaje SYN (sincronización) al servidor.
2. El servidor reconoce esta solicitud enviando SYN-ACK de vuelta al cliente.
3. El cliente responde con un ACK y se establece la conexión.

TCP

Un ataque de inundación SYN funciona al no responder al servidor con el código ACK esperado. Con estas conexiones semiabiertas, la acumulación de TCP de las máquinas de destino se llenará y, por lo tanto, es posible que se ignoren todas las conexiones nuevas. Esto hará que los usuarios legítimos también sean ignorados.

Este ataque puede tener lugar de dos formas:

1. Ataque directo

En este tipo de ataque, los atacantes envían rápidamente segmentos SYN sin falsificar su dirección IP de origen. Cuando se detecta, este tipo de ataque es muy fácil de defender, porque podemos agregar una simple regla de firewall para bloquear paquetes con la dirección IP de origen del atacante que apagará el ataque.

2. Uso de la suplantación de direcciones IP

Esta es una forma de ataque más compleja que el ataque directo. En este método, la máquina maliciosa enviará inundaciones de solicitudes SYN a la máquina de destino desde direcciones IP falsificadas, lo que hará que el servidor envíe el SYN-ACK a una dirección IP falsificada, que no enviará un ACK porque «sabe» que nunca envió un SYN.

Detectando el ataque de inundación SYN

El síntoma genérico del ataque SYN Flood a un visitante de un sitio web es que un sitio tarda mucho en cargar, o carga algunos elementos de una página pero no otros. Si sospecha de un ataque SYN Flood en un servidor web, puede usar el comando netstat para verificar las solicitudes de conexión del servidor web que están en estado «SYN_RECEIVED».

netstat -tuna | grep :80 | grep SYN_RECV

Si muestra numerosas conexiones con este estado, el servidor podría estar bajo ataque SYN Flood. Si el ataque es directo con una gran cantidad de paquetes SYN_RECV de una sola dirección IP, puede detener este ataque agregando esa dirección IP en el firewall. Si tiene un firewall APF o CSF ​​instalado en su servidor, puede lograrlo ejecutando el siguiente comando:

apf -d IPADDRESS
csf -d IPADDRESS

Defendiendo SYN Flood Attack

• Uso de cookies SYN

Este es el método más eficaz para defenderse del ataque SYN Flood. El uso de cookies SYN permite a un servidor evitar la caída de conexiones cuando la cola SYN se llena. En cambio, el servidor se comporta como si la cola SYN se hubiera ampliado. El servidor devuelve la respuesta SYN + ACK apropiada al cliente pero descarta la entrada de la cola SYN. Si el servidor recibe una respuesta ACK posterior del cliente, puede reconstruir la entrada de la cola SYN utilizando información codificada en el número de secuencia de TCP.

Las cookies SYN se pueden habilitar agregando lo siguiente a /etc/sysctl.conf

net.ipv4.tcp_syncookies = 1

Después de modificar el archivo de configuración sysctl, debe ejecutar el siguiente comando para cargar la configuración sysctl desde el archivo /etc/sysctl.conf

sysctl -p

• Aumentar la cola de trabajos pendientes de SYN

Una técnica de defensa opcional es aumentar el tamaño de la cola de trabajos pendientes de SYS. El tamaño predeterminado es 1024. Esto se puede hacer agregando lo siguiente a /etc/sysctl.conf

net.ipv4.tcp_max_syn_backlog = 2048

• Reducción de reintentos SYN_ACK

Ajustar el parámetro del kernel tcp_synack_retries hace que el kernel cierre antes las conexiones de estado SYN_RECV. El valor predeterminado es 5.

net.ipv4.tcp_synack_retries = 3

• Configuración del tiempo de espera de SYN_RECV

Reducir el valor de tiempo de espera para SYN_RECV ayudará a reducir el ataque de inundación SYN. El valor predeterminado es 60 y podemos reducirlo a 40 o 45. Esto se puede hacer agregando la siguiente línea a sysctl.conf.

net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_recv=45

• Prevención de la falsificación de IP

El siguiente parámetro sysctl ayudará a proteger contra la suplantación de IP que se utiliza para los ataques de inundación SYN.

net.ipv4.conf.all.rp_filter = 1

Muchas empresas de alojamiento brindan protección contra ataques SYN mediante la implementación de firewalls que emplean defensa contra inundaciones SYN, como Netscreen o Appsafe.

Leer también:

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar