Uncategorized

Habilitación de SYNPROXY para mitigar ataques SYN FLOOD

SYNPROXY es un modulo de netfilter en el kernel de Linux. Está optimizado para manejar varios millones de paquetes por segundo utilizando todas las CPU disponibles sin bloqueos entre conexiones.

El efecto de esto es que los servidores no verían ningún cambio durante un ataque. El firewall detendría el ataque y solamente permitiría el paso a las conexiones TCP válidas.

Como funciona

Con SYNPROXY habilitado, los clientes se conectan en forma transparente a SYNPROXY. El 3 way handshake debe ocurrir primero entre el cliente y SYNPROXY.

  1. El cliente envia un TCP SYN al servidor
  2. En el firewall, cuando llega el paquete se marca como UNTRACKED
  3. El paquete UNTRACKED SYN se entrega a SYNPROXY
  4. SYNPROXY toma el paquete y responde como SYN/ACK (UNTRACKED)
  5. El cliente responde con TCP/ACK (marcado como INVALID o UNTRACKED en iptables), el que es entregado a SYNPROXY

Una vez que el cliente se ha conectado a SYNPROXY, SYNPROXY inicia el 3 way handshake con el servidor real, modificando el paquete inicial SYN de manera que el servidor vería la direccion IP del cliente que se quiere conectar:

  1. SYNPROXY envia un paquete TCP SYN al servidor real. Esta es una nueva conexion en iptables y ocurre en la cadena OUTPUT. La direccion IP de origen del paquete es la IP del cliente.
  2. El servidor real responde SYN/ACK al cliente
  3. SINPROXY recibe el paquete SYN/ACK y responde nuevamente al servidor con un paquete ACK, quedando la conexion marcada como ESTABLISHED
  4. Una vez establecida la conexión, SYNPROXY deja el tráfico en manos del cleinte y el el servidor real.

Deja una respuesta

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