SYN cookies

SYN Cookieses una técnica usada para defensa del ataqueinundación SYN.Daniel J. Bernstein, inventor inicial de la técnica,​ define a SYN Cookies como "una particular selección de números de secuencia para servidoresTCP". En particular, el uso de SYN Cookies, permite al servidor, evitar el rechazo de nuevas conexiones cuando la cola SYN se llena. En su lugar, el servidor se comporta como si la cola SYN hubiera sido extendida. El servidor responde el correspondiente paquete SYN+ACK al cliente, pero descartando la entrada SYN en su cola. El servidor entonces recibe el correspondiente ACK desde el cliente, estando en condiciones de reconstruir la entrada SYN en la cola, usando la información codificada en el número de secuencia TCP elegido.
Con el fin de iniciar una conexión TCP, el cliente envía un paquete TCP SYN, al servidor. En respuesta, el servidor responde un paquete TCP SYN+ACK al cliente. Uno de los valores en este paquete, es elnúmero de secuencia, el cual es usado por el protocolo TCP, para reensamblar el flujo de datos. De acuerdo a la especificación TCP, ese primer número de secuencia enviado, puede ser decidido por cada parte.
La técnica SYN Cookie, elige un número de secuencia cuidadosamente construido, sobre la base de las siguientes reglas:
El número de secuencia TCP inicial enSYN Cookie, se calcula como sigue:
(Nota: debido a quemdebe ser codificado usando 3 bits, el servidor está restringido a enviar hasta 8 posibles valores cuandoSYN Cookieses usado.)
Cuando el cliente envía un paquete TCP ACK al servidor, en respuesta al paquete SYN+ACK, el cliente DEBE (acordando la especificación TCP), usarn+1en elnúmero de reconocimiento, dondenes el número de secuencia inicial enviado por el servidor. El servidor substrae 1 del número de reconocimiento para obtener el número enviado al cliente usando SYN Cookie.
El servidor entonces realiza las siguientes operaciones:
A partir de este punto en adelante, la conexión continúa normalmente.
El uso de SYN Cookies, no está en desacuerdo con la especificación de algún protocolo, por lo tanto debe ser compatible con todas las implementaciones de TCP. Hay sin embargo, 3 advertencias que deben ser consideradas cuando se implementa SYN Cookies.
Mientras estas restricciones necesariamente llevarían a una pobre implementación, sus efectos son raramente notados por los clientes. Además, estas restricciones necesitan sólo aplicarse cuando el servidor está bajo ataque, y la conexión podría de otro modo haber sido denegada. En tal situación la pérdida de algunas opciones con el fin de asegurar la conexión, suelen ser un compromiso razonable. La versión 2.6.26 delnúcleo Linux, añade un soporte limitado de opciones de TCP, codificándolas en una estama de tiempo.​
El estándar TCPCT, (tcp cookie transaction) está diseñada para superar estas deficiencias de SYN cookies, y mejorarla en algunos otros aspectos.
Diferente a SYN Cookies, TCPCT es una extensión TCP, y requiere que ambas puntas que integran la conexión, la soporten.​
La técnica fue creada porDaniel J. Bernsteiny Eric Schenk en septiembre de 1996. La primera implementación paraSunOSfue liberada porJeff Weisbergun mes después, y Eric Schenk liberó su implementaciónLinuxen febrero de 1997 (la actual implementación usanet.ipv4.tcp_syncookies).