Para el kernel de Linux 2.6.32, si lo configuro, net.ipv4.tcp_syncookies = 1
¿se usará siempre o solo durante un ataque de inundación SYN?
Encontré 2 fuentes que dicen lo contrario.
1:
"Sin embargo, hay dos advertencias que entran en vigor cuando se utilizan cookies SYN. En primer lugar, el servidor está limitado a sólo 8 valores MSS únicos, ya que eso es todo lo que se puede codificar en 3 bits. En segundo lugar, el servidor debe rechazar todos Opciones de TCP (como ventanas grandes o marcas de tiempo), porque el servidor descarta la entrada de la cola SYN donde de otro modo se almacenaría esa información [1].
Si bien estas restricciones necesariamente conducen a una experiencia subóptima, los clientes rara vez notan su efecto porque solo se aplican cuando están bajo ataque. En tal situación, la pérdida de las opciones TCP para salvar la conexión suele considerarse un compromiso razonable."
2:
"La desventaja es que no todos los datos TCP pueden caber en el campo Número de secuencia de 32 bits, por lo que algunas opciones de TCP necesarias para un alto rendimiento pueden estar deshabilitadas". Esto significa que opciones como los ACK selectivos y el escalado de ventana TCP no funcionarán si activa las cookies SYN, incluso si su servidor no está bajo ataque actualmente".
Respuesta1
la segunda fuente
"Esto significa que opciones como ACK selectivos y escalado de ventanas TCP no funcionarán si activa las cookies SYN, incluso si su servidor no está actualmente bajo ataque"
es simplemente una tontería, hasta que
"TCP: request_sock_TCP: Posible inundación SYN en el puerto 53. Envío de cookies. Verifique los contadores SNMP"
sucede que no hay nada deshabilitado.
Esto se puede demostrar fácilmente comparando su rendimiento con iperf3 y habilitando/deshabilitando "net.ipv4.tcp_sack" y "net.ipv4.tcp_window_scaling" mientras mantiene "net.ipv4.tcp_syncookies = 1" habilitado.
¿Por qué lees fuentes aleatorias en lugar de las oficiales? https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt
tcp_syncookies - BOOLEAN
Only valid when the kernel was compiled with CONFIG_SYN_COOKIES
Send out syncookies when the syn backlog queue of a socket
overflows. This is to prevent against the common 'SYN flood attack'
Default: 1
Note, that syncookies is fallback facility.
It MUST NOT be used to help highly loaded servers to stand
against legal connection rate. If you see SYN flood warnings
in your logs, but investigation shows that they occur
because of overload with legal connections, you should tune
another parameters until this warning disappear.
See: tcp_max_syn_backlog, tcp_synack_retries, tcp_abort_on_overflow.
syncookies seriously violate TCP protocol, do not allow
to use TCP extensions, can result in serious degradation
of some services (f.e. SMTP relaying), visible not by you,
but your clients and relays, contacting you. While you see
SYN flood warnings in logs not being really flooded, your server
is seriously misconfigured.